Remove armv7 from target architectures when building for iOS >= 11. - iOS 11+ requires a 64-bit architecture, so only arm64 is supported. Change-Id: Ieb2ead13ba8722c6c0777b78f59f667331ad670c
diff --git a/cmake/iOS.cmake b/cmake/iOS.cmake index 8d34d61..4221e9e 100644 --- a/cmake/iOS.cmake +++ b/cmake/iOS.cmake
@@ -120,8 +120,6 @@ else() message(FATAL_ERROR "Invalid IOS_PLATFORM: ${IOS_PLATFORM}") endif() -message(STATUS "Configuring iOS build for platform: ${IOS_PLATFORM}, " - "architecture(s): ${IOS_ARCH}") # If user did not specify the SDK root to use, then query xcodebuild for it. if (NOT CMAKE_OSX_SYSROOT) @@ -190,6 +188,29 @@ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) +# Specify minimum version of deployment target. +# Unless specified, the latest SDK version is used by default. +set(IOS_DEPLOYMENT_TARGET "${IOS_SDK_VERSION}" + CACHE STRING "Minimum iOS version to build for." ) +message(STATUS "Building for minimum iOS version: ${IOS_DEPLOYMENT_TARGET}" + " (SDK version: ${IOS_SDK_VERSION})") +if (NOT IOS_DEPLOYMENT_TARGET VERSION_LESS 11.0) + # iOS 11+ does not support 32-bit architectures (armv7). + foreach(ARCH ${IOS_ARCH}) + if (ARCH MATCHES "armv7*") + message(STATUS "Removing iOS architecture: ${ARCH} from build as it is " + "not supported by the minimum iOS version to build for: " + "${IOS_DEPLOYMENT_TARGET} (iOS >= 11 requires 64-bit).") + else() + list(APPEND VALID_IOS_ARCH_FOR_SDK_VERSION ${ARCH}) + endif() + endforeach() + set(IOS_ARCH ${VALID_IOS_ARCH_FOR_SDK_VERSION}) +endif() + +message(STATUS "Configuring iOS build for platform: ${IOS_PLATFORM}, " + "architecture(s): ${IOS_ARCH}") + # Standard settings. set(CMAKE_SYSTEM_NAME Darwin) set(CMAKE_SYSTEM_VERSION ${IOS_SDK_VERSION}) @@ -222,13 +243,6 @@ set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") -# Specify minimum version of deployment target. -# Unless specified, the latest SDK version is used by default. -set(IOS_DEPLOYMENT_TARGET "${IOS_SDK_VERSION}" - CACHE STRING "Minimum iOS version to build for." ) -message(STATUS "Building for minimum iOS version: ${IOS_DEPLOYMENT_TARGET}" - " (SDK version: ${IOS_SDK_VERSION})") - # Note that only Xcode 7+ supports the newer more specific: # -m${XCODE_IOS_PLATFORM}-version-min flags, older versions of Xcode use: # -m(ios/ios-simulator)-version-min instead.
diff --git a/docs/source/installation.rst b/docs/source/installation.rst index 27979ce..c762bb6 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst
@@ -520,6 +520,11 @@ to merge them into one static library. See ``cmake/iOS.cmake`` for more options. +.. NOTE:: + + iOS version 11.0+ requires a 64-bit architecture, so you cannot + build for armv7/armv7s with iOS 11.0+ (only arm64 is supported). + After building, you will get a ``libceres.a`` library, which you will need to add to your Xcode project.