Add IOS_DEPLOYMENT_TARGET variable to iOS.cmake

- Gives an option to specify a lower deployment target version than the
  current SDK for backward compatibility.

Change-Id: Ieb84ba7f42cdf925510f84b8e0cd01b5e9fc051b
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8581b4c..fc366c9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -148,9 +148,9 @@
   message(STATUS "Building Ceres for iOS platform: ${IOS_PLATFORM}")
 
   # Ceres requires at least iOS 7.0+.
-  if (IOS_SDK_VERSION VERSION_LESS 7.0)
-    message(FATAL_ERROR "Unsupported iOS SDK version: ${IOS_SDK_VERSION}, Ceres "
-      "required at least iOS version 7.0")
+  if (IOS_DEPLOYMENT_TARGET VERSION_LESS 7.0)
+    message(FATAL_ERROR "Unsupported iOS version: ${IOS_DEPLOYMENT_TARGET}, Ceres "
+      "requires at least iOS version 7.0")
   endif()
 
   update_cache_variable(MINIGLOG ON)
diff --git a/cmake/iOS.cmake b/cmake/iOS.cmake
index 23fe920..8d34d61 100644
--- a/cmake/iOS.cmake
+++ b/cmake/iOS.cmake
@@ -222,22 +222,29 @@
 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 as latest 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.
+# 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.
 if (XCODE_VERSION VERSION_LESS 7.0)
   if (IOS_PLATFORM STREQUAL "OS")
     set(XCODE_IOS_PLATFORM_VERSION_FLAGS
-      "-mios-version-min=${IOS_SDK_VERSION}")
+      "-mios-version-min=${IOS_DEPLOYMENT_TARGET}")
   else()
     # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min.
     set(XCODE_IOS_PLATFORM_VERSION_FLAGS
-      "-mios-simulator-version-min=${IOS_SDK_VERSION}")
+      "-mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
   endif()
 else()
   # Xcode 7.0+ uses flags we can build directly from XCODE_IOS_PLATFORM.
   set(XCODE_IOS_PLATFORM_VERSION_FLAGS
-    "-m${XCODE_IOS_PLATFORM}-version-min=${IOS_SDK_VERSION}")
+    "-m${XCODE_IOS_PLATFORM}-version-min=${IOS_DEPLOYMENT_TARGET}")
 endif()
 
 set(CMAKE_C_FLAGS