Skip to content

Swift 6.0

Swift 6.0 #176

name: Build Android Toolchain
on:
# Trigger the workflow on push or pull request,
# but only for the master branch
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build-swift-android-arm-64:
runs-on: ubuntu-20.04
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
- name: Clone scripts
uses: actions/checkout@v1
- name: Install NDK
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
run: ./build/Linux/003-define-build-folders.sh
- name: Clone Swift
run: ./build/Linux/020-clone-swift.sh
- name: Cache Swift Arm64
id: cache-swift-arm-64
uses: actions/cache@v2
with:
path: ~/out/swift-android/lib
key: ${{ runner.os }}-stdlib-arm64-${{ hashFiles('.swift.sum') }}
- name: Build Swift
if: steps.cache-swift-arm-64.outputs.cache-hit != 'true'
run: ./build/Linux/031-build-swift-arm64.sh
- uses: actions/upload-artifact@v4
with:
name: swift-android-arm64-v8a
path: ~/out/swift-android/lib
build-swift-android-armeabi-v7a:
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
run: ./build/Linux/003-define-build-folders.sh
- name: Clone Swift
run: ./build/Linux/020-clone-swift.sh
- name: Cache Swift Arm 32
id: cache-swift-arm-32
uses: actions/cache@v2
with:
path: ~/out/swift-android/lib
key: ${{ runner.os }}-stdlib-arm32-${{ hashFiles('.swift.sum') }}
- name: Build Swift
if: steps.cache-swift-arm-32.outputs.cache-hit != 'true'
run: ./build/Linux/032-build-swift-arm.sh
- uses: actions/upload-artifact@v4
with:
name: swift-android-armeabi-v7a
path: ~/out/swift-android/lib
build-swift-android-x86_64:
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
run: ./build/Linux/003-define-build-folders.sh
- name: Clone Swift
run: ./build/Linux/020-clone-swift.sh
- name: Cache Swift x86_64
id: cache-swift-x86_64
uses: actions/cache@v2
with:
path: ~/out/swift-android/lib
key: ${{ runner.os }}-stdlib-x86_64-${{ hashFiles('.swift.sum') }}
- name: Build Swift
if: steps.cache-swift-x86_64.outputs.cache-hit != 'true'
run: ./build/Linux/033-build-swift-x86_64.sh
- uses: actions/upload-artifact@v4
with:
name: swift-android-x86_64
path: ~/out/swift-android/lib
build-icu-android:
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Cache ICU
id: cache-icu
uses: actions/cache@v2
with:
path: |
~/icu/build-aarch64-linux-android/lib
~/icu/build-armv7a-linux-androideabi/lib
~/icu/build-x86_64-linux-android/lib
~/icu/build-i686-linux-android/lib
key: icu-73-2-r5
- name: Install dependencies
if: steps.cache-icu.outputs.cache-hit != 'true'
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
if: steps.cache-icu.outputs.cache-hit != 'true'
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
if: steps.cache-icu.outputs.cache-hit != 'true'
run: ./build/Linux/003-define-build-folders.sh
- name: Build ICU
if: steps.cache-icu.outputs.cache-hit != 'true'
run: ./build/Linux/040-build-icu.sh
- uses: actions/upload-artifact@v4
with:
name: icu-arm64-v8a
path: ~/icu/build-aarch64-linux-android/lib
- uses: actions/upload-artifact@v4
with:
name: icu-armeabi-v7a
path: ~/icu/build-armv7a-linux-androideabi/lib
- uses: actions/upload-artifact@v4
with:
name: icu-x86_64
path: ~/icu/build-x86_64-linux-android/lib
- uses: actions/upload-artifact@v4
with:
name: icu-x86
path: ~/icu/build-i686-linux-android/lib
build-openssl-android:
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Cache OpenSSL
id: cache-openssl
uses: actions/cache@v2
with:
path: |
~/openssl/arm64
~/openssl/arm
~/openssl/x86_64
~/openssl/x86
key: openssl-1.1.1w-r4
- name: Install dependencies
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: ./build/Linux/003-define-build-folders.sh
- name: Build OpenSSL
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: ./build/Linux/041-build-openssl.sh
- uses: actions/upload-artifact@v4
with:
name: openssl-arm64-v8a
path: ~/openssl/arm64
- uses: actions/upload-artifact@v4
with:
name: openssl-armeabi-v7a
path: ~/openssl/arm
- uses: actions/upload-artifact@v4
with:
name: openssl-x86_64
path: ~/openssl/x86_64
- uses: actions/upload-artifact@v4
with:
name: openssl-x86
path: ~/openssl/x86
build-curl-android:
needs: [build-openssl-android]
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Cache curl
id: cache-curl
uses: actions/cache@v2
with:
path: |
~/curl/arm64
~/curl/arm
~/curl/x86_64
~/curl/x86
key: curl-7_88_1-r10
- name: Install dependencies
if: steps.cache-curl.outputs.cache-hit != 'true'
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
if: steps.cache-curl.outputs.cache-hit != 'true'
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
if: steps.cache-curl.outputs.cache-hit != 'true'
run: ./build/Linux/003-define-build-folders.sh
- uses: actions/download-artifact@v4
if: steps.cache-curl.outputs.cache-hit != 'true'
with:
name: openssl-arm64-v8a
path: ~/openssl/arm64
- uses: actions/download-artifact@v4
if: steps.cache-curl.outputs.cache-hit != 'true'
with:
name: openssl-armeabi-v7a
path: ~/openssl/arm
- uses: actions/download-artifact@v4
if: steps.cache-curl.outputs.cache-hit != 'true'
with:
name: openssl-x86
path: ~/openssl/x86
- uses: actions/download-artifact@v4
if: steps.cache-curl.outputs.cache-hit != 'true'
with:
name: openssl-x86_64
path: ~/openssl/x86_64
- name: Build cURL
if: steps.cache-curl.outputs.cache-hit != 'true'
run: ./build/Linux/042-build-curl.sh
- uses: actions/upload-artifact@v4
with:
name: curl-arm64-v8a
path: ~/curl/arm64
- uses: actions/upload-artifact@v4
with:
name: curl-armeabi-v7a
path: ~/curl/arm
- uses: actions/upload-artifact@v4
with:
name: curl-x86_64
path: ~/curl/x86_64
- uses: actions/upload-artifact@v4
with:
name: curl-x86
path: ~/curl/x86
build-libxml-android:
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Cache libxml
id: cache-libxml
uses: actions/cache@v2
with:
path: |
~/libxml/arm64
~/libxml/arm
~/libxml/x86_64
~/libxml/x86
key: libxmlv2.9.14-r5
- name: Install dependencies
if: steps.cache-libxml.outputs.cache-hit != 'true'
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
if: steps.cache-libxml.outputs.cache-hit != 'true'
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
if: steps.cache-libxml.outputs.cache-hit != 'true'
run: ./build/Linux/003-define-build-folders.sh
- name: Build libXML
if: steps.cache-libxml.outputs.cache-hit != 'true'
run: ./build/Linux/043-build-libxml.sh
- uses: actions/upload-artifact@v4
with:
name: libxml-arm64-v8a
path: ~/libxml/arm64
- uses: actions/upload-artifact@v4
with:
name: libxml-armeabi-v7a
path: ~/libxml/arm
- uses: actions/upload-artifact@v4
with:
name: libxml-x86_64
path: ~/libxml/x86_64
- uses: actions/upload-artifact@v4
with:
name: libxml-x86
path: ~/libxml/x86
build-swift-corelibs-android-arm-64:
needs: [build-icu-android, build-openssl-android, build-curl-android, build-libxml-android, build-swift-android-arm-64]
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
run: ./build/Linux/003-define-build-folders.sh
- uses: actions/download-artifact@v4
with:
name: icu-arm64-v8a
path: ~/icu/build-aarch64-linux-android
- uses: actions/download-artifact@v4
with:
name: openssl-arm64-v8a
path: ~/openssl/arm64
- uses: actions/download-artifact@v4
with:
name: curl-arm64-v8a
path: ~/curl/arm64
- uses: actions/download-artifact@v4
with:
name: libxml-arm64-v8a
path: ~/libxml/arm64
- uses: actions/download-artifact@v4
with:
name: swift-android-arm64-v8a
path: ~/swift-android/lib
- name: Copy andorid stdlibs to swift toolchain
run: cp -r ~/swift-android/lib/swift/android ~/swift-toolchain/usr/lib/swift
- name: Clone Swift
run: ./build/Linux/020-clone-swift.sh
- name: Build Corelibs
run: ./build/Linux/052-build-corelibs.sh arm64 aarch64 aarch64-linux-android arm64-v8a aarch64-linux-android
- uses: actions/upload-artifact@v4
with:
name: swift-android-clang-libs
path: ~/swift-toolchain/usr/lib/clang
- uses: actions/upload-artifact@v4
with:
name: swift-android-arm64-v8a-libs
path: ~/swift-toolchain/usr/lib/swift-aarch64
build-swift-corelibs-android-armeabi-v7a:
needs: [build-icu-android, build-openssl-android, build-curl-android, build-libxml-android, build-swift-android-armeabi-v7a]
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
run: ./build/Linux/003-define-build-folders.sh
- uses: actions/download-artifact@v4
with:
name: icu-armeabi-v7a
path: ~/icu/build-armv7a-linux-androideabi
- uses: actions/download-artifact@v4
with:
name: openssl-armeabi-v7a
path: ~/openssl/arm
- uses: actions/download-artifact@v4
with:
name: curl-armeabi-v7a
path: ~/curl/arm
- uses: actions/download-artifact@v4
with:
name: libxml-armeabi-v7a
path: ~/libxml/arm
- uses: actions/download-artifact@v4
with:
name: swift-android-armeabi-v7a
path: ~/swift-android/lib
- name: Copy andorid stdlibs to swift toolchain
run: cp -r ~/swift-android/lib/swift/android ~/swift-toolchain/usr/lib/swift
- name: Clone Swift
run: ./build/Linux/020-clone-swift.sh
- name: Build Corelibs
run: ./build/Linux/052-build-corelibs.sh arm armv7 arm-linux-androideabi armeabi-v7a armv7a-linux-androideabi
- uses: actions/upload-artifact@v4
with:
name: swift-android-armeabi-v7a-libs
path: ~/swift-toolchain/usr/lib/swift-armv7
build-swift-corelibs-android-x86_64:
needs: [build-icu-android, build-openssl-android, build-curl-android, build-libxml-android, build-swift-android-x86_64]
runs-on: ubuntu-20.04
container: ubuntu:focal
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: ./build/Linux/000-install-dependencies.sh
- name: Install NDK
run: ./build/Linux/002-install-ndk.sh
- name: Define build folders
run: ./build/Linux/003-define-build-folders.sh
- uses: actions/download-artifact@v4
with:
name: icu-x86_64
path: ~/icu/build-x86_64-linux-android
- uses: actions/download-artifact@v4
with:
name: openssl-x86_64
path: ~/openssl/x86_64
- uses: actions/download-artifact@v4
with:
name: curl-x86_64
path: ~/curl/x86_64
- uses: actions/download-artifact@v4
with:
name: libxml-x86_64
path: ~/libxml/x86_64
- uses: actions/download-artifact@v4
with:
name: swift-android-x86_64
path: ~/swift-android/lib
- name: Copy andorid stdlibs to swift toolchain
run: cp -r ~/swift-android/lib/swift/android ~/swift-toolchain/usr/lib/swift
- name: Clone Swift
run: ./build/Linux/020-clone-swift.sh
- name: Build Corelibs
run: ./build/Linux/052-build-corelibs.sh x86_64 x86_64 x86_64-linux-android x86_64 x86_64-linux-android
- uses: actions/upload-artifact@v4
with:
name: swift-android-x86_64-libs
path: ~/swift-toolchain/usr/lib/swift-x86_64
build-swift-mac-x86_64:
runs-on: macos-14
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: ./build/macOS/000-install-dependencies.sh
- name: Clone Swift
run: ./build/macOS/010-clone-swift.sh
- name: Cache Swift Mac
id: cache-swift-mac
uses: actions/cache@v2
with:
path: ~/swift-android-bin.tar
key: ${{ runner.os }}-x86_64-${{ hashFiles('.swift.sum') }}
- name: Build Swift
if: steps.cache-swift-mac.outputs.cache-hit != 'true'
run: ./build/macOS/020-build-swift.sh
- name: Build Swift PM
if: steps.cache-swift-mac.outputs.cache-hit != 'true'
run: ./build/macOS/030-build-swiftpm.sh
- name: Collect toolchain bin
if: steps.cache-swift-mac.outputs.cache-hit != 'true'
run: ./build/macOS/040-collect-toolchain-bin.sh
- uses: actions/upload-artifact@v4
with:
name: swift-android-bin
path: ~/swift-android-bin.tar
collect-mac-x86_64-toolchain:
needs: [build-swift-mac-x86_64, build-swift-corelibs-android-arm-64, build-swift-corelibs-android-armeabi-v7a, build-swift-corelibs-android-x86_64]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
- name: Install NDK
run: ./build/Linux/002-install-ndk.sh
- uses: actions/download-artifact@v4
with:
name: swift-android-bin
path: ~/
- name: Unarchive bin
run: cd ~/; tar -xvf swift-android-bin.tar
- uses: actions/download-artifact@v4
with:
name: swift-android-arm64-v8a-libs
path: ~/lib/swift-aarch64
- uses: actions/download-artifact@v4
with:
name: swift-android-armeabi-v7a-libs
path: ~/lib/swift-armv7
- uses: actions/download-artifact@v4
with:
name: swift-android-x86_64-libs
path: ~/lib/swift-x86_64
- uses: actions/download-artifact@v4
with:
name: swift-android-clang-libs
path: ~/lib/clang
- name: Collect toolchain
run: ./build/Linux/060-collect-toolchain.sh
- uses: actions/upload-artifact@v4
with:
name: swift-android
path: ~/out/swift-android.zip