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}) |
Chris Bieneman | 3e15eed | 2015-03-12 16:19:16 +0000 | [diff] [blame] | 18 | execute_process(COMMAND xcodebuild -version -sdk iphoneos Path |
| 19 | OUTPUT_VARIABLE SDKROOT |
| 20 | ERROR_QUIET |
| 21 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 22 | ELSE() |
| 23 | execute_process(COMMAND xcodebuild -version -sdk $ENV{SDKROOT} Path |
| 24 | OUTPUT_VARIABLE SDKROOT |
| 25 | ERROR_QUIET |
| 26 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 27 | ENDIF() |
| 28 | |
Chris Bieneman | 3e15eed | 2015-03-12 16:19:16 +0000 | [diff] [blame] | 29 | IF(NOT EXISTS ${SDKROOT}) |
| 30 | MESSAGE(FATAL_ERROR "SDKROOT could not be detected!") |
| 31 | ENDIF() |
| 32 | |
| 33 | set(CMAKE_OSX_SYSROOT ${SDKROOT}) |
| 34 | |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 35 | IF(NOT CMAKE_C_COMPILER) |
Chris Bieneman | 3e15eed | 2015-03-12 16:19:16 +0000 | [diff] [blame] | 36 | execute_process(COMMAND xcrun -sdk ${SDKROOT} -find clang |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 37 | OUTPUT_VARIABLE CMAKE_C_COMPILER |
| 38 | ERROR_QUIET |
| 39 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 40 | message(STATUS "Using c compiler ${CMAKE_C_COMPILER}") |
| 41 | ENDIF() |
| 42 | |
| 43 | IF(NOT CMAKE_CXX_COMPILER) |
Chris Bieneman | 3e15eed | 2015-03-12 16:19:16 +0000 | [diff] [blame] | 44 | execute_process(COMMAND xcrun -sdk ${SDKROOT} -find clang++ |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 45 | OUTPUT_VARIABLE CMAKE_CXX_COMPILER |
| 46 | ERROR_QUIET |
| 47 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 48 | message(STATUS "Using c compiler ${CMAKE_CXX_COMPILER}") |
| 49 | ENDIF() |
| 50 | |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 51 | IF(NOT CMAKE_AR) |
Chris Bieneman | 3e15eed | 2015-03-12 16:19:16 +0000 | [diff] [blame] | 52 | execute_process(COMMAND xcrun -sdk ${SDKROOT} -find ar |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 53 | 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}") |
| 58 | ENDIF() |
| 59 | |
Chris Bieneman | 3e15eed | 2015-03-12 16:19:16 +0000 | [diff] [blame] | 60 | IF(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}") |
| 67 | ENDIF() |
| 68 | |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 69 | IF (NOT DEFINED IOS_MIN_TARGET) |
Chris Bieneman | 3e15eed | 2015-03-12 16:19:16 +0000 | [diff] [blame] | 70 | execute_process(COMMAND xcodebuild -sdk ${SDKROOT} -version SDKVersion |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 71 | OUTPUT_VARIABLE IOS_MIN_TARGET |
| 72 | ERROR_QUIET |
| 73 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 74 | ENDIF() |
| 75 | |
Chris Bieneman | f170d7e | 2015-01-30 00:10:47 +0000 | [diff] [blame] | 76 | SET(IOS_COMMON_FLAGS "-mios-version-min=${IOS_MIN_TARGET}") |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 77 | SET(CMAKE_C_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_cflags" FORCE) |
| 78 | SET(CMAKE_CXX_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_cxxflags" FORCE) |
| 79 | SET(CMAKE_LINK_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_linkflags" FORCE) |