mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-15 07:20:31 +02:00
Sideload builds used to dlopen a bundled libMoltenVK.dylib, which was only worth having while they could still fall back to OpenGL. Now both variants link the static MoltenVK from ios/MoltenVK and call Vulkan directly. PPSSPP_VK_STATIC replaces the IOS_APP_STORE checks in the Vulkan loader (the iOS libretro core still loads at runtime). The static MoltenVK needs iOS 15.0, so that's now the deployment target for all iOS builds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
108 lines
4.1 KiB
CMake
108 lines
4.1 KiB
CMake
# Options:
|
|
#
|
|
# IOS_PLATFORM = OS (default)
|
|
# OS - the default, used to build for iPhone and iPad physical devices, which have an arm arch.
|
|
#
|
|
# CMAKE_IOS_SDK_ROOT = automatic(default) or /path/to/platform/Developer/SDKs/SDK folder
|
|
# By default this location is automatcially chosen based on the CMAKE_IOS_DEVELOPER_ROOT value.
|
|
# In this case it will always be the most up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path.
|
|
# If set manually, this will force the use of a specific SDK version
|
|
|
|
# PPSSPP platform flags
|
|
set(MOBILE_DEVICE ON)
|
|
# The compiler checks re-read this file without the cache, so pass IOS_APP_STORE on.
|
|
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES IOS_APP_STORE)
|
|
# The static MoltenVK in ios/MoltenVK needs 15.0.
|
|
set(IPHONEOS_DEPLOYMENT_TARGET 15.0)
|
|
add_definitions(-U__STRICT_ANSI__)
|
|
|
|
# Only the libretro core uses GL on iOS. The app is Vulkan (MoltenVK) only.
|
|
if(LIBRETRO)
|
|
set(USING_GLES2 ON)
|
|
add_definitions(-DGL_ETC1_RGB8_OES=0)
|
|
set(OPENGL_LIBRARIES "-framework OpenGLES")
|
|
endif()
|
|
if(IOS_PLATFORM STREQUAL "TVOS")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mappletvos-version-min=${IPHONEOS_DEPLOYMENT_TARGET}")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mappletvos-version-min=${IPHONEOS_DEPLOYMENT_TARGET}")
|
|
else()
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}")
|
|
endif()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
|
|
|
# Standard settings
|
|
set(CMAKE_SYSTEM_NAME Darwin)
|
|
set(CMAKE_SYSTEM_VERSION 1)
|
|
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
|
set(IOS ON)
|
|
set(CMAKE_CROSSCOMPILING ON)
|
|
set(CMAKE_MACOSX_BUNDLE YES)
|
|
if(IOS_PLATFORM STREQUAL "TVOS")
|
|
#set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${IPHONEOS_DEPLOYMENT_TARGET})
|
|
else()
|
|
set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${IPHONEOS_DEPLOYMENT_TARGET})
|
|
endif()
|
|
|
|
# Setup iOS platform unless specified manually with IOS_PLATFORM
|
|
if(NOT DEFINED IOS_PLATFORM)
|
|
set(IOS_PLATFORM "OS")
|
|
endif()
|
|
set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform")
|
|
|
|
# Check the platform selection and setup for developer root
|
|
if(IOS_PLATFORM STREQUAL "OS")
|
|
set(IOS_SDK_NAME "iphoneos")
|
|
elseif(IOS_PLATFORM STREQUAL "SIMULATOR")
|
|
set(IOS_SDK_NAME "iphonesimulator")
|
|
elseif(IOS_PLATFORM STREQUAL "TVOS")
|
|
set(IOS_SDK_NAME "appletvos")
|
|
else()
|
|
message (FATAL_ERROR "Unsupported IOS_PLATFORM value selected '${IOS_PLATFORM}'. Please choose OS or leave default")
|
|
endif()
|
|
|
|
# Setup iOS developer location unless specified manually with CMAKE_IOS_DEVELOPER_ROOT
|
|
if(NOT CMAKE_IOS_SDK_ROOT)
|
|
execute_process(COMMAND xcrun --sdk ${IOS_SDK_NAME} --show-sdk-path
|
|
OUTPUT_VARIABLE CMAKE_IOS_SDK_ROOT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
message (STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}")
|
|
endif()
|
|
|
|
set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK")
|
|
|
|
# Set the sysroot default to the most recent SDK
|
|
set(CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support")
|
|
|
|
# set the architecture for iOS
|
|
if(IOS_PLATFORM STREQUAL "OS" OR IOS_PLATFORM STREQUAL "TVOS")
|
|
set(IOS_ARCH "arm64")
|
|
else()
|
|
set(IOS_ARCH "i386;x86_64")
|
|
endif()
|
|
|
|
set(CMAKE_OSX_ARCHITECTURES "${IOS_ARCH}" CACHE STRING "Build architecture for iOS")
|
|
set(CMAKE_ASM_FLAGS "" CACHE STRING "" FORCE)
|
|
foreach(arch ${IOS_ARCH})
|
|
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -arch ${arch}" CACHE STRING "" FORCE)
|
|
endforeach()
|
|
|
|
# Set the find root to the iOS developer roots and to user defined paths
|
|
set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} CACHE STRING "iOS find search path root")
|
|
|
|
# default to searching for frameworks first
|
|
set(CMAKE_FIND_FRAMEWORK FIRST)
|
|
|
|
# set up the default search directories for frameworks
|
|
set(CMAKE_SYSTEM_FRAMEWORK_PATH
|
|
${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks
|
|
${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks
|
|
${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks
|
|
)
|
|
|
|
# only search the iOS sdks, not the remainder of the host filesystem
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|