feat(xcframework): add Mac Catalyst + x86_64 simulator slices - #89
Merged
Merged
Conversation
FluidAudio consumers building for Mac Catalyst fail to link because the xcframework only ships ios-arm64, ios-arm64-simulator and macos-arm64_x86_64; xcodebuild refuses to satisfy a Catalyst build from the native macOS slice (reported by an Action Phrase developer against FluidAudio v0.15.x, which links NemoTextProcessing unconditionally on toolchains < 6.2). Build the two tier-2 Rust targets aarch64-apple-ios-macabi and x86_64-apple-ios-macabi, lipo them into one universal archive and add it as a fourth slice (ios-arm64_x86_64-maccatalyst). While here, add x86_64-apple-ios so the simulator slice is universal too (Intel Macs and Rosetta simulators were unsupported). Verified locally: the Catalyst archives carry LC_BUILD_VERSION platform 6 (arm64 minos 14.0, x86_64 minos 13.1), export the nemo_* FFI, and a C program compiled with -target arm64-apple-ios17.0-macabi links against the universal archive and returns correct ITN/TN output. xcodebuild -create-xcframework itself runs on CI (macos-latest); the workflow's pull_request path filter covers this script.
Alex-Wengg
added a commit
to FluidInference/FluidAudio
that referenced
this pull request
Sep 21, 2026
Mac Catalyst apps cannot link FluidAudio 0.15.6–0.15.8: the text-processing-rs v0.3.0 xcframework has no Catalyst slice (reported by an Action Phrase developer; Catalyst worked before the binary target, see #279). - Bump `NemoTextProcessing` to [text-processing-rs v0.3.1](https://github.com/FluidInference/text-processing-rs/releases/tag/v0.3.1), which adds `ios-arm64_x86_64-maccatalyst` and makes the simulator slice universal (FluidInference/text-processing-rs#89). - Both `Package.swift` and `Package@swift-6.2.swift` updated in lockstep; checksum verified against the release zip. - PostProcessing.md lists the shipped slices and the affected versions. Also picks up v0.3.1's namespaced headers (#87), `normalize_sentence_lang` (#84) and English spoken-fraction ITN (#85). No Swift source changes.
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.
FluidAudio consumers building for Mac Catalyst cannot link: the xcframework only ships
ios-arm64,ios-arm64-simulatorandmacos-arm64_x86_64, and xcodebuild will not satisfy a Catalyst build from the native macOS slice (reported by an Action Phrase developer against FluidAudio 0.15.x).aarch64-apple-ios-macabi+x86_64-apple-ios-macabi, lipo into one universal archive, add as a fourth slice (ios-arm64_x86_64-maccatalyst).x86_64-apple-iosso the simulator slice is universal (arm64 + x86_64).Verified locally that the Catalyst archives carry
LC_BUILD_VERSIONplatform 6, export thenemo_*FFI, and a-target arm64-apple-ios17.0-macabiC program links and returns correct ITN/TN output.xcodebuild -create-xcframeworkruns here in CI (path filter covers the script); check the artifact'sInfo.plistfor the maccatalyst slice.Follow-up: tag v0.3.1, then bump URL + checksum in FluidAudio's
Package.swiftandPackage@swift-6.2.swift.