Skip to content

Commit ba501a3

Browse files
committed
Merge remote-tracking branch 'origin/main' into rebranch
2 parents 85959f9 + c6490b2 commit ba501a3

File tree

2 files changed

+43
-15
lines changed

2 files changed

+43
-15
lines changed

stdlib/public/runtime/CMakeLists.txt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ add_swift_target_library(swiftRuntime OBJECT_LIBRARY
117117

118118
set(ELFISH_SDKS)
119119
set(COFF_SDKS)
120-
foreach(sdk ${SWIFT_CONFIGURED_SDKS})
120+
foreach(sdk ${SWIFT_SDKS})
121121
if("${SWIFT_SDK_${sdk}_OBJECT_FORMAT}" STREQUAL "ELF")
122122
list(APPEND ELFISH_SDKS ${sdk})
123123
elseif("${SWIFT_SDK_${sdk}_OBJECT_FORMAT}" STREQUAL "COFF")
@@ -145,7 +145,7 @@ add_swift_target_library(swiftImageRegistrationObjectCOFF
145145
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
146146
INSTALL_IN_COMPONENT none)
147147

148-
foreach(sdk ${SWIFT_CONFIGURED_SDKS})
148+
foreach(sdk ${SWIFT_SDKS})
149149
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
150150
set(arch_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}")
151151
set(arch_suffix "${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
@@ -225,11 +225,18 @@ foreach(sdk ${SWIFT_CONFIGURED_SDKS})
225225
set(libicu_data_a ${ICU_UC_LIBDIR}/libicudata.a)
226226
endif()
227227
endif()
228+
set(libpthread -lpthread)
229+
set(android_libraries)
230+
if(sdk STREQUAL ANDROID)
231+
set(android_libraries -llog)
232+
set(libpthread)
233+
endif()
228234

229235
set(linkfile ${lowercase_sdk}/static-stdlib-args.lnk)
230236
file(WRITE "${SWIFTSTATICLIB_DIR}/${linkfile}" "
231237
-ldl
232-
-lpthread
238+
${libpthread}
239+
${android_libraries}
233240
-lswiftCore
234241
${libicu_i18n_a}
235242
${libicu_uc_a}

utils/build-script-impl

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -452,17 +452,35 @@ function set_build_options_for_host() {
452452
SWIFT_HOST_VARIANT_ARCH=$architecture
453453

454454
case ${host} in
455-
android-aarch64)
456-
SWIFT_HOST_TRIPLE="aarch64-unknown-linux-android"
457-
llvm_target_arch="AArch64"
458-
;;
459-
android-armv7)
460-
SWIFT_HOST_TRIPLE="armv7-unknown-linux-androideabi"
461-
llvm_target_arch="ARM"
462-
;;
463-
android-x86_64)
464-
SWIFT_HOST_TRIPLE="x86_64-unknown-linux-android${ANDROID_API_LEVEL}"
465-
llvm_target_arch="X86"
455+
android-*)
456+
# Clang uses a different sysroot natively on Android in the Termux
457+
# app, which the Termux build scripts pass in through a $PREFIX
458+
# variable.
459+
if [[ "${PREFIX}" ]] ; then
460+
llvm_cmake_options+=(
461+
-DDEFAULT_SYSROOT:STRING="$(dirname ${PREFIX})"
462+
)
463+
fi
464+
# Android doesn't support building all of compiler-rt yet.
465+
if [[ ! $(is_cross_tools_host "${host}") ]] ; then
466+
llvm_cmake_options+=(
467+
-DCOMPILER_RT_INCLUDE_TESTS:BOOL=FALSE
468+
)
469+
fi
470+
case ${host} in
471+
android-aarch64)
472+
SWIFT_HOST_TRIPLE="aarch64-unknown-linux-android"
473+
llvm_target_arch="AArch64"
474+
;;
475+
android-armv7)
476+
SWIFT_HOST_TRIPLE="armv7-unknown-linux-androideabi"
477+
llvm_target_arch="ARM"
478+
;;
479+
android-x86_64)
480+
SWIFT_HOST_TRIPLE="x86_64-unknown-linux-android${ANDROID_API_LEVEL}"
481+
llvm_target_arch="X86"
482+
;;
483+
esac
466484
;;
467485
linux-armv6)
468486
SWIFT_HOST_TRIPLE="armv6-unknown-linux-gnueabihf"
@@ -1749,7 +1767,8 @@ for host in "${ALL_HOSTS[@]}"; do
17491767
)
17501768
fi
17511769

1752-
if [[ ! "${SKIP_BUILD_ANDROID}" ]]; then
1770+
if [[ ! "${SKIP_BUILD_ANDROID}" ]] ||
1771+
[[ $(is_cross_tools_host ${host}) && "${host}" == "android-"* ]]; then
17531772
cmake_options=(
17541773
"${cmake_options[@]}"
17551774
-DSWIFT_ANDROID_NDK_PATH:STRING="${ANDROID_NDK}"
@@ -2440,6 +2459,8 @@ for host in "${ALL_HOSTS[@]}"; do
24402459
elif [[ "$(uname -s)" == "Haiku" ]] ; then
24412460
HOST_CXX_HEADERS_DIR="/boot/system/develop/headers/c++"
24422461
elif [[ "${ANDROID_DATA}" ]] ; then
2462+
# This means we're building natively on Android in the Termux
2463+
# app, which supplies the $PREFIX variable.
24432464
HOST_CXX_HEADERS_DIR="$PREFIX/include/c++"
24442465
else # Linux
24452466
HOST_CXX_HEADERS_DIR="/usr/include/c++"

0 commit comments

Comments
 (0)