Skip to content

Commit 1d75bc8

Browse files
committed
Added swiftpm and other libs to Android toolchain
1 parent a851476 commit 1d75bc8

File tree

2 files changed

+43
-19
lines changed

2 files changed

+43
-19
lines changed

utils/android/README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
# Build Android Toolchain
3+
4+
This toolchain will generate the .so and .swiftmodule files of the Swift standard library and Foundation framework for the Android environment, armv7 architecture. Those files are needed when building any Swift library to be included in an application for Android.
5+
6+
To build the toolchain run:
7+
8+
```
9+
android$ ./build-toolchain
10+
```
11+
12+
It will be built on:
13+
14+
```
15+
path/to/swift-source/swift-android-toolchain
16+
```

utils/android/build-toolchain

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,37 @@
1212

1313
set -e
1414

15-
cd "$(dirname $0)/../.." || exit
16-
SRC_DIR=$PWD
15+
SWIFT_PATH="$( cd "$(dirname $0)/../../.." && pwd )"
1716

18-
ANDROID_NDK_DIR="${ANDROID_NDK_DIR:?Please set the Android NDK directory in the ANDROID_NDK_DIR environment variable}"
19-
ANDROID_ICU_DIR="${ANDROID_ICU_DIR:?Please set the libiconv-libicu-android directory in the ANDROID_ICU_DIR environment variable}"
17+
ANDROID_NDK_PATH="${ANDROID_NDK_PATH:?Please set the Android NDK path in the ANDROID_NDK_PATH environment variable}"
18+
ANDROID_ICU_PATH=${SWIFT_PATH}/libiconv-libicu-android
2019

21-
SWIFT_TOOLCHAIN_DIR="${SRC_DIR}/../swift-android-toolchain"
22-
SWIFT_LINUX_DIR="${SRC_DIR}/../build/Ninja-ReleaseAssert/swift-linux-x86_64"
20+
[ -e ${ANDROID_ICU_PATH} ] || exit 1
2321

24-
./utils/build-script \
22+
SWIFT_ANDROID_TOOLCHAIN_PATH="${SWIFT_PATH}/swift-android-toolchain"
23+
24+
rm -rf ${SWIFT_ANDROID_TOOLCHAIN_PATH}
25+
26+
${SWIFT_PATH}/swift/utils/build-script \
2527
-R \
2628
--android \
27-
--android-ndk "${ANDROID_NDK_DIR}" \
29+
--android-ndk ${ANDROID_NDK_PATH} \
2830
--android-api-level 21 \
29-
--android-icu-uc "${ANDROID_ICU_DIR}/armeabi-v7a" \
30-
--android-icu-uc-include "${ANDROID_ICU_DIR}/armeabi-v7a/icu/source/common" \
31-
--android-icu-i18n "${ANDROID_ICU_DIR}/armeabi-v7a" \
32-
--android-icu-i18n-include "${ANDROID_ICU_DIR}/armeabi-v7a/icu/source/i18n" || exit
33-
34-
test -e ${SWIFT_LINUX_DIR} || exit
35-
rm -rf ${SWIFT_TOOLCHAIN_DIR}
36-
mkdir -p ${SWIFT_TOOLCHAIN_DIR}/usr
37-
38-
cp -r ${SWIFT_LINUX_DIR}/{bin,lib,include} ${SWIFT_TOOLCHAIN_DIR}/usr
39-
cp ${ANDROID_ICU_DIR}/armeabi-v7a/*.so ${SWIFT_TOOLCHAIN_DIR}/usr/lib/swift/android
31+
--android-icu-uc "${ANDROID_ICU_PATH}/armeabi-v7a" \
32+
--android-icu-uc-include "${ANDROID_ICU_PATH}/armeabi-v7a/icu/source/common" \
33+
--android-icu-i18n "${ANDROID_ICU_PATH}/armeabi-v7a" \
34+
--android-icu-i18n-include "${ANDROID_ICU_PATH}/armeabi-v7a/icu/source/i18n" \
35+
--libdispatch --install-libdispatch \
36+
--foundation --install-foundation \
37+
--llbuild --install-llbuild \
38+
--lldb --install-lldb \
39+
--swiftpm --install-swiftpm \
40+
--xctest --install-xctest \
41+
--install-swift \
42+
'--swift-install-components=autolink-driver;compiler;clang-builtin-headers;stdlib;swift-remote-mirror;sdk-overlay;dev' \
43+
--install-prefix=/usr \
44+
--install-destdir=${SWIFT_ANDROID_TOOLCHAIN_PATH}
45+
46+
${SWIFT_PATH}/swift-corelibs-libdispatch/build-android
47+
${SWIFT_PATH}/swift-corelibs-foundation/build-android
4048

0 commit comments

Comments
 (0)