Skip to content

Add iOS support with build scripts, toolchain, and assets#302

Open
JoshBashed wants to merge 10 commits intovanilla-wiiu:masterfrom
JoshBashed:feat/ios
Open

Add iOS support with build scripts, toolchain, and assets#302
JoshBashed wants to merge 10 commits intovanilla-wiiu:masterfrom
JoshBashed:feat/ios

Conversation

@JoshBashed
Copy link

@JoshBashed JoshBashed commented Jan 1, 2026

Add iOS support for Vanilla

closes #158

This PR adds iOS support for Vanilla.

Code Modifications

  1. gui/main.c

    • Use SDL's built-in main instead of a custom entry point. SDL provides iOS-specific startup behavior that we rely on.
  2. gui/platform.c

    • On iOS, use os_log because stdout and stderr are not exposed in a meaningful way.
    • Wrap logging with vsnprintf to avoid using os_log directly. os_log requires privacy annotations and does not fully support standard printf format specifiers.

Build Changes

  1. ios/toolchain.cmake

    • Add an iOS toolchain.
  2. gui/CMakeLists.txt

    • Configure FFmpeg to build correctly on iOS and on iOS simulators.
    • Use the bundled iOS version of libxml2.
    • Create an iOS bundle with an Info.plist that supports both iOS and iPadOS.
    • Add a launch screen storyboard as required for App Store review.
    • Compile an Assets.car with the Liquid Glass app icon and merge the partial Info.plist into the final Info.plist.
    • Link the necessary Apple frameworks.
    • Copy assets into the correct layout for iOS.
  3. CMakeLists.txt

    • Detect iOS and use vendored as the default on that platform.
  4. .gitignore

    • Add macOS-specific ignores.
  5. .github/workflows/build.yml

    • Add a macos-latest job to build iOS, since iOS builds require macOS and cannot run in Docker.
    • Use the ios/build.sh script.

Added Files

  1. ios/README.md

    • Overview of building for iOS.
  2. ios/LaunchScreen.storyboard

    • Simple launch screen shown while the app loads.
  3. ios/Info.plist

    • Required metadata for iOS, including version, capabilities, and permissions.
  4. ios/build.sh

    • Script for faster iOS builds using Ninja. It is also used in CI without being tied specifically to GitHub Actions.
  5. ios/AppIcon.icon

    • Liquid Glass app icon.

@JoshBashed JoshBashed force-pushed the feat/ios branch 2 times, most recently from d4a4768 to 13281e8 Compare January 7, 2026 08:12
@JoshBashed
Copy link
Author

JoshBashed commented Jan 12, 2026

Hey, can the workflow be approved for this?

@JoshBashed JoshBashed force-pushed the feat/ios branch 2 times, most recently from 75f61ee to 258cdbb Compare January 13, 2026 00:43
@JoshBashed
Copy link
Author

The commit has been rebased.

@JoshBashed
Copy link
Author

Works!

@JoshBashed
Copy link
Author

output.mp4

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.

iOS Support

1 participant