fix(apple): merge vendored librnnoise.a into xcframework fat static lib
Both VoiceCatMac and VoiceCatiOS failed to link with 'Undefined symbols for architecture arm64: _rnnoise_create/_rnnoise_destroy/_rnnoise_process_frame'. Root cause: build-xcframework.sh merged vcpkg deps into the fat static lib but NOT the locally-built vendored librnnoise.a (a CMake target from third_party/rnnoise/ linked privately into voicecat via VOICECAT_HAS_NS — not a vcpkg dep). The xcframework had been rebuilt after the RNNoise commit but still omitted the symbols, so every slice's libvoicecat-fat.a referenced _rnnoise_* with no defining object. The iOS slices were also stale (pre-rnnoise) and absent from the xcframework entirely. Fix: build-xcframework.sh now also collects .a files from build/<preset>/lib/ (excluding libvoicecat*) so vendored CMake-target static libs like librnnoise.a get merged in. Future-proof: any new vendored static-lib target landing in build/<preset>/lib/ is picked up automatically. README 'Fat static library' section updated. Verify: rebuilt VoiceCatCore.xcframework --all → all 3 slices (macos-arm64, ios-arm64, ios-arm64-simulator) now carry the 10 _rnnoise_* symbols; fat lib ~30 MB → ~33 MB. xcodebuild Debug BUILD SUCCEEDED for VoiceCatMac, VoiceCatiOS (iphonesimulator arm64), and VoiceCatiOS (iphoneos arm64). No core/ABI/proto changes — xcframework artifact + build script only.
This commit is contained in:
21
PROGRESS.md
21
PROGRESS.md
@@ -10,6 +10,27 @@ up instantly. Newest status at the top.
|
||||
|
||||
## ▶ Where we left off / next action
|
||||
|
||||
- **Done (2026-06-23):** **Fixed Apple client link failure (stale xcframework missing
|
||||
RNNoise).** Both `VoiceCatMac` and `VoiceCatiOS` failed to link with `Undefined symbols for
|
||||
architecture arm64: _rnnoise_create / _rnnoise_destroy / _rnnoise_process_frame`. Root
|
||||
cause: `clients/apple/scripts/build-xcframework.sh` merged vcpkg deps into the fat static
|
||||
lib but NOT the locally-built vendored `librnnoise.a` (a CMake target from
|
||||
`third_party/rnnoise/`, linked privately into `voicecat` via `VOICECAT_HAS_NS` — not a
|
||||
vcpkg dep). The xcframework had been rebuilt at 14:17 after the RNNoise commit but still
|
||||
omitted the symbols, so every slice's `libvoicecat-fat.a` referenced `_rnnoise_*` with no
|
||||
defining object. The iOS slices were also stale (pre-rnnoise) and absent from the
|
||||
xcframework entirely.
|
||||
- **Fix:** `build-xcframework.sh` now collects `.a` files from `build/<preset>/lib/`
|
||||
(excluding `libvoicecat*`) in addition to `vcpkg_installed/<triplet>/lib/`, so vendored
|
||||
CMake-target static libs like `librnnoise.a` are merged into the fat lib. Future-proof:
|
||||
any new vendored static-lib target landing in `build/<preset>/lib/` is picked up
|
||||
automatically. README "Fat static library" section updated.
|
||||
- **Verify:** rebuilt `VoiceCatCore.xcframework --all` → all 3 slices (macos-arm64,
|
||||
ios-arm64, ios-arm64-simulator) now carry 10 `_rnnoise_*` symbols each; fat lib
|
||||
~30 MB → ~33 MB. `xcodebuild` Debug **BUILD SUCCEEDED** for `VoiceCatMac`,
|
||||
`VoiceCatiOS` (iphonesimulator arm64), and `VoiceCatiOS` (iphoneos arm64,
|
||||
`CODE_SIGNING_ALLOWED=NO`). No core/ABI/proto changes — xcframework artifact only.
|
||||
|
||||
- **Done (2026-06-23):** **Remote-stream noise suppression — real backend (RNNoise).** The
|
||||
two-sided NR plumbing (`RemoteStream::recv_ns` + `vc_set_remote_stream(... noise_reduction)`)
|
||||
was wired but **inert** — `ApmProcessor::create()` returned a no-op passthrough, because the
|
||||
|
||||
Reference in New Issue
Block a user