Update minimum iOS version to 7.0 for shared_ptr/unordered_map.
- In order to correctly detect shared_ptr (& unordered_map)
the iOS version must be >= 7.0 (Xcode 5.0+). This only affects the
SIMULATOR(64) platform builds, as the OS (device) build uses the
latest SDK which is now likely 8.0+.
Change-Id: Iefec8f03408b8cdc7a495f442ebba081f800adb0
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 25234ef..b2cb280 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -149,14 +149,14 @@
# Use ios-cmake to build a static library for iOS
#
# We need to add isysroot to force cmake to find the toolchains from the iOS SDK
-# instead of using the standard ones. And add flag mios-simulator-version so clang
-# knows we are building for ios simulator but not mac.
+# instead of using the standard ones. And add flag mios-simulator-version so
+# clang knows we are building for ios simulator but not mac.
#
-# You can build for OS (armv7, armv7s, arm64), SIMULATOR (i386) or SIMULATOR64 (x86_64)
-# separately and use lipo to merge them into one static library.
+# You can build for OS (armv7, armv7s, arm64), SIMULATOR (i386) or SIMULATOR64
+# (x86_64) separately and use lipo to merge them into one static library.
#
# There are some features/algorithms are not available in iOS version and the
-# minimum supported iOS version is 6.0 now.
+# minimum supported iOS version is now 7.0.
#
# Use cmake ../ceres-solver -DCMAKE_TOOLCHAIN_FILE=../ceres-solver/cmake/iOS.cmake \
# -DIOS_PLATFORM=PLATFORM -DEIGEN_INCLUDE_DIR=/path/to/eigen/header
@@ -179,11 +179,12 @@
UPDATE_CACHE_VARIABLE(GFLAGS OFF)
UPDATE_CACHE_VARIABLE(OPENMP OFF)
- # Apple claims that the BLAS call dsyrk_ is a private API, and will not allow you
- # to submit to the Apple Store if the symbol is present.
+ # Apple claims that the BLAS call dsyrk_ is a private API, and will not allow
+ # you to submit to the Apple Store if the symbol is present.
UPDATE_CACHE_VARIABLE(LAPACK OFF)
- MESSAGE(STATUS "Building for iOS: SuiteSparse, CXSparse, LAPACK, gflags, and OpenMP are not available.")
+ MESSAGE(STATUS "Building for iOS: SuiteSparse, CXSparse, LAPACK, gflags, "
+ "and OpenMP are not available.")
UPDATE_CACHE_VARIABLE(BUILD_EXAMPLES OFF)
MESSAGE(STATUS "Building for iOS, will not build examples.")
@@ -191,9 +192,13 @@
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-abi-version=2 -fobjc-arc -isysroot ${CMAKE_OSX_SYSROOT}")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fobjc-abi-version=2 -fobjc-arc -isysroot ${CMAKE_OSX_SYSROOT}")
- IF (${IOS_PLATFORM} STREQUAL "SIMULATOR" OR ${IOS_PLATFORM} STREQUAL "SIMULATOR64")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mios-simulator-version-min=6.0")
- ENDIF()
+ IF (${IOS_PLATFORM} STREQUAL "SIMULATOR" OR
+ ${IOS_PLATFORM} STREQUAL "SIMULATOR64")
+ # By default, the minimum version is < 7.0, which causes problems with
+ # detection of shared_ptr & unordered_map as pre-7.0 used libstdc++
+ # but 7.0+ uses libc++ (also LLVM-GCC was removed from Xcode 5).
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mios-simulator-version-min=7.0")
+ ENDIF()
ENDIF (IOS)
# Prior to October 2013, Ceres used some non-CMake standardised variables to
diff --git a/docs/source/building.rst b/docs/source/building.rst
index 2e61ea6..fe3def3 100644
--- a/docs/source/building.rst
+++ b/docs/source/building.rst
@@ -440,7 +440,7 @@
.. NOTE::
- You need iOS version 6.0 or higher to build Ceres Solver.
+ You need iOS version 7.0 or higher to build Ceres Solver.
To build Ceres for iOS, we need to force ``CMake`` to find the toolchains from
the iOS SDK instead of using the standard ones. For example: