-
Notifications
You must be signed in to change notification settings - Fork 10.4k
/
Copy pathSwiftAndroidSupport.cmake
36 lines (33 loc) · 1.71 KB
/
SwiftAndroidSupport.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function(swift_android_sysroot sysroot_var_name)
if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "")
string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME} platform)
set(${sysroot_var_name} "${SWIFT_ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/${platform}-x86_64/sysroot" PARENT_SCOPE)
elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "")
set(${sysroot_var_name} "${SWIFT_ANDROID_NATIVE_SYSROOT}" PARENT_SCOPE)
else()
message(SEND_ERROR "Couldn't find Android sysroot")
endif()
endfunction()
function(swift_android_tools_path arch path_var_name)
if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "")
string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME} platform)
set(${path_var_name} "${SWIFT_ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/${platform}-x86_64/bin" PARENT_SCOPE)
elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "")
set(${path_var_name} "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/bin" PARENT_SCOPE)
else()
message(SEND_ERROR "Couldn't set ${arch} tools path for Android")
endif()
endfunction ()
function(swift_android_cxx_libraries_for_arch arch libraries_var_name)
set(link_libraries)
if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "")
set(android_libcxx_path "${SWIFT_SDK_ANDROID_ARCH_${arch}_PATH}/usr/lib/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}")
list(APPEND link_libraries ${android_libcxx_path}/libc++abi.a
${android_libcxx_path}/libc++_shared.so)
elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "")
list(APPEND link_libraries "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/lib/libc++_shared.so")
else()
message(SEND_ERROR "Couldn't set ${arch} libc++ libraries needed for Android")
endif()
set(${libraries_var_name} ${link_libraries} PARENT_SCOPE)
endfunction()