{"id":22691858,"url":"https://github.com/cmst0us/aarch64-android28-swift","last_synced_at":"2026-05-13T07:02:55.223Z","repository":{"id":246802940,"uuid":"819313739","full_name":"CmST0us/aarch64-android28-swift","owner":"CmST0us","description":"Swift toolchain for aarch64 android-28","archived":false,"fork":false,"pushed_at":"2024-07-18T06:18:35.000Z","size":20,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-04T17:52:10.287Z","etag":null,"topics":["android","ndk","swift","swift-toolchain"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CmST0us.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-24T09:00:59.000Z","updated_at":"2024-09-27T02:22:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"568f24b8-7e71-461b-b1e8-e4787d2e8bcc","html_url":"https://github.com/CmST0us/aarch64-android28-swift","commit_stats":null,"previous_names":["cmst0us/aarch64-android28-swift"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CmST0us%2Faarch64-android28-swift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CmST0us%2Faarch64-android28-swift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CmST0us%2Faarch64-android28-swift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CmST0us%2Faarch64-android28-swift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CmST0us","download_url":"https://codeload.github.com/CmST0us/aarch64-android28-swift/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246215817,"owners_count":20741894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","ndk","swift","swift-toolchain"],"created_at":"2024-12-10T01:12:39.820Z","updated_at":"2026-05-13T07:02:55.155Z","avatar_url":"https://github.com/CmST0us.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aarch64-unknown-linux-android28 Toolchain\nSwift Toolchian for aarch64-unknown-linux-android28\n\n# Current support Swift version\n\n* `5.10.1`\n\n# How to install in macOS host\n\n1. Firstly you need to install official swift version `5.10.1`, download it from https://swift.org\n\n2. Decompression file `swift-5.10.1-runtime-aarch64-unknown-linux-android28.tar.gz` into `/Library/Developer/Runtimes/aarch64-unknown-linux-android28`:\n```bash\nmkdir -p /Library/Developer/Runtimes/aarch64-unknown-linux-android28\ntar xf swift-5.10.1-runtime-aarch64-unknown-linux-android28.tar.gz -C /Library/Developer/Runtimes/swift-5.10.1-runtime-aarch64-unknown-linux-android28\n```\n\n1. Generate destination json file:\n```bash\ncd Destinations\n./generate_darwin.sh\n# Enter runtime sdk install path: Library/Developer/Runtimes/swift-5.10.1-runtime-aarch64-unknown-linux-android28\n# Enter the Swift compiler (swiftc) path: /path/to/offical/swift-5.10.1/swiftc\n# Enter Enter the NDK(26d) installation path:\n```\n\n1. Copy generated destination json file:\n```bash\nmkdir -p /Library/Developer/Destinations\ncp Destination/aarch64-android28-static.json /Library/Developer/Destinations\ncp Destination/aarch64-android28.json /Library/Developer/Destinations\n```\n\n# How to test in android target\n\nYou need to upload runtime libraries into you aarch64 android device.\n```\nadb push /Library/Developer/Runtimes/swift-5.10.1-runtime-aarch64-unknown-linux-android28/usr/lib/swift/android/*.so /data/local/tmp\n\n# Then you can build an test executable app using:\nswift build --destination /Library/Developer/Destinations/aarch64-android28.json\nadb push .build/debug/\u003cYourApp\u003e /data/local/tmp\n\n# Then run in your android device\nadb shell\ncd /data/local/tmp\nLD_LIBRARY_PATH=. ./\u003cYourApp\u003e\n```\n\nAlso, you can build static. With static building, you not need to copy android swift runtime so.\n\n\n# How to build App\n\nCreate an example project\n\n```\nswift package init --type executable\nswift build --destination /Library/Developer/Destinations/aarch64-android28.json\n```\n\nBuild Static\n```\nswift package init --type executable\nswift build --destination /Library/Developer/Destinations/aarch64-android28-static.json --static-swift-stdlib\n```\n\nAfter building success, you can upload binary to you target device, and run it.\n\n\n--------------\n# How to build swift for aarch64-unknown-linux-android28\n\n## Dependence\n\nBuild system: `Ubuntu 22.04`\n\n### Install packages for compile\n\nReference: [https://github.com/apple/swift-docker/blob/main/swift-ci/master/ubuntu/22.04/Dockerfile]()\n\n```bash\napt-get -y update \u0026\u0026 apt-get -y install \\\n  build-essential       \\\n  cmake                 \\\n  git                   \\\n  icu-devtools          \\\n  libcurl4-openssl-dev  \\\n  libedit-dev           \\\n  libicu-dev            \\\n  libncurses5-dev       \\\n  libpython3-dev        \\\n  libsqlite3-dev        \\\n  libxml2-dev           \\\n  ninja-build           \\\n  pkg-config            \\\n  python2               \\\n  python-six            \\\n  python2-dev           \\\n  python3-six           \\\n  python3-distutils     \\\n  python3-pkg-resources \\\n  python3-psutil        \\\n  rsync                 \\\n  swig                  \\\n  systemtap-sdt-dev     \\\n  tzdata                \\\n  uuid-dev              \\\n  zip\n```\n\n### Prepare compile workspace\nCreate an empty folder, which is used as our compile workspace.\n```bash\nmkdir workspace\ncd workspace\nexport WORKSPACE_SWIFT_AARCH64_ANDROID=`pwd`\n```\n\n### Download NDK Toolchain\nBe careful to the version of ndk, we need `26d`\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID\nwget https://dl.google.com/android/repository/android-ndk-r26d-linux.zip\nunzip android-ndk-r26d-linux.zip\n```\n\n### Download the same version of swift toolchain\nFor example, if we are compiling swift-5.10.1, we need to download offical version of swift-5.10.1.\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID\nwget https://download.swift.org/swift-5.10.1-release/ubuntu2204/swift-5.10.1-RELEASE/swift-5.10.1-RELEASE-ubuntu22.04.tar.gz\ntar xzf swift-5.10.1-RELEASE-ubuntu22.04.tar.gz\n```\n\n### Download swift source code\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID\nmkdir swift-project\ncd swift-project\ngit clone https://github.com/apple/swift.git swift\ncd swift\nutils/update-checkout --clone --tag swift-5.10.1-RELEASE\n```\n\n## Patch source code\n\n### Apply patch\nusing patch `Patch/swift.patch`\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID/swift-project/swift\ngit apply /patch/to/repo/aarch64-android28-swift/Patch/swift.patch\n```\nusing patch `Patch/swift-corelibs-foundation.patch`\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID/swift-project/swift-corelibs-foundation.path\ngit apply /patch/to/repo/aarch64-android28-swift/Patch/swift-corelibs-foundation.path\n```\n\n## Start build\n\n### Build Swift\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID/swift-project/swift\nexport NDK_PATH=$WORKSPACE_SWIFT_AARCH64_ANDROID/android-ndk-r26d\nexport SWIFT_PATH=$WORKSPACE_SWIFT_AARCH64_ANDROID/swift-5.10.1-RELEASE-ubuntu22.04/usr/bin\nexport INSTALL_PATH=$WORKSPACE_SWIFT_AARCH64_ANDROID/install\nexport PATH=$PATH:$SWIFT_PATH\n\nutils/build-script --preset buildbot_linux_crosscompile_android,tools=RA,stdlib=RD,build,aarch64 \\\n\tndk_path=$NDK_PATH \\\n\ttoolchain_path=$SWIFT_PATH \\\n\tinstall_destdir=$INSTALL_PATH \\\n\tinstallable_package=$INSTALL_PATH/../aarch64-unknown-linux-android28-runtime.tar.gz\n```\n\n    TODO: If build error you need to copy ndk libclang-rt.so info swift-linux-x86_64/lib/linux\n\n### Build libdispatch\n#### Static\n```bash\nWORKSPACE_SWIFT_ANDROID=$WORKSPACE_SWIFT_AARCH64_ANDROID\nNDK_PATH=$WORKSPACE_SWIFT_ANDROID/android-ndk-r26d\nABI=\"arm64-v8a\"\nINSTALL_DIR_PATH=$WORKSPACE_SWIFT_ANDROID/install\nSWIFT_NATIVE_TOOLCHAIN_PATH=$WORKSPACE_SWIFT_ANDROID/swift-5.10.1-RELEASE-ubuntu22.04/usr/bin/\nSWIFT_SOURCE_ROOT=$WORKSPACE_SWIFT_ANDROID/swift-project/\nSWIFT_BUILD_PRODUCT_PATH=${SWIFT_SOURCE_ROOT}/build/buildbot_linux\nNINJA_EXEC=$SWIFT_BUILD_PRODUCT_PATH/ninja-build/ninja\n\nrm -rf $SWIFT_BUILD_PRODUCT_PATH/libdispatch-android-aarch64\nmkdir -p $SWIFT_BUILD_PRODUCT_PATH/libdispatch-android-aarch64\ncd $SWIFT_BUILD_PRODUCT_PATH/libdispatch-android-aarch64\n\ncmake -G Ninja \\\n    -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/android.toolchain.cmake \\\n    -DANDROID_ABI=$ABI \\\n    -DANDROID_NDK=$NDK_PATH \\\n    -DANDROID_PLATFORM=android-28 \\\n    \\\n    -DCMAKE_MAKE_PROGRAM=$NINJA_EXEC \\\n    -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR_PATH}/usr \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DBUILD_SHARED_LIBS=OFF \\\n    -DENABLE_SWIFT=ON \\\n    -DCMAKE_Swift_COMPILER=\"${SWIFT_NATIVE_TOOLCHAIN_PATH}/swiftc\" \\\n    -DCMAKE_Swift_FLAGS=\"-target aarch64-unknown-linux-android28 -tools-directory ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/ -sdk ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot -resource-dir $SWIFT_BUILD_PRODUCT_PATH/swift-linux-x86_64/lib/swift\" \\\n    ../../../swift-corelibs-libdispatch\n\n$NINJA_EXEC -C .\n$NINJA_EXEC -C . install\n```\n\n#### Dynamic\n```bash\nWORKSPACE_SWIFT_ANDROID=$WORKSPACE_SWIFT_AARCH64_ANDROID\nNDK_PATH=$WORKSPACE_SWIFT_ANDROID/android-ndk-r26d\nABI=\"arm64-v8a\"\nINSTALL_DIR_PATH=$WORKSPACE_SWIFT_ANDROID/install\nSWIFT_NATIVE_TOOLCHAIN_PATH=$WORKSPACE_SWIFT_ANDROID/swift-5.10.1-RELEASE-ubuntu22.04/usr/bin/\nSWIFT_SOURCE_ROOT=$WORKSPACE_SWIFT_ANDROID/swift-project/\nSWIFT_BUILD_PRODUCT_PATH=${SWIFT_SOURCE_ROOT}/build/buildbot_linux\nNINJA_EXEC=$SWIFT_BUILD_PRODUCT_PATH/ninja-build/ninja\n\nrm -rf $SWIFT_BUILD_PRODUCT_PATH/libdispatch-android-aarch64\nmkdir -p $SWIFT_BUILD_PRODUCT_PATH/libdispatch-android-aarch64\ncd $SWIFT_BUILD_PRODUCT_PATH/libdispatch-android-aarch64\n\ncmake -G Ninja \\\n    -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/android.toolchain.cmake \\\n    -DANDROID_ABI=$ABI \\\n    -DANDROID_NDK=$NDK_PATH \\\n    -DANDROID_PLATFORM=android-28 \\\n    \\\n    -DCMAKE_MAKE_PROGRAM=$NINJA_EXEC \\\n    -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR_PATH}/usr \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DBUILD_SHARED_LIBS=ON \\\n    -DENABLE_SWIFT=ON \\\n    -DCMAKE_Swift_COMPILER=\"${SWIFT_NATIVE_TOOLCHAIN_PATH}/swiftc\" \\\n    -DCMAKE_Swift_FLAGS=\"-target aarch64-unknown-linux-android28 -tools-directory ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/ -sdk ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot -resource-dir $SWIFT_BUILD_PRODUCT_PATH/swift-linux-x86_64/lib/swift\" \\\n    ../../../swift-corelibs-libdispatch\n\n$NINJA_EXEC -C .\n$NINJA_EXEC -C . install\n```\n\n### Build Foundation\n\n#### Build icu\nDownload android libiconv from github: `https://github.com/pelya/libiconv-libicu-android.git`\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID\ngit clone https://github.com/pelya/libiconv-libicu-android.git\ncd libiconv-libicu-android\n```\n\nApply patch `Patch/libiconv-libicu-android.patch`\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID/libiconv-libicu-android\ngit apply /patch/to/repo/aarch64-android28-swift/Patch/libiconv-libicu-android.patch\n```\n\n```bash\nPATH=$PATH:$WORKSPACE_SWIFT_AARCH64_ANDROID/android-ndk-r26d SHARED_ICU=1 ./build.sh\n```\n\n#### Build curl\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID\ngit clone https://github.com/ibaoger/libcurl-android.git\ncd libcurl-android\nexport NDK_ROOT=$WORKSPACE_SWIFT_AARCH64_ANDROID/android-ndk-r26d\n./build_for_android.sh\n```\n\n#### Build xml\n```bash\ncd $WORKSPACE_SWIFT_AARCH64_ANDROID\ngit clone https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/external/libxml2\ncd libxml2\nNDK_PATH=$WORKSPACE_SWIFT_AARCH64_ANDROID/android-ndk-r26d\nABI=arm64-v8a\nINSTALL_PATH=$WORKSPACE_SWIFT_AARCH64_ANDROID/libxml2/out/$ABI\nrm -rf $ABI\nmkdir $ABI\ncd $ABI\ncmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/android.toolchain.cmake \\\n    -DANDROID_ABI=$ABI \\\n    -DANDROID_NDK=$NDK_PATH \\\n    -DANDROID_PLATFORM=android-28 \\\n    -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DLIBXML2_WITH_PYTHON=OFF \\\n    -DLIBXML2_WITH_ICONV=OFF \\\n    -DLIBXML2_WITH_TESTS=OFF \\\n    -DLIBXML2_WITH_PROGRAMS=OFF \\\n    -DBUILD_SHARED_LIBS=ON \\\n    ../\n\ncmake --build .\ncmake --install .\n\ncd ..\nrm -rf $ABI\nmkdir $ABI\ncd $ABI\ncmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/android.toolchain.cmake \\\n    -DANDROID_ABI=$ABI \\\n    -DANDROID_NDK=$NDK_PATH \\\n    -DANDROID_PLATFORM=android-28 \\\n    -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DLIBXML2_WITH_PYTHON=OFF \\\n    -DLIBXML2_WITH_ICONV=OFF \\\n    -DLIBXML2_WITH_TESTS=OFF \\\n    -DLIBXML2_WITH_PROGRAMS=OFF \\\n    -DBUILD_SHARED_LIBS=OFF \\\n    ../\n\ncmake --build .\ncmake --install .\n```\n\n#### Build Foundation\n##### Dynamic\n```bash\nWORKSPACE_SWIFT_ANDROID=$WORKSPACE_SWIFT_AARCH64_ANDROID\nNDK_PATH=$WORKSPACE_SWIFT_ANDROID/android-ndk-r26d\nABI=arm64-v8a\nINSTALL_DIR_PATH=$WORKSPACE_SWIFT_ANDROID/install\nSWIFT_NATIVE_TOOLCHAIN_PATH=$WORKSPACE_SWIFT_ANDROID/swift-5.10.1-RELEASE-ubuntu22.04/usr/bin/\nSWIFT_SOURCE_ROOT=$WORKSPACE_SWIFT_ANDROID/swift-project/\nSWIFT_BUILD_PRODUCT_PATH=${SWIFT_SOURCE_ROOT}/build/buildbot_linux\nNINJA_EXEC=$SWIFT_BUILD_PRODUCT_PATH/ninja-build/ninja\nLIBICONV_BUILD_PATH=$WORKSPACE_SWIFT_ANDROID/libiconv-libicu-android/$ABI\nICU_ROOT=${SWIFT_BUILD_PRODUCT_PATH}/libicu-android-arm64/tmp_install\nICU_LIBDIR=${SWIFT_BUILD_PRODUCT_PATH}/libicu-android-arm64/lib\nLIBCURL_BUILD_PATH=$WORKSPACE_SWIFT_ANDROID/libcurl-android/jni/build/curl/$ABI\nLIBCURL_ROOT=${SWIFT_BUILD_PRODUCT_PATH}/libcurl-android-arm64/tmp_install\nLIBCURL_LIBDIR=${SWIFT_BUILD_PRODUCT_PATH}/libcurl-android-arm64/lib\nLIBXML2_BUILD_PATH=$WORKSPACE_SWIFT_ANDROID/libxml2/out/$ABI\nLIBXML2_ROOT=${SWIFT_BUILD_PRODUCT_PATH}/libxml2-android-arm64/tmp_install\nLIBXML2_LIBDIR=${SWIFT_BUILD_PRODUCT_PATH}/libxml2-android-arm64/lib\n\nrm -rf ${SWIFT_BUILD_PRODUCT_PATH}/libicu-android-arm64\nmkdir -p ${ICU_ROOT}/include\nmkdir -p ${ICU_LIBDIR}\n\n# libiconv\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicudata.so` ${ICU_LIBDIR}/libicudataswift.so\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicuuc.so` ${ICU_LIBDIR}/libicuucswift.so\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicui18n.so` ${ICU_LIBDIR}/libicui18nswift.so\n\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicudata.a` ${ICU_LIBDIR}/libicudataswift.a\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicuuc.a` ${ICU_LIBDIR}/libicuucswift.a\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicui18n.a` ${ICU_LIBDIR}/libicui18nswift.a\n\ncp -rf ${LIBICONV_BUILD_PATH}/include/unicode ${ICU_ROOT}/include\n\n\n# libcurl\nrm -rf ${SWIFT_BUILD_PRODUCT_PATH}/libcurl-android-arm64\nmkdir -p ${LIBCURL_ROOT}/include\nmkdir -p ${LIBCURL_LIBDIR}\n\ncp -rf `readlink -e ${LIBCURL_BUILD_PATH}/lib/libcurl.so` ${LIBCURL_LIBDIR}/libcurlswift.so\ncp -rf `readlink -e ${LIBCURL_BUILD_PATH}/lib/libcurl.a` ${LIBCURL_LIBDIR}/libcurlswift.a\ncp -rf $LIBCURL_BUILD_PATH/include/curl $LIBCURL_ROOT/include\n\n# libxml\nrm -rf ${SWIFT_BUILD_PRODUCT_PATH}/libxml2-android-arm64\nmkdir -p ${LIBXML2_ROOT}/include\nmkdir -p ${LIBXML2_LIBDIR}\n\ncp -rf `readlink -e ${LIBXML2_BUILD_PATH}/lib/libxml2.so` ${LIBXML2_LIBDIR}/libxml2swift.so\ncp -rf `readlink -e ${LIBXML2_BUILD_PATH}/lib/libxml2.a` ${LIBXML2_LIBDIR}/libxml2swift.a\ncp -rf $LIBXML2_BUILD_PATH/include/libxml2 $LIBXML2_ROOT/include\n\nrm -rf $SWIFT_BUILD_PRODUCT_PATH/foundation-android-aarch64\nmkdir -p $SWIFT_BUILD_PRODUCT_PATH/foundation-android-aarch64\ncd $SWIFT_BUILD_PRODUCT_PATH/foundation-android-aarch64\ncmake -G Ninja \\\n    -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/android.toolchain.cmake \\\n    -DANDROID_ABI=$ABI \\\n    -DANDROID_NDK=$NDK_PATH \\\n    -DANDROID_PLATFORM=android-28 \\\n    \\\n    -DCMAKE_MAKE_PROGRAM=$NINJA_EXEC \\\n    -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR_PATH}/usr \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DBUILD_SHARED_LIBS=ON \\\n    -Ddispatch_DIR=${SWIFT_BUILD_PRODUCT_PATH}/libdispatch-android-arm64/cmake/modules \\\n    \\\n    -DICU_ROOT:PATH=${ICU_ROOT} \\\n    -DICU_INCLUDE_DIR:PATH=${ICU_ROOT}/include \\\n    -DICU_DATA_LIBRARIES:FILEPATH=${ICU_LIBDIR}/libicudataswift.so \\\n    -DICU_DATA_LIBRARY:FILEPATH=${ICU_LIBDIR}/libicudataswift.so \\\n    -DICU_DATA_LIBRARY_DEBUG:FILEPATH=${ICU_LIBDIR}/libicudataswift.so \\\n    -DICU_DATA_LIBRARY_RELEASE:FILEPATH=${ICU_LIBDIR}/libicudataswift.so \\\n    -DICU_UC_LIBRARIES:FILEPATH=${ICU_LIBDIR}/libicuucswift.so \\\n    -DICU_UC_LIBRARY:FILEPATH=${ICU_LIBDIR}/libicuucswift.so \\\n    -DICU_UC_LIBRARY_DEBUG:FILEPATH=${ICU_LIBDIR}/libicuucswift.so \\\n    -DICU_UC_LIBRARY_RELEASE:FILEPATH=${ICU_LIBDIR}/libicuucswift.so \\\n    -DICU_I18N_LIBRARIES:FILEPATH=${ICU_LIBDIR}/libicui18nswift.so \\\n    -DICU_I18N_LIBRARY:FILEPATH=${ICU_LIBDIR}/libicui18nswift.so \\\n    -DICU_I18N_LIBRARY_DEBUG:FILEPATH=${ICU_LIBDIR}/libicui18nswift.so \\\n    -DICU_I18N_LIBRARY_RELEASE:FILEPATH=${ICU_LIBDIR}/libicui18nswift.so \\\n    \\\n    -DCURL_LIBRARY=${LIBCURL_LIBDIR}/libcurlswift.a \\\n    -DCURL_INCLUDE_DIR=${LIBCURL_ROOT}/include \\\n    \\\n    -DLIBXML2_LIBRARY=${LIBXML2_LIBDIR}/libxml2swift.a \\\n    -DLIBXML2_INCLUDE_DIR=${LIBXML2_ROOT}/include/libxml2 \\\n    -DLIBXML2_DEFINITIONS=\"-DLIBXML_STATIC\" \\\n    \\\n    -DCMAKE_HAVE_LIBC_PTHREAD=YES \\\n    -DCMAKE_Swift_COMPILER=\"${SWIFT_NATIVE_TOOLCHAIN_PATH}/swiftc\" \\\n    -DCMAKE_Swift_FLAGS=\"-target aarch64-unknown-linux-android28 -tools-directory ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/ -sdk ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot -resource-dir $SWIFT_BUILD_PRODUCT_PATH/swift-linux-x86_64/lib/swift\" \\\n    ../../../swift-corelibs-foundation\n\n$NINJA_EXEC -C .\n$NINJA_EXEC -C . install\n\necho \"change icu so path\"\npatchelf --replace-needed libicudata.so libicudataswift.so ${ICU_LIBDIR}/libicuucswift.so\npatchelf --replace-needed libicudata.so libicudataswift.so ${ICU_LIBDIR}/libicui18nswift.so\npatchelf --replace-needed libicuuc.so libicuucswift.so ${ICU_LIBDIR}/libicui18nswift.so\npatchelf --replace-needed ${ICU_LIBDIR}/libicuucswift.so libicuucswift.so /root/workspace/install/usr/lib/swift/android/libFoundation.so\npatchelf --replace-needed ${ICU_LIBDIR}/libicudataswift.so libicudataswift.so /root/workspace/install/usr/lib/swift/android/libFoundation.so\npatchelf --replace-needed ${ICU_LIBDIR}/libicui18nswift.so libicui18nswift.so ${INSTALL_DIR_PATH}/usr/lib/swift/android/libFoundation.so\n```\n\n##### Static\n```bash\nWORKSPACE_SWIFT_ANDROID=$WORKSPACE_SWIFT_AARCH64_ANDROID\nNDK_PATH=$WORKSPACE_SWIFT_ANDROID/android-ndk-r26d\nABI=arm64-v8a\nINSTALL_DIR_PATH=$WORKSPACE_SWIFT_ANDROID/install\nSWIFT_NATIVE_TOOLCHAIN_PATH=$WORKSPACE_SWIFT_ANDROID/swift-5.10.1-RELEASE-ubuntu22.04/usr/bin/\nSWIFT_SOURCE_ROOT=$WORKSPACE_SWIFT_ANDROID/swift-project/\nSWIFT_BUILD_PRODUCT_PATH=${SWIFT_SOURCE_ROOT}/build/buildbot_linux\nNINJA_EXEC=$SWIFT_BUILD_PRODUCT_PATH/ninja-build/ninja\nLIBICONV_BUILD_PATH=$WORKSPACE_SWIFT_ANDROID/libiconv-libicu-android/$ABI\nICU_ROOT=${SWIFT_BUILD_PRODUCT_PATH}/libicu-android-arm64/tmp_install\nICU_LIBDIR=${SWIFT_BUILD_PRODUCT_PATH}/libicu-android-arm64/lib\nLIBCURL_BUILD_PATH=$WORKSPACE_SWIFT_ANDROID/libcurl-android/jni/build/curl/$ABI\nLIBCURL_ROOT=${SWIFT_BUILD_PRODUCT_PATH}/libcurl-android-arm64/tmp_install\nLIBCURL_LIBDIR=${SWIFT_BUILD_PRODUCT_PATH}/libcurl-android-arm64/lib\nLIBXML2_BUILD_PATH=$WORKSPACE_SWIFT_ANDROID/libxml2/out/$ABI\nLIBXML2_ROOT=${SWIFT_BUILD_PRODUCT_PATH}/libxml2-android-arm64/tmp_install\nLIBXML2_LIBDIR=${SWIFT_BUILD_PRODUCT_PATH}/libxml2-android-arm64/lib\n\nrm -rf ${SWIFT_BUILD_PRODUCT_PATH}/libicu-android-arm64\nmkdir -p ${ICU_ROOT}/include\nmkdir -p ${ICU_LIBDIR}\n\n# libiconv\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicudata.so` ${ICU_LIBDIR}/libicudataswift.so\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicuuc.so` ${ICU_LIBDIR}/libicuucswift.so\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicui18n.so` ${ICU_LIBDIR}/libicui18nswift.so\n\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicudata.a` ${ICU_LIBDIR}/libicudataswift.a\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicuuc.a` ${ICU_LIBDIR}/libicuucswift.a\ncp -rf `readlink -e ${LIBICONV_BUILD_PATH}/lib/libicui18n.a` ${ICU_LIBDIR}/libicui18nswift.a\n\ncp -rf ${LIBICONV_BUILD_PATH}/include/unicode ${ICU_ROOT}/include\n\n\n# libcurl\nrm -rf ${SWIFT_BUILD_PRODUCT_PATH}/libcurl-android-arm64\nmkdir -p ${LIBCURL_ROOT}/include\nmkdir -p ${LIBCURL_LIBDIR}\n\ncp -rf `readlink -e ${LIBCURL_BUILD_PATH}/lib/libcurl.so` ${LIBCURL_LIBDIR}/libcurlswift.so\ncp -rf `readlink -e ${LIBCURL_BUILD_PATH}/lib/libcurl.a` ${LIBCURL_LIBDIR}/libcurlswift.a\ncp -rf $LIBCURL_BUILD_PATH/include/curl $LIBCURL_ROOT/include\n\n# libxml\nrm -rf ${SWIFT_BUILD_PRODUCT_PATH}/libxml2-android-arm64\nmkdir -p ${LIBXML2_ROOT}/include\nmkdir -p ${LIBXML2_LIBDIR}\n\ncp -rf `readlink -e ${LIBXML2_BUILD_PATH}/lib/libxml2.so` ${LIBXML2_LIBDIR}/libxml2swift.so\ncp -rf `readlink -e ${LIBXML2_BUILD_PATH}/lib/libxml2.a` ${LIBXML2_LIBDIR}/libxml2swift.a\ncp -rf $LIBXML2_BUILD_PATH/include/libxml2 $LIBXML2_ROOT/include\n\nrm -rf $SWIFT_BUILD_PRODUCT_PATH/foundation-android-aarch64\nmkdir -p $SWIFT_BUILD_PRODUCT_PATH/foundation-android-aarch64\ncd $SWIFT_BUILD_PRODUCT_PATH/foundation-android-aarch64\ncmake -G Ninja \\\n    -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/android.toolchain.cmake \\\n    -DANDROID_ABI=$ABI \\\n    -DANDROID_NDK=$NDK_PATH \\\n    -DANDROID_PLATFORM=android-28 \\\n    \\\n    -DCMAKE_MAKE_PROGRAM=$NINJA_EXEC \\\n    -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR_PATH}/usr \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DBUILD_SHARED_LIBS=OFF \\\n    -Ddispatch_DIR=${SWIFT_BUILD_PRODUCT_PATH}/libdispatch-android-arm64/cmake/modules \\\n    \\\n    -DICU_ROOT:PATH=${ICU_ROOT} \\\n    -DICU_INCLUDE_DIR:PATH=${ICU_ROOT}/include \\\n    -DICU_DATA_LIBRARIES:FILEPATH=${ICU_LIBDIR}/libicudataswift.a \\\n    -DICU_DATA_LIBRARY:FILEPATH=${ICU_LIBDIR}/libicudataswift.a \\\n    -DICU_DATA_LIBRARY_DEBUG:FILEPATH=${ICU_LIBDIR}/libicudataswift.a \\\n    -DICU_DATA_LIBRARY_RELEASE:FILEPATH=${ICU_LIBDIR}/libicudataswift.a \\\n    -DICU_UC_LIBRARIES:FILEPATH=${ICU_LIBDIR}/libicuucswift.a \\\n    -DICU_UC_LIBRARY:FILEPATH=${ICU_LIBDIR}/libicuucswift.a \\\n    -DICU_UC_LIBRARY_DEBUG:FILEPATH=${ICU_LIBDIR}/libicuucswift.a \\\n    -DICU_UC_LIBRARY_RELEASE:FILEPATH=${ICU_LIBDIR}/libicuucswift.a \\\n    -DICU_I18N_LIBRARIES:FILEPATH=${ICU_LIBDIR}/libicui18nswift.a \\\n    -DICU_I18N_LIBRARY:FILEPATH=${ICU_LIBDIR}/libicui18nswift.a \\\n    -DICU_I18N_LIBRARY_DEBUG:FILEPATH=${ICU_LIBDIR}/libicui18nswift.a \\\n    -DICU_I18N_LIBRARY_RELEASE:FILEPATH=${ICU_LIBDIR}/libicui18nswift.a \\\n    \\\n    -DCURL_LIBRARY=${LIBCURL_LIBDIR}/libcurlswift.a \\\n    -DCURL_INCLUDE_DIR=${LIBCURL_ROOT}/include \\\n    \\\n    -DLIBXML2_LIBRARY=${LIBXML2_LIBDIR}/libxml2swift.a \\\n    -DLIBXML2_INCLUDE_DIR=${LIBXML2_ROOT}/include/libxml2 \\\n    -DLIBXML2_DEFINITIONS=\"-DLIBXML_STATIC\" \\\n    \\\n    -DCMAKE_HAVE_LIBC_PTHREAD=YES \\\n    -DCMAKE_Swift_COMPILER=\"${SWIFT_NATIVE_TOOLCHAIN_PATH}/swiftc\" \\\n    -DCMAKE_Swift_FLAGS=\"-target aarch64-unknown-linux-android28 -tools-directory ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/ -sdk ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot -resource-dir $SWIFT_BUILD_PRODUCT_PATH/swift-linux-x86_64/lib/swift\" \\\n    ../../../swift-corelibs-foundation\n\n$NINJA_EXEC -C .\n$NINJA_EXEC -C . install\n```\n\n### Copy Dependency\n```bash\nNDK_PATH=$$WORKSPACE_SWIFT_AARCH64_ANDROID/android-ndk-r26d\ncp -rf ${ICU_LIBDIR}/libicu*.so ${INSTALL_DIR_PATH}/usr/lib/swift/android/\ncp -rf ${ICU_LIBDIR}/libicu*.a ${INSTALL_DIR_PATH}/usr/lib/swift_static/android/\ncp -rf ${LIBCURL_LIBDIR}/libcurl*.so ${INSTALL_DIR_PATH}/usr/lib/swift/android/\ncp -rf ${LIBCURL_LIBDIR}/libcurl*.a ${INSTALL_DIR_PATH}/usr/lib/swift_static/android/\ncp -rf ${LIBXML2_LIBDIR}/libxml2*.so ${INSTALL_DIR_PATH}/usr/lib/swift/android/\ncp -rf ${LIBXML2_LIBDIR}/libxml2*.a ${INSTALL_DIR_PATH}/usr/lib/swift_static/android/\ncp -rf ${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so ${INSTALL_DIR_PATH}/usr/lib/swift/android/\n```\n\nAfter building success, you can found sdk at `$WORKSPACE_SWIFT_AARCH64_ANDROID/install`\n\n--------------\n`Have fun and play with Swift everywhere!`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmst0us%2Faarch64-android28-swift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcmst0us%2Faarch64-android28-swift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmst0us%2Faarch64-android28-swift/lists"}