Skip to content

Commit 9498b14

Browse files
authored
Merge pull request #25098 from vgorloff/macos-to-android-crosscompile
Android Intel 32/64 bit (i.e. Android Simulator) support.
2 parents 3d2bead + 096f7f3 commit 9498b14

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,10 @@ function(_add_variant_link_flags)
465465
set(android_libcxx_path "${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a")
466466
elseif("${LFLAGS_ARCH}" MATCHES aarch64)
467467
set(android_libcxx_path "${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libs/arm64-v8a")
468+
elseif("${LFLAGS_ARCH}" MATCHES i686)
469+
set(android_libcxx_path "${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libs/x86")
470+
elseif("${LFLAGS_ARCH}" MATCHES x86_64)
471+
set(android_libcxx_path "${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libs/x86_64")
468472
else()
469473
message(SEND_ERROR "unknown architecture (${LFLAGS_ARCH}) for android")
470474
endif()

cmake/modules/SwiftAndroidSupport.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ function(swift_android_lib_for_arch arch var)
2323
list(APPEND paths "${_prebuilt}/${_host}/lib/armv7-a")
2424
elseif(arch STREQUAL aarch64)
2525
list(APPEND paths "${_prebuilt}/${_host}/lib64")
26+
elseif(arch STREQUAL i686)
27+
list(APPEND paths "${_prebuilt}/${_host}/lib")
28+
elseif(arch STREQUAL x86_64)
29+
list(APPEND paths "${_prebuilt}/${_host}/lib64")
2630
else()
2731
message(SEND_ERROR "unknown architecture (${arch}) for android")
2832
endif()

cmake/modules/SwiftConfigureSDK.cmake

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,16 @@ macro(configure_sdk_unix name architectures)
186186
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "aarch64")
187187
set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NDK_PATH}/platforms/android-${SWIFT_ANDROID_API_LEVEL}/arch-arm64")
188188
set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "aarch64-unknown-linux-android")
189+
elseif("${arch}" STREQUAL "i686")
190+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "i686-linux-android")
191+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "i686")
192+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NDK_PATH}/platforms/android-${SWIFT_ANDROID_API_LEVEL}/arch-x86")
193+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "i686-unknown-linux-android")
194+
elseif("${arch}" STREQUAL "x86_64")
195+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "x86_64-linux-android")
196+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "x86_64")
197+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NDK_PATH}/platforms/android-${SWIFT_ANDROID_API_LEVEL}/arch-x86_64")
198+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "x86_64-unknown-linux-android")
189199
else()
190200
message(FATAL_ERROR "unknown arch for android SDK: ${arch}")
191201
endif()
@@ -196,8 +206,16 @@ macro(configure_sdk_unix name architectures)
196206
elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
197207
set(_swift_android_prebuilt_build "linux-x86_64")
198208
endif()
199-
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH
209+
if("${arch}" STREQUAL "i686")
210+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH
211+
"${SWIFT_ANDROID_NDK_PATH}/toolchains/x86-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${_swift_android_prebuilt_build}")
212+
elseif("${arch}" STREQUAL "x86_64")
213+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH
214+
"${SWIFT_ANDROID_NDK_PATH}/toolchains/x86_64-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${_swift_android_prebuilt_build}")
215+
else()
216+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH
200217
"${SWIFT_ANDROID_NDK_PATH}/toolchains/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${_swift_android_prebuilt_build}")
218+
endif()
201219
else()
202220
if(NOT SWIFT_SDK_${prefix}_ARCH_${arch}_PATH)
203221
set(SWIFT_SDK_${prefix}_ARCH_${arch}_PATH "/")

0 commit comments

Comments
 (0)