Updating iOS.cmake to work with the latest Xcode and iOS 8 SDK.
[oota-llvm.git] / cmake / platforms / iOS.cmake
1 # Toolchain config for iOS.
2 #
3 # Usage:
4 # mkdir build; cd build
5 # cmake ..; make
6 # mkdir ios; cd ios
7 # cmake -DLLVM_IOS_TOOLCHAIN_DIR=/path/to/ios/ndk \
8 #   -DCMAKE_TOOLCHAIN_FILE=../../cmake/platforms/iOS.cmake ../..
9 # make <target>
10
11 SET(CMAKE_SYSTEM_NAME Darwin)
12 SET(CMAKE_SYSTEM_VERSION 13)
13 SET(CMAKE_CXX_COMPILER_WORKS True)
14 SET(CMAKE_C_COMPILER_WORKS True)
15 SET(DARWIN_TARGET_OS_NAME ios)
16
17 IF(NOT DEFINED ENV{SDKROOT})
18  MESSAGE(FATAL_ERROR "SDKROOT env var must be set: " $ENV{SDKROOT})
19 ENDIF()
20
21 IF(EXISTS $ENV{SDKROOT})
22   SET(SDKROOT $ENV{SDKROOT})
23 ELSE()
24   execute_process(COMMAND xcodebuild -version -sdk $ENV{SDKROOT} Path
25    OUTPUT_VARIABLE SDKROOT
26    ERROR_QUIET
27    OUTPUT_STRIP_TRAILING_WHITESPACE)
28 ENDIF()
29
30 IF(NOT CMAKE_C_COMPILER)
31   execute_process(COMMAND xcrun -sdk $ENV{SDKROOT} -find clang
32    OUTPUT_VARIABLE CMAKE_C_COMPILER
33    ERROR_QUIET
34    OUTPUT_STRIP_TRAILING_WHITESPACE)
35   message(STATUS "Using c compiler ${CMAKE_C_COMPILER}")
36 ENDIF()
37
38 IF(NOT CMAKE_CXX_COMPILER)
39   execute_process(COMMAND xcrun -sdk $ENV{SDKROOT} -find clang++
40    OUTPUT_VARIABLE CMAKE_CXX_COMPILER
41    ERROR_QUIET
42    OUTPUT_STRIP_TRAILING_WHITESPACE)
43   message(STATUS "Using c compiler ${CMAKE_CXX_COMPILER}")
44 ENDIF()
45
46 IF(NOT CMAKE_AR)
47   execute_process(COMMAND xcrun -sdk $ENV{SDKROOT} -find ar
48    OUTPUT_VARIABLE CMAKE_AR_val
49    ERROR_QUIET
50    OUTPUT_STRIP_TRAILING_WHITESPACE)
51   SET(CMAKE_AR ${CMAKE_AR_val} CACHE FILEPATH "Archiver")
52   message(STATUS "Using ar ${CMAKE_AR}")
53 ENDIF()
54
55 IF (NOT DEFINED IOS_MIN_TARGET)
56 execute_process(COMMAND xcodebuild -sdk $ENV{SDKROOT} -version SDKVersion
57    OUTPUT_VARIABLE IOS_MIN_TARGET
58    ERROR_QUIET
59    OUTPUT_STRIP_TRAILING_WHITESPACE)
60 ENDIF()
61
62 SET(IOS_COMMON_FLAGS "-mios-version-min=${IOS_MIN_TARGET}")
63 SET(CMAKE_C_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_cflags" FORCE)
64 SET(CMAKE_CXX_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_cxxflags" FORCE)
65 SET(CMAKE_LINK_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_linkflags" FORCE)