Skip to content

Commit 3999f1c

Browse files
committed
Add post-install script to SDK bundle
1 parent fa6c880 commit 3999f1c

File tree

1 file changed

+46
-28
lines changed

1 file changed

+46
-28
lines changed

swift-ci/sdks/android/scripts/build.sh

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -326,8 +326,9 @@ for arch in $archs; do
326326
-DOPENSSL_INCLUDE_DIR=$sdk_root/usr/include \
327327
-DOPENSSL_SSL_LIBRARY=$sdk_root/usr/lib/libssl.a \
328328
-DOPENSSL_CRYPTO_LIBRARY=$sdk_root/usr/lib/libcrypto.a \
329-
-DCURL_USE_OPENSSL=ON \
330329
-DCURLSSLOPT_NATIVE_CA=ON \
330+
-DCURL_USE_OPENSSL=ON \
331+
-DCURL_USE_LIBSSH2=OFF \
331332
-DTHREADS_PREFER_PTHREAD_FLAG=OFF \
332333
-DCMAKE_THREAD_PREFER_PTHREAD=OFF \
333334
-DCMAKE_THREADS_PREFER_PTHREAD_FLAG=OFF \
@@ -486,52 +487,69 @@ if [[ ${INCLUDE_NDK_SYSROOT} != 1 ]]; then
486487
#ANDROID_NDK_HOME="/opt/homebrew/share/android-ndk"
487488
mkdir scripts/
488489
cat > scripts/setup-android-sdk.sh <<'EOF'
489-
#/bin/sh
490+
#/bin/bash
490491
# this script will setup the ndk-sysroot with links to the
491492
# local installation indicated by ANDROID_NDK_HOME
492493
set -e
493494
if [ -z "${ANDROID_NDK_HOME}" ]; then
494495
echo "$(basename $0): error: missing environment variable ANDROID_NDK_HOME"
495496
exit 1
496497
fi
497-
PREBUILT="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt"
498-
if [ ! -d "${PREBUILT}" ]; then
499-
echo "$(basename $0): error: ANDROID_NDK_HOME not found: ${PREBUILT}"
498+
ndk_prebuilt="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt"
499+
if [ ! -d "${ndk_prebuilt}" ]; then
500+
echo "$(basename $0): error: ANDROID_NDK_HOME not found: ${ndk_prebuilt}"
501+
exit 1
502+
fi
503+
504+
#Pkg.Revision = 27.0.12077973
505+
#Pkg.Revision = 28.1.13356709
506+
ndk_version=$(grep '^Pkg.Revision = ' "${ANDROID_NDK_HOME}/source.properties" | cut -f3- -d' ' | cut -f 1 -d '.')
507+
if [[ "${ndk_version}" -lt 27 ]]; then
508+
echo "$(basename $0): error: minimum NDK version 27 required; found ${ndk_version} in ${ANDROID_NDK_HOME}/source.properties"
500509
exit 1
501510
fi
502-
DESTINATION=$(dirname $(dirname $(realpath $0)))/ndk-sysroot
503-
# clear out any previous NDK setup
504-
rm -rf ${DESTINATION}
505511
506-
# copy vs. link the NDK files
512+
cd $(dirname $(dirname $(realpath $0)))
513+
swift_resources=swift-resources
514+
ndk_sysroot=ndk-sysroot
515+
516+
if [[ -d "${ndk_sysroot}" ]]; then
517+
# clear out any previous NDK setup
518+
rm -rf ${ndk_sysroot}
519+
ndk_re="re-"
520+
fi
521+
522+
523+
# link vs. copy the NDK files
507524
SWIFT_ANDROID_NDK_LINK=${SWIFT_ANDROID_NDK_LINK:-1}
508-
if [[ "${SWIFT_ANDROID_NDK_LINK}" != 1 ]]; then
509-
ANDROID_NDK_DESC="copied"
510-
cp -a ${PREBUILT}/*/sysroot ${DESTINATION}
511-
else
512-
ANDROID_NDK_DESC="linked"
513-
mkdir -p ${DESTINATION}/usr/lib
514-
ln -s $(realpath ${PREBUILT}/*/sysroot/usr/include) ${DESTINATION}/usr/include
515-
for triplePath in ${PREBUILT}/*/sysroot/usr/lib/*; do
525+
if [[ "${SWIFT_ANDROID_NDK_LINK}" == 1 ]]; then
526+
ndk_action="${ndk_re}linked"
527+
mkdir -p ${ndk_sysroot}/usr/lib
528+
ln -s ${ndk_prebuilt}/*/sysroot/usr/include ${ndk_sysroot}/usr/include
529+
for triplePath in ${ndk_prebuilt}/*/sysroot/usr/lib/*; do
516530
triple=$(basename ${triplePath})
517-
ln -s $(realpath ${triplePath}) ${DESTINATION}/usr/lib/${triple}
531+
ln -s ${triplePath} ${ndk_sysroot}/usr/lib/${triple}
518532
done
533+
else
534+
ndk_action="${ndk_re}copied"
535+
cp -a ${ndk_prebuilt}/*/sysroot ${ndk_sysroot}
519536
fi
520537
521538
# copy each architecture's swiftrt.o into the sysroot,
522539
# working around https://github.com/swiftlang/swift/pull/79621
523-
for swiftrt in ${DESTINATION}/../swift-resources/usr/lib/swift-*/android/*/swiftrt.o; do
524-
arch=$(basename $(dirname ${swiftrt}))
525-
mkdir -p ${DESTINATION}/usr/lib/swift/android/${arch}
526-
cp -a ${swiftrt} ${DESTINATION}/usr/lib/swift/android/${arch}
527-
done
528-
for swiftrt in ${DESTINATION}/../swift-resources/usr/lib/swift_static-*/android/*/swiftrt.o; do
529-
arch=$(basename $(dirname ${swiftrt}))
530-
mkdir -p ${DESTINATION}/usr/lib/swift_static/android/${arch}
531-
cp -a ${swiftrt} ${DESTINATION}/usr/lib/swift_static/android/${arch}
540+
for folder in swift swift_static; do
541+
for swiftrt in ${swift_resources}/usr/lib/${folder}-*/android/*/swiftrt.o; do
542+
arch=$(basename $(dirname ${swiftrt}))
543+
mkdir -p ${ndk_sysroot}/usr/lib/${folder}/android/${arch}
544+
if [[ "${SWIFT_ANDROID_NDK_LINK}" == 1 ]]; then
545+
ln -s ../../../../../../${swiftrt} ${ndk_sysroot}/usr/lib/${folder}/android/${arch}/
546+
else
547+
cp -a ${swiftrt} ${ndk_sysroot}/usr/lib/${folder}/android/${arch}/
548+
fi
549+
done
532550
done
533551
534-
echo "$(basename $0): success: ndk-sysroot ${ANDROID_NDK_DESC} to Android SDK"
552+
echo "$(basename $0): success: ndk-sysroot ${ndk_action} to Android NDK at ${ndk_prebuilt}"
535553
EOF
536554
chmod +x scripts/setup-android-sdk.sh
537555
else

0 commit comments

Comments
 (0)