From 1d75bc8c26f2eb6d33dc00538ec6d968aac5d214 Mon Sep 17 00:00:00 2001 From: Amr Aboelela Date: Mon, 11 Sep 2017 20:20:43 -0700 Subject: [PATCH] Added swiftpm and other libs to Android toolchain --- utils/android/README.md | 16 ++++++++++++ utils/android/build-toolchain | 46 ++++++++++++++++++++--------------- 2 files changed, 43 insertions(+), 19 deletions(-) create mode 100644 utils/android/README.md diff --git a/utils/android/README.md b/utils/android/README.md new file mode 100644 index 0000000000000..28ad49b365caa --- /dev/null +++ b/utils/android/README.md @@ -0,0 +1,16 @@ + +# Build Android Toolchain + +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. + +To build the toolchain run: + +``` +android$ ./build-toolchain +``` + +It will be built on: + +``` +path/to/swift-source/swift-android-toolchain +``` diff --git a/utils/android/build-toolchain b/utils/android/build-toolchain index 2d51dc7aacf87..dc51a3cad6680 100755 --- a/utils/android/build-toolchain +++ b/utils/android/build-toolchain @@ -12,29 +12,37 @@ set -e -cd "$(dirname $0)/../.." || exit -SRC_DIR=$PWD +SWIFT_PATH="$( cd "$(dirname $0)/../../.." && pwd )" -ANDROID_NDK_DIR="${ANDROID_NDK_DIR:?Please set the Android NDK directory in the ANDROID_NDK_DIR environment variable}" -ANDROID_ICU_DIR="${ANDROID_ICU_DIR:?Please set the libiconv-libicu-android directory in the ANDROID_ICU_DIR environment variable}" +ANDROID_NDK_PATH="${ANDROID_NDK_PATH:?Please set the Android NDK path in the ANDROID_NDK_PATH environment variable}" +ANDROID_ICU_PATH=${SWIFT_PATH}/libiconv-libicu-android -SWIFT_TOOLCHAIN_DIR="${SRC_DIR}/../swift-android-toolchain" -SWIFT_LINUX_DIR="${SRC_DIR}/../build/Ninja-ReleaseAssert/swift-linux-x86_64" +[ -e ${ANDROID_ICU_PATH} ] || exit 1 -./utils/build-script \ +SWIFT_ANDROID_TOOLCHAIN_PATH="${SWIFT_PATH}/swift-android-toolchain" + +rm -rf ${SWIFT_ANDROID_TOOLCHAIN_PATH} + +${SWIFT_PATH}/swift/utils/build-script \ -R \ --android \ - --android-ndk "${ANDROID_NDK_DIR}" \ + --android-ndk ${ANDROID_NDK_PATH} \ --android-api-level 21 \ - --android-icu-uc "${ANDROID_ICU_DIR}/armeabi-v7a" \ - --android-icu-uc-include "${ANDROID_ICU_DIR}/armeabi-v7a/icu/source/common" \ - --android-icu-i18n "${ANDROID_ICU_DIR}/armeabi-v7a" \ - --android-icu-i18n-include "${ANDROID_ICU_DIR}/armeabi-v7a/icu/source/i18n" || exit - -test -e ${SWIFT_LINUX_DIR} || exit -rm -rf ${SWIFT_TOOLCHAIN_DIR} -mkdir -p ${SWIFT_TOOLCHAIN_DIR}/usr - -cp -r ${SWIFT_LINUX_DIR}/{bin,lib,include} ${SWIFT_TOOLCHAIN_DIR}/usr -cp ${ANDROID_ICU_DIR}/armeabi-v7a/*.so ${SWIFT_TOOLCHAIN_DIR}/usr/lib/swift/android + --android-icu-uc "${ANDROID_ICU_PATH}/armeabi-v7a" \ + --android-icu-uc-include "${ANDROID_ICU_PATH}/armeabi-v7a/icu/source/common" \ + --android-icu-i18n "${ANDROID_ICU_PATH}/armeabi-v7a" \ + --android-icu-i18n-include "${ANDROID_ICU_PATH}/armeabi-v7a/icu/source/i18n" \ + --libdispatch --install-libdispatch \ + --foundation --install-foundation \ + --llbuild --install-llbuild \ + --lldb --install-lldb \ + --swiftpm --install-swiftpm \ + --xctest --install-xctest \ + --install-swift \ + '--swift-install-components=autolink-driver;compiler;clang-builtin-headers;stdlib;swift-remote-mirror;sdk-overlay;dev' \ + --install-prefix=/usr \ + --install-destdir=${SWIFT_ANDROID_TOOLCHAIN_PATH} + +${SWIFT_PATH}/swift-corelibs-libdispatch/build-android +${SWIFT_PATH}/swift-corelibs-foundation/build-android