Skip to content
Snippets Groups Projects
Commit a75ef055 authored by Alexis Girault's avatar Alexis Girault
Browse files

ENH: Expose ios deployment target in CMake config

Can not use `CMAKE_OSX_DEPLOYMENT_TARGET` because it will set the
minimum version for macosx and not iphoneos or ios-simulator. Issue filed
in CMake: cmake/cmake#17431

Instead, update the proper flags in the toolchain files by passing the
`IOS_DEVELOPMENT_TARGET` during configuration.

Default `IOS_DEVELOPMENT_TARGET` to the current sdk version (latest). It
used to default to ios 5.0 for the simulators (2011) and ios 8.0 for the
devices (2014).
parent 1df22d17
No related branches found
No related tags found
No related merge requests found
......@@ -31,8 +31,8 @@ execute_process(COMMAND /usr/bin/xcrun -sdk iphoneos --show-sdk-path
# Set compilation flags
set(CMAKE_OSX_ARCHITECTURES @CMAKE_CC_ARCH@)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -miphoneos-version-min=8.0 -fvisibility=hidden -fvisibility-inlines-hidden")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -miphoneos-version-min=8.0 -fvisibility=hidden -fvisibility-inlines-hidden")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -miphoneos-version-min=@IOS_DEPLOYMENT_TARGET@ -fvisibility=hidden -fvisibility-inlines-hidden")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -miphoneos-version-min=@IOS_DEPLOYMENT_TARGET@ -fvisibility=hidden -fvisibility-inlines-hidden")
# Embed bitcode, if requested
if (@IOS_EMBED_BITCODE@)
......
......@@ -22,21 +22,10 @@ execute_process(COMMAND /usr/bin/xcrun -sdk iphonesimulator --show-sdk-path
OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
OUTPUT_STRIP_TRAILING_WHITESPACE)
# If the we are on 7.0 or higher SDK we should add simulator version min to get
# things to compile. This is probably more properly handled with a compiler version
# check but this works for now.
if(CMAKE_OSX_SYSROOT MATCHES iPhoneSimulator[7-9].[0-9].sdk)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mios-simulator-version-min=5.0")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mios-simulator-version-min=5.0")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__IPHONE_OS_VERSION_MIN_REQUIRED=50000")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__PHONE_OS_VERSION_MIN_REQIORED=50000")
endif()
# Set compilation flags
set(CMAKE_OSX_ARCHITECTURES @IOS_SIMULATOR_ARCHITECTURES@)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mios-simulator-version-min=@IOS_DEPLOYMENT_TARGET@ -fvisibility=hidden -fvisibility-inlines-hidden")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mios-simulator-version-min=@IOS_DEPLOYMENT_TARGET@ -fvisibility=hidden -fvisibility-inlines-hidden")
set(CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}" CACHE STRING "osx architectures")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")
......
......@@ -26,6 +26,12 @@ if(NOT ${IOS_ARCHS_NBR})
message(FATAL_ERROR "No IOS simulator or device architecture to compile for. Populate IOS_DEVICE_ARCHITECTURES and/or IOS_SIMULATOR_ARCHITECTURES.")
endif()
# iOS Deployment Target
execute_process(COMMAND /usr/bin/xcrun -sdk iphoneos --show-sdk-version
OUTPUT_VARIABLE IOS_DEPLOYMENT_TARGET_TMP
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(IOS_DEPLOYMENT_TARGET ${IOS_DEPLOYMENT_TARGET_TMP} CACHE STRING "iOS Deployment Target")
set(IOS_EMBED_BITCODE ON CACHE BOOL "Embed LLVM bitcode")
set(CMAKE_FRAMEWORK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/frameworks"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment