Open
Conversation
- Add iOS build configuration in SConstruct (static library, LIBPATH) - Add ios-release target and iOS lib copy in Makefile - Add iOS entries to gdextension file - Add iOS build step to GitHub Actions macOS job
iOS uses static libraries (.a) unlike other platforms' shared libraries, so godot-cpp, pffft, and libmysofa must be provided separately at final link time. Add ios-deps Makefile target to build pffft and libmysofa from source, copy godot-cpp after scons build, and declare all dependencies in the gdextension file.
Keep the ios/ directory in the repository so CI copy commands work without needing mkdir, consistent with android/ directories.
Add pffft and libmysofa as git submodules under src/lib/, consistent with how godot-cpp and steamaudio are managed. Update Makefile ios-deps to build from submodule paths instead of cloning into a temp directory.
iOS does not support Embree, so fall back to the default scene type, consistent with the existing macOS ARM64 and Android fallbacks.
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.
Follow up #87
Summary
.a) instead of shared libraryios-depstarget to build pffft and libmysofa for iOS, andios-releasetarget with godot-cpp copysrc/lib/Why static libraries need extra dependencies
iOS requires static libraries (
.a), unlike other platforms which use shared libraries (.dylib/.so/.dll).Shared libraries resolve all symbols at build time, but static libraries defer symbol resolution to the final Xcode link stage.
Therefore godot-cpp, pffft, and libmysofa must be explicitly provided as dependencies in the gdextension file.
New submodules
src/lib/pffft— FFT library required by Steam Audiosrc/lib/libmysofa— SOFA (HRTF) reader library required by Steam AudioThese are only needed for the iOS static build. On other platforms, they are already linked into the shared
libphononlibrary.Verified