Skip to content

Commit 00117e8

Browse files
authored
[Concurrency] Fix Android C libdispatch build (#35881)
* [Concurrency] Fix Android C libdispatch build We need to pass CMAKE_ANDROID_NDK and CMAKE_ANDROID_ARCH_ABI to the build. * Set proper ANDROID_ARCH_ABI * Add -DCMAKE_ANDROID_API to C libdispatch build * Fix compiler config for Android
1 parent 65df4ba commit 00117e8

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

cmake/modules/Libdispatch.cmake

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ foreach(sdk ${DISPATCH_SDKS})
5555
list(APPEND ARCHS "${SWIFT_HOST_VARIANT_ARCH}")
5656
endif()
5757
endif()
58+
59+
if(sdk STREQUAL ANDROID)
60+
set(SWIFT_LIBDISPATCH_COMPILER_CMAKE_ARGS)
61+
else()
62+
set(SWIFT_LIBDISPATCH_COMPILER_CMAKE_ARGS -DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER};-DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER})
63+
endif()
5864

5965
foreach(arch ${ARCHS})
6066
set(LIBDISPATCH_VARIANT_NAME "libdispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
@@ -65,9 +71,8 @@ foreach(sdk ${DISPATCH_SDKS})
6571
CMAKE_ARGS
6672
-DCMAKE_AR=${CMAKE_AR}
6773
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
68-
-DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER}
74+
${SWIFT_LIBDISPATCH_COMPILER_CMAKE_ARGS}
6975
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
70-
-DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER}
7176
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
7277
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
7378
-DCMAKE_INSTALL_LIBDIR=lib
@@ -77,6 +82,9 @@ foreach(sdk ${DISPATCH_SDKS})
7782
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
7883
-DCMAKE_SYSTEM_NAME=${SWIFT_SDK_${sdk}_NAME}
7984
-DCMAKE_SYSTEM_PROCESSOR=${arch}
85+
"-DCMAKE_ANDROID_NDK=${SWIFT_ANDROID_NDK_PATH}"
86+
-DCMAKE_ANDROID_ARCH_ABI=${SWIFT_SDK_ANDROID_ARCH_${arch}_ABI}
87+
-DCMAKE_ANDROID_API=${SWIFT_ANDROID_API_LEVEL}
8088
-DBUILD_SHARED_LIBS=YES
8189
-DENABLE_SWIFT=NO
8290
-DENABLE_TESTING=NO
@@ -139,18 +147,20 @@ foreach(sdk ${DISPATCH_SDKS})
139147
CMAKE_ARGS
140148
-DCMAKE_AR=${CMAKE_AR}
141149
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
142-
-DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER}
150+
${SWIFT_LIBDISPATCH_COMPILER_CMAKE_ARGS}
143151
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
144-
-DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER}
145152
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
146153
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
147154
-DCMAKE_INSTALL_LIBDIR=lib
148155
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
149156
-DCMAKE_LINKER=${CMAKE_LINKER}
150157
-DCMAKE_RANLIB=${CMAKE_RANLIB}
151158
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
152-
-DCMAKE_SYSTEM_NAME=${sdk}
159+
-DCMAKE_SYSTEM_NAME=${SWIFT_SDK_${sdk}_NAME}
153160
-DCMAKE_SYSTEM_PROCESSOR=${arch}
161+
"-DCMAKE_ANDROID_NDK=${SWIFT_ANDROID_NDK_PATH}"
162+
-DCMAKE_ANDROID_ARCH_ABI=${SWIFT_SDK_ANDROID_ARCH_${arch}_ABI}
163+
-DCMAKE_ANDROID_API=${SWIFT_ANDROID_API_LEVEL}
154164
-DBUILD_SHARED_LIBS=NO
155165
-DENABLE_SWIFT=NO
156166
-DENABLE_TESTING=NO

cmake/modules/SwiftConfigureSDK.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,18 +304,22 @@ macro(configure_sdk_unix name architectures)
304304
set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "armv7-unknown-linux-androideabi")
305305
# The Android ABI isn't part of the module triple.
306306
set(SWIFT_SDK_ANDROID_ARCH_${arch}_MODULE "armv7-unknown-linux-android")
307+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ABI "armeabi-v7a")
307308
elseif("${arch}" STREQUAL "aarch64")
308309
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "aarch64-linux-android")
309310
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "aarch64")
310311
set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "aarch64-unknown-linux-android")
312+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ABI "arm64-v8a")
311313
elseif("${arch}" STREQUAL "i686")
312314
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "i686-linux-android")
313315
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "i686")
314316
set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "i686-unknown-linux-android")
317+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ABI "x86")
315318
elseif("${arch}" STREQUAL "x86_64")
316319
set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "x86_64-linux-android")
317320
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "x86_64")
318321
set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "x86_64-unknown-linux-android")
322+
set(SWIFT_SDK_ANDROID_ARCH_${arch}_ABI "x86_64")
319323
else()
320324
message(FATAL_ERROR "unknown arch for android SDK: ${arch}")
321325
endif()

0 commit comments

Comments
 (0)