1# Options: 2# 3# IOS_PLATFORM = OS (default) 4# This needs to be OS as the simulator cannot use the required GLES2.0 environment. 5# OS - the default, used to build for iPhone and iPad physical devices, which have an arm arch. 6# 7# CMAKE_IOS_SDK_ROOT = automatic(default) or /path/to/platform/Developer/SDKs/SDK folder 8# By default this location is automatcially chosen based on the CMAKE_IOS_DEVELOPER_ROOT value. 9# In this case it will always be the most up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path. 10# If set manually, this will force the use of a specific SDK version 11 12set(IPHONEOS_DEPLOYMENT_TARGET 11.0) 13set(IOS TRUE) 14set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}") 15set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") 16set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}") 17set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") 18 19# Standard settings 20set(CMAKE_SYSTEM_NAME Darwin) 21set(CMAKE_SYSTEM_VERSION 1) 22set(CMAKE_CROSSCOMPILING ON) 23if(CMAKE_GENERATOR STREQUAL "Xcode") 24 set(CMAKE_MACOSX_BUNDLE YES) 25endif() 26set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") 27set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO") 28set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") 29set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${IPHONEOS_DEPLOYMENT_TARGET}) 30 31# Setup iOS platform unless specified manually with IOS_PLATFORM 32if(NOT DEFINED IOS_PLATFORM) 33 set(IOS_PLATFORM "OS") 34endif() 35set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform") 36 37# Check the platform selection and setup for developer root 38if(IOS_PLATFORM STREQUAL "OS") 39 set(IOS_SDK_NAME "iphoneos") 40elseif(IOS_PLATFORM STREQUAL "SIMULATOR") 41 set(IOS_SDK_NAME "iphonesimulator") 42else() 43 message (FATAL_ERROR "Unsupported IOS_PLATFORM value selected '${IOS_PLATFORM}'. Please choose OS or leave default") 44endif() 45 46# Setup iOS developer location unless specified manually with CMAKE_IOS_DEVELOPER_ROOT 47if(NOT CMAKE_IOS_SDK_ROOT) 48 execute_process(COMMAND xcrun --sdk ${IOS_SDK_NAME} --show-sdk-path 49 OUTPUT_VARIABLE CMAKE_IOS_SDK_ROOT 50 OUTPUT_STRIP_TRAILING_WHITESPACE 51 ) 52 message (STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}") 53endif() 54 55set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK") 56 57# Set the sysroot default to the most recent SDK 58set(CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support") 59 60# set the architecture for iOS 61if(IOS_PLATFORM STREQUAL "OS") 62 # When ffmpeg has been rebuilt for arm64 use: 63 set(IOS_ARCH "arm64") 64else() 65 set(IOS_ARCH "i386;x86_64") 66endif() 67 68set(CMAKE_OSX_ARCHITECTURES "${IOS_ARCH}" CACHE STRING "Build architecture for iOS") 69set(CMAKE_ASM_FLAGS "" CACHE STRING "" FORCE) 70foreach(arch ${IOS_ARCH}) 71 set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -arch ${arch}" CACHE STRING "" FORCE) 72endforeach() 73 74# Set the find root to the iOS developer roots and to user defined paths 75set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} CACHE STRING "iOS find search path root") 76 77# default to searching for frameworks first 78set(CMAKE_FIND_FRAMEWORK FIRST) 79 80# set up the default search directories for frameworks 81set(CMAKE_SYSTEM_FRAMEWORK_PATH 82 ${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks 83 ${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks 84 ${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks 85) 86 87# only search the iOS sdks, not the remainder of the host filesystem 88set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 89set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 90set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 91 92