From cc8ea0f57476e9aee9642e7fc892684e5b683a44 Mon Sep 17 00:00:00 2001 From: lizzie Date: Mon, 23 Feb 2026 04:31:43 +0000 Subject: [PATCH] fix1 --- .ci/ios/build.sh | 1 - CMakeLists.txt | 2 +- docs/Caveats.md | 11 +++++++++++ externals/cmake-modules/DetectPlatform.cmake | 6 ++++++ externals/ffmpeg/CMakeLists.txt | 7 ++++--- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/.ci/ios/build.sh b/.ci/ios/build.sh index 61bd45f593..808fe05976 100755 --- a/.ci/ios/build.sh +++ b/.ci/ios/build.sh @@ -26,7 +26,6 @@ cmake -G Xcode -B build \ -DYUZU_CMD=OFF \ -DUSE_DISCORD_PRESENCE=OFF \ -DYUZU_USE_EXTERNAL_FFMPEG=ON \ - -DYUZU_USE_CPM=ON \ -DYUZU_USE_EXTERNAL_SDL2=ON \ -DCPMUTIL_FORCE_BUNDLED=ON \ -DCMAKE_BUILD_TYPE=Release diff --git a/CMakeLists.txt b/CMakeLists.txt index ab5a396c28..689fbbad0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -308,7 +308,7 @@ if (YUZU_ROOM) add_compile_definitions(YUZU_ROOM) endif() -if (UNIX AND NOT (LINUX OR WIN32)) +if ((UNIX OR IOS) AND NOT (LINUX OR WIN32)) if(CXX_APPLE OR CXX_CLANG) # libc++ has stop_token and jthread as experimental set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexperimental-library") diff --git a/docs/Caveats.md b/docs/Caveats.md index b86edf4d75..351dc40f44 100644 --- a/docs/Caveats.md +++ b/docs/Caveats.md @@ -6,6 +6,7 @@ - [macOS](#macos) - [OpenIndiana](#openindiana) - [OmniOS](#omnios) +- [iOS](#ios) - [HaikuOS](#haikuos) - [OpenBSD](#openbsd) - [FreeBSD](#freebsd) @@ -90,6 +91,16 @@ If it wasn't obvious already, you require a X11 server to properly run the emula For Solaris based OSes, `${CMAKE_SYSTEM_NAME}` isn't properly set on CMake (it's set to i686 on AMD64), you may find issues when building OpenSSL from `openssl-cmake`. +## iOS + +iOS has a dedicated build script, we **highly** recommend using that instead of doing anything else, we don't support any other configuration than the one present in said build script. + +To build, it's simply as easy as doing +```sh +chmod +x .ci/ios/build.sh +.ci/ios/build.sh +``` + ## HaikuOS It's recommended to do a `pkgman full-sync` before installing. See [HaikuOS: Installing applications](https://www.haiku-os.org/guides/daily-tasks/install-applications/). Sometimes the process may be interrupted by an error like "Interrupted syscall". Simply firing the command again fixes the issue. By default `g++` is included on the default installation. diff --git a/externals/cmake-modules/DetectPlatform.cmake b/externals/cmake-modules/DetectPlatform.cmake index 0f7cdfcf46..437057d3dd 100644 --- a/externals/cmake-modules/DetectPlatform.cmake +++ b/externals/cmake-modules/DetectPlatform.cmake @@ -54,6 +54,12 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") set(CXX_APPLE ON) endif() +# This fixes some quirks with xcrun or weird iOS toolchain cmake files +if (IOS) + unser(CXX_CLANG) + set(CXX_APPLE ON) +endif() + # https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11112 # This works totally fine on MinGW64, but not CLANG{,ARM}64 if(MINGW AND CXX_CLANG) diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt index b5c383498d..8bd3f65bc7 100644 --- a/externals/ffmpeg/CMakeLists.txt +++ b/externals/ffmpeg/CMakeLists.txt @@ -31,15 +31,16 @@ if (NOT YUZU_USE_BUNDLED_FFMPEG) set(FFmpeg_IS_CROSS_COMPILING TRUE) elseif(IOS) execute_process(COMMAND xcrun --sdk iphoneos --show-sdk-path OUTPUT_VARIABLE SYSROOT) + # Lovely extra newline apple adds that **we** must remove... thank you apple! + string(STRIP "${SYSROOT}" SYSROOT) set(FFmpeg_CC xcrun --sdk iphoneos clang -arch arm64) set(FFmpeg_CXX xcrun --sdk iphoneos clang++ -arch arm64) list(APPEND FFmpeg_CROSS_COMPILE_FLAGS --arch=arm64 --enable-cross-compile - --sysroot=${SYSROOT} - --target-os=darwin + --sysroot="${SYSROOT}" --extra-ldflags="-miphoneos-version-min=16.0" - --install-name-dir="@rpath" + --install-name-dir='@rpath' --disable-audiotoolbox ) set(FFmpeg_IS_CROSS_COMPILING TRUE)