Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 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 | |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 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 | |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 30 | IF(NOT CMAKE_C_COMPILER) |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 31 | execute_process(COMMAND xcrun -sdk $ENV{SDKROOT} -find clang |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 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) |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 39 | execute_process(COMMAND xcrun -sdk $ENV{SDKROOT} -find clang++ |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 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 | |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 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 | |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 55 | IF (NOT DEFINED IOS_MIN_TARGET) |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 56 | execute_process(COMMAND xcodebuild -sdk $ENV{SDKROOT} -version SDKVersion |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 57 | OUTPUT_VARIABLE IOS_MIN_TARGET |
| 58 | ERROR_QUIET |
| 59 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 60 | ENDIF() |
| 61 | |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 62 | SET(IOS_COMMON_FLAGS "-mios-version-min=${IOS_MIN_TARGET}") |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 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) |