blob: 49140590ab2b917304f640a774aaa95f19acd729 [file] [log] [blame]
Chris Bieneman50077412014-09-03 23:21:18 +00001# 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
11SET(CMAKE_SYSTEM_NAME Darwin)
12SET(CMAKE_SYSTEM_VERSION 13)
13SET(CMAKE_CXX_COMPILER_WORKS True)
14SET(CMAKE_C_COMPILER_WORKS True)
15SET(DARWIN_TARGET_OS_NAME ios)
16
17IF(NOT DEFINED ENV{SDKROOT})
Chris Bieneman3e15eed2015-03-12 16:19:16 +000018 execute_process(COMMAND xcodebuild -version -sdk iphoneos Path
19 OUTPUT_VARIABLE SDKROOT
20 ERROR_QUIET
21 OUTPUT_STRIP_TRAILING_WHITESPACE)
Chris Bienemanf170d7e2015-01-30 00:10:47 +000022ELSE()
23 execute_process(COMMAND xcodebuild -version -sdk $ENV{SDKROOT} Path
24 OUTPUT_VARIABLE SDKROOT
25 ERROR_QUIET
26 OUTPUT_STRIP_TRAILING_WHITESPACE)
27ENDIF()
28
Chris Bieneman3e15eed2015-03-12 16:19:16 +000029IF(NOT EXISTS ${SDKROOT})
30 MESSAGE(FATAL_ERROR "SDKROOT could not be detected!")
31ENDIF()
32
33set(CMAKE_OSX_SYSROOT ${SDKROOT})
34
Chris Bieneman50077412014-09-03 23:21:18 +000035IF(NOT CMAKE_C_COMPILER)
Chris Bieneman3e15eed2015-03-12 16:19:16 +000036 execute_process(COMMAND xcrun -sdk ${SDKROOT} -find clang
Chris Bieneman50077412014-09-03 23:21:18 +000037 OUTPUT_VARIABLE CMAKE_C_COMPILER
38 ERROR_QUIET
39 OUTPUT_STRIP_TRAILING_WHITESPACE)
40 message(STATUS "Using c compiler ${CMAKE_C_COMPILER}")
41ENDIF()
42
43IF(NOT CMAKE_CXX_COMPILER)
Chris Bieneman3e15eed2015-03-12 16:19:16 +000044 execute_process(COMMAND xcrun -sdk ${SDKROOT} -find clang++
Chris Bieneman50077412014-09-03 23:21:18 +000045 OUTPUT_VARIABLE CMAKE_CXX_COMPILER
46 ERROR_QUIET
47 OUTPUT_STRIP_TRAILING_WHITESPACE)
48 message(STATUS "Using c compiler ${CMAKE_CXX_COMPILER}")
49ENDIF()
50
Chris Bienemanf170d7e2015-01-30 00:10:47 +000051IF(NOT CMAKE_AR)
Chris Bieneman3e15eed2015-03-12 16:19:16 +000052 execute_process(COMMAND xcrun -sdk ${SDKROOT} -find ar
Chris Bienemanf170d7e2015-01-30 00:10:47 +000053 OUTPUT_VARIABLE CMAKE_AR_val
54 ERROR_QUIET
55 OUTPUT_STRIP_TRAILING_WHITESPACE)
56 SET(CMAKE_AR ${CMAKE_AR_val} CACHE FILEPATH "Archiver")
57 message(STATUS "Using ar ${CMAKE_AR}")
58ENDIF()
59
Chris Bieneman3e15eed2015-03-12 16:19:16 +000060IF(NOT CMAKE_RANLIB)
61 execute_process(COMMAND xcrun -sdk ${SDKROOT} -find ranlib
62 OUTPUT_VARIABLE CMAKE_RANLIB_val
63 ERROR_QUIET
64 OUTPUT_STRIP_TRAILING_WHITESPACE)
65 SET(CMAKE_RANLIB ${CMAKE_RANLIB_val} CACHE FILEPATH "Ranlib")
66 message(STATUS "Using ranlib ${CMAKE_RANLIB}")
67ENDIF()
68
Chris Bieneman50077412014-09-03 23:21:18 +000069IF (NOT DEFINED IOS_MIN_TARGET)
Chris Bieneman3e15eed2015-03-12 16:19:16 +000070execute_process(COMMAND xcodebuild -sdk ${SDKROOT} -version SDKVersion
Chris Bieneman50077412014-09-03 23:21:18 +000071 OUTPUT_VARIABLE IOS_MIN_TARGET
72 ERROR_QUIET
73 OUTPUT_STRIP_TRAILING_WHITESPACE)
74ENDIF()
75
Chris Bienemanf170d7e2015-01-30 00:10:47 +000076SET(IOS_COMMON_FLAGS "-mios-version-min=${IOS_MIN_TARGET}")
Chris Bieneman50077412014-09-03 23:21:18 +000077SET(CMAKE_C_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_cflags" FORCE)
78SET(CMAKE_CXX_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_cxxflags" FORCE)
79SET(CMAKE_LINK_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_linkflags" FORCE)