mirror of
https://github.com/termux-pacman/termux-packages.git
synced 2026-02-12 12:50:51 +00:00
This is one of the last few packages depending on host llvm 15 being installed. Soon the transition to llvm 17 is complete, and we can drop llvm 15 from the Docker image for size and maintenance reasons.
161 lines
7.4 KiB
Bash
161 lines
7.4 KiB
Bash
TERMUX_PKG_HOMEPAGE=https://swift.org/
|
|
TERMUX_PKG_DESCRIPTION="Swift is a high-performance system programming language"
|
|
TERMUX_PKG_LICENSE="Apache-2.0, NCSA"
|
|
TERMUX_PKG_MAINTAINER="@finagolfin"
|
|
TERMUX_PKG_VERSION=5.10.1
|
|
TERMUX_PKG_REVISION=1
|
|
SWIFT_RELEASE="RELEASE"
|
|
TERMUX_PKG_SRCURL=https://github.com/apple/swift/archive/swift-$TERMUX_PKG_VERSION-$SWIFT_RELEASE.tar.gz
|
|
TERMUX_PKG_SHA256=087c59a1b79c46dd23f8e6cb4fe12a27935a5b6581282f48db952827bb3fdf57
|
|
TERMUX_PKG_AUTO_UPDATE=false
|
|
TERMUX_PKG_HOSTBUILD=true
|
|
TERMUX_PKG_DEPENDS="clang, libandroid-glob, libandroid-posix-semaphore, libandroid-spawn, libcurl, libicu, libicu-static, libsqlite, libuuid, libxml2, libdispatch, llbuild, pkg-config, swift-sdk-${TERMUX_ARCH/_/-}"
|
|
TERMUX_PKG_BUILD_DEPENDS="rsync"
|
|
TERMUX_PKG_BLACKLISTED_ARCHES="i686"
|
|
TERMUX_PKG_NO_STATICSPLIT=true
|
|
# Building swift uses CMake, but the standard
|
|
# termux_step_configure_cmake function is not used. Instead, we set
|
|
# TERMUX_PKG_FORCE_CMAKE to make the build system aware that CMake is
|
|
# needed.
|
|
TERMUX_PKG_FORCE_CMAKE=true
|
|
TERMUX_CMAKE_BUILD=Ninja
|
|
|
|
SWIFT_COMPONENTS="autolink-driver;compiler;clang-resource-dir-symlink;swift-remote-mirror;license;sourcekit-inproc;static-mirror-lib;stdlib;sdk-overlay"
|
|
SWIFT_TOOLCHAIN_FLAGS="-RA --llvm-targets-to-build='X86;ARM;AArch64' -j $TERMUX_PKG_MAKE_PROCESSES --install-prefix=$TERMUX_PREFIX"
|
|
SWIFT_PATH_FLAGS="--build-subdir=. --install-destdir=/"
|
|
SWIFT_BUILD_FLAGS="$SWIFT_TOOLCHAIN_FLAGS $SWIFT_PATH_FLAGS"
|
|
|
|
SWIFT_ARCH=$TERMUX_ARCH
|
|
test $SWIFT_ARCH == 'arm' && SWIFT_ARCH='armv7'
|
|
|
|
termux_step_post_get_source() {
|
|
# The Swift build-script requires a particular organization of source
|
|
# directories, which the following downloads and sets up.
|
|
mkdir .temp
|
|
mv [a-zA-Z]* .temp/
|
|
mv .temp swift
|
|
|
|
declare -A library_checksums
|
|
library_checksums[swift-cmark]=6d209b8bf81fe0d67ae6d55913e7750ec752bc7fc29fc0ef5da2fdf8a6057406
|
|
library_checksums[llvm-project]=fad2de34c6c005b7bc63ce7b4f20d6cdf0e1d60109a7a589ffd782180c23102b
|
|
library_checksums[swift-experimental-string-processing]=7e6ea60653b580abaf0801d697971610e7e22b4eb427edcee486b741b14d2724
|
|
library_checksums[swift-syntax]=500ff2c6d9435311fa42ad2e87927a3025b6c3682c18ecb9710c522c0be52a53
|
|
library_checksums[swift-corelibs-libdispatch]=affa3544b0fdb60f8f175bc0d2846177436d5848ef8ca73e3e560d23986f38b3
|
|
library_checksums[swift-corelibs-foundation]=94dadc18f527f25cf1ce486d0ddce7de00f725063bc43526bdb73e534c8d97c3
|
|
library_checksums[swift-corelibs-xctest]=cec269b435a9f32edcf90958abec16fcf50febcb99e389ed56e9e692c3270e27
|
|
library_checksums[swift-llbuild]=64d135c1aaf96636b0ff6a2682e605474fe9e33f740a8ba2a3c469e2c8ae9f38
|
|
library_checksums[swift-argument-parser]=4a10bbef290a2167c5cc340b39f1f7ff6a8cf4e1b5433b68548bf5f1e542e908
|
|
library_checksums[Yams]=ec1ad699c30f0db45520006c63a88cc1c946a7d7b36dff32a96460388c0a4af2
|
|
library_checksums[swift-collections]=d0f584b197860db26fd939175c9d1a7badfe7b89949b4bd52d4f626089776e0a
|
|
library_checksums[swift-crypto]=5c860c0306d0393ff06268f361aaf958656e1288353a0e23c3ad20de04319154
|
|
library_checksums[swift-system]=865b8c380455eef27e73109835142920c60ae4c4f4178a3d12ad04acc83f1371
|
|
library_checksums[swift-asn1]=e0da995ae53e6fcf8251887f44d4030f6600e2f8f8451d9c92fcaf52b41b6c35
|
|
library_checksums[swift-certificates]=fcaca458aab45ee69b0f678b72c2194b15664cc5f6f5e48d0e3f62bc5d1202ca
|
|
library_checksums[swift-driver]=75530eab66f4dffb9cecf422d0c5e582f08f84c8289ce245d48010e73ad1fc71
|
|
library_checksums[swift-tools-support-core]=fbc2d5dcf4eb27e7e786a19559e4ab5af6469238e3e89b910511145874bdfc52
|
|
library_checksums[swift-package-manager]=3d35e35b6e7a061042d3cd4913030525462faa357901a91a2d2f037d12e5987c
|
|
library_checksums[indexstore-db]=8be52307236e21e942972417fd3c8182a7865757f7890eec167851c75d156996
|
|
library_checksums[sourcekit-lsp]=f83aabe6e66adc2d3ffb7e948ddfd805f7f58fd43c6b33d48bb4a50186ce0abb
|
|
|
|
for library in "${!library_checksums[@]}"; do \
|
|
GH_ORG="apple"
|
|
if [ "$library" = "swift-argument-parser" ]; then
|
|
SRC_VERSION="1.2.3"
|
|
TAR_NAME=$SRC_VERSION
|
|
elif [ "$library" = "swift-asn1" ]; then
|
|
SRC_VERSION="1.0.0"
|
|
TAR_NAME=$SRC_VERSION
|
|
elif [ "$library" = "swift-certificates" ]; then
|
|
SRC_VERSION="1.0.1"
|
|
TAR_NAME=$SRC_VERSION
|
|
elif [ "$library" = "swift-collections" ]; then
|
|
SRC_VERSION="1.0.5"
|
|
TAR_NAME=$SRC_VERSION
|
|
elif [ "$library" = "swift-crypto" ]; then
|
|
SRC_VERSION="3.0.0"
|
|
TAR_NAME=$SRC_VERSION
|
|
elif [ "$library" = "swift-system" ]; then
|
|
SRC_VERSION="1.1.1"
|
|
TAR_NAME=$SRC_VERSION
|
|
elif [ "$library" = "Yams" ]; then
|
|
GH_ORG="jpsim"
|
|
SRC_VERSION="5.0.1"
|
|
TAR_NAME=$SRC_VERSION
|
|
else
|
|
SRC_VERSION=$SWIFT_RELEASE
|
|
TAR_NAME=swift-$TERMUX_PKG_VERSION-$SWIFT_RELEASE
|
|
fi
|
|
|
|
termux_download \
|
|
https://github.com/$GH_ORG/$library/archive/$TAR_NAME.tar.gz \
|
|
$TERMUX_PKG_CACHEDIR/$library-$SRC_VERSION.tar.gz \
|
|
${library_checksums[$library]}
|
|
tar xf $TERMUX_PKG_CACHEDIR/$library-$SRC_VERSION.tar.gz
|
|
mv $library-$TAR_NAME $library
|
|
done
|
|
|
|
mv swift-cmark cmark
|
|
mv swift-llbuild llbuild
|
|
mv Yams yams
|
|
mv swift-package-manager swiftpm
|
|
}
|
|
|
|
termux_step_host_build() {
|
|
if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
|
|
termux_setup_cmake
|
|
termux_setup_ninja
|
|
|
|
local CLANG=$(command -v clang)
|
|
local CLANGXX=$(command -v clang++)
|
|
|
|
# The Ubuntu CI may not have clang/clang++ in its path so explicitly set it
|
|
# to clang-17 instead.
|
|
if [ -z "$CLANG" ]; then
|
|
CLANG=$(command -v clang-17)
|
|
CLANGXX=$(command -v clang++-17)
|
|
fi
|
|
|
|
# Natively compile llvm-tblgen and some other files needed later.
|
|
SWIFT_BUILD_ROOT=$TERMUX_PKG_HOSTBUILD_DIR $TERMUX_PKG_SRCDIR/swift/utils/build-script \
|
|
-R --no-assertions -j $TERMUX_PKG_MAKE_PROCESSES $SWIFT_PATH_FLAGS \
|
|
--skip-build-cmark --skip-build-llvm --skip-build-swift --skip-early-swift-driver \
|
|
--skip-early-swiftsyntax --build-toolchain-only --host-cc=$CLANG --host-cxx=$CLANGXX
|
|
fi
|
|
}
|
|
|
|
termux_step_make() {
|
|
if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
|
|
termux_setup_swift
|
|
ln -sf $TERMUX_PKG_HOSTBUILD_DIR/llvm-linux-x86_64 $TERMUX_PKG_BUILDDIR/llvm-linux-x86_64
|
|
|
|
SWIFT_BUILD_FLAGS="$SWIFT_BUILD_FLAGS --android
|
|
--android-ndk $TERMUX_STANDALONE_TOOLCHAIN --android-arch $SWIFT_ARCH
|
|
--build-toolchain-only --skip-local-build --skip-local-host-install
|
|
--cross-compile-hosts=android-$SWIFT_ARCH
|
|
--cross-compile-deps-path=$(dirname $TERMUX_PREFIX)
|
|
--native-swift-tools-path=$SWIFT_BINDIR
|
|
--native-clang-tools-path=$SWIFT_BINDIR
|
|
--cross-compile-append-host-target-to-destdir=False"
|
|
fi
|
|
|
|
SWIFT_BUILD_ROOT=$TERMUX_PKG_BUILDDIR $TERMUX_PKG_SRCDIR/swift/utils/build-script \
|
|
$SWIFT_BUILD_FLAGS --xctest -b -p --swift-driver --sourcekit-lsp \
|
|
--android-api-level $TERMUX_PKG_API_LEVEL --build-swift-static-stdlib \
|
|
--swift-install-components=$SWIFT_COMPONENTS --llvm-install-components=IndexStore \
|
|
--install-llvm --install-swift --install-libdispatch --install-foundation \
|
|
--install-xctest --install-llbuild --install-swiftpm --install-swift-driver --install-sourcekit-lsp
|
|
}
|
|
|
|
termux_step_make_install() {
|
|
rm $TERMUX_PREFIX/lib/swift/android/lib{dispatch,BlocksRuntime}.so
|
|
mv $TERMUX_PREFIX/lib/swift/android/lib[^_]*.so $TERMUX_PREFIX/opt/ndk-multilib/$TERMUX_ARCH-linux-android*/lib
|
|
mv $TERMUX_PREFIX/lib/swift/android/lib*.a $TERMUX_PREFIX/lib/swift/android/$SWIFT_ARCH
|
|
mv $TERMUX_PREFIX/lib/swift_static/android/lib*.a $TERMUX_PREFIX/lib/swift_static/android/$SWIFT_ARCH
|
|
|
|
if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
|
|
rm $TERMUX_PREFIX/swiftpm-android-$SWIFT_ARCH.json
|
|
mv $TERMUX_PREFIX/glibc-native.modulemap \
|
|
$TERMUX_PREFIX/lib/swift/android/$SWIFT_ARCH/glibc.modulemap
|
|
fi
|
|
}
|