Skip to content

Commit 5d24726

Browse files
committed
swift: enable package
1 parent 87aa5f7 commit 5d24726

21 files changed

+149
-105
lines changed

disabled-packages/swift/build.sh

Lines changed: 0 additions & 100 deletions
This file was deleted.

packages/swift/build.sh

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
TERMUX_PKG_HOMEPAGE=https://www.swift.org/
2+
TERMUX_PKG_DESCRIPTION="Swift is a high-performance system programming language"
3+
TERMUX_PKG_LICENSE="Apache-2.0, NCSA"
4+
TERMUX_PKG_VERSION=5.1.4
5+
TERMUX_PKG_SHA256=46765a6a604be0b11cb4660bf5adbef8a95d2b74b03aa46860ef81a5ba92d5e8
6+
TERMUX_PKG_SRCURL=https://github.com/apple/swift/archive/swift-$TERMUX_PKG_VERSION-RELEASE.tar.gz
7+
TERMUX_PKG_DEPENDS="binutils-gold, libc++, ndk-sysroot, libandroid-spawn, libcurl, libicu, libsqlite, libuuid, libxml2, llbuild"
8+
TERMUX_PKG_BUILD_DEPENDS="cmake, ninja, perl, pkg-config, python2, rsync"
9+
TERMUX_PKG_BLACKLISTED_ARCHES="arm, i686, x86_64"
10+
TERMUX_PKG_NO_STATICSPLIT=true
11+
12+
SWIFT_COMPONENTS="autolink-driver;compiler;clang-resource-dir-symlink;stdlib;swift-remote-mirror;sdk-overlay;parser-lib;license;sourcekit-inproc"
13+
SWIFT_BUILD_FLAGS="-R --no-assertions --llvm-targets-to-build='X86;ARM;AArch64'
14+
--xctest -b -p -j $TERMUX_MAKE_PROCESSES --build-subdir=. --install-destdir=/
15+
--install-prefix=$TERMUX_PREFIX --swift-install-components='$SWIFT_COMPONENTS'
16+
--build-swift-static-stdlib --build-swift-static-sdk-overlay"
17+
18+
termux_step_post_extract_package() {
19+
if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
20+
termux_error_exit "Package '$TERMUX_PKG_NAME' is not ready for off-device builds."
21+
fi
22+
23+
if [ "$TERMUX_PKG_QUICK_REBUILD" != "true" ]; then
24+
# The Swift build-script requires a particular organization of source directories,
25+
# which the following sets up.
26+
mkdir TEMP
27+
mv [a-zA-S]* TEMP/
28+
mv TEMP swift
29+
30+
declare -A library_checksums
31+
library_checksums[swift-cmark]=dc02253fdc5ef4027551e5ab5cb8eef22abd7a5bb2df6a2baf02e17afdeeb5cd
32+
library_checksums[llvm-project]=0b3606be7b542aff28210c96639ad19a4b982e999fb3e86748198d8150f5f3d3
33+
library_checksums[swift-corelibs-libdispatch]=079cff5dd5b05381e9cf3094d445652fa9990a7d3a46e122f1e1dcdb2c54ddc1
34+
library_checksums[swift-corelibs-foundation]=f6e09efb3998d0a3d449f92ea809c86346c66e3b2d83ed19f3335bcb29401416
35+
library_checksums[swift-corelibs-xctest]=5996eb4384c8f095d912424439c5a1b7fc9ff57529f9ac5ecbc04e82d22ebca2
36+
library_checksums[swift-llbuild]=537683d7f1a73b48017d7cd7cd587c4b75c55cc5584e206cc0f8f92f6f4dd3ea
37+
library_checksums[swift-package-manager]=b421e7e171b94521e364b6ea21ddd6300fe28bce3a0fcbc9f5ed6db496f148a6
38+
39+
for library in "${!library_checksums[@]}"; do \
40+
termux_download \
41+
https://github.com/apple/$library/archive/swift-$TERMUX_PKG_VERSION-RELEASE.tar.gz \
42+
$TERMUX_PKG_CACHEDIR/$library-$TERMUX_PKG_VERSION.tar.gz \
43+
${library_checksums[$library]}
44+
tar xf $TERMUX_PKG_CACHEDIR/$library-$TERMUX_PKG_VERSION.tar.gz
45+
mv $library-swift-${TERMUX_PKG_VERSION}-RELEASE $library
46+
done
47+
48+
mv swift-cmark cmark
49+
50+
ln -s $PWD/llvm-project/llvm
51+
ln -s $PWD/llvm-project/compiler-rt
52+
ln -s $PWD/llvm-project/clang
53+
54+
mv swift-llbuild llbuild
55+
mv swift-package-manager swiftpm
56+
fi
57+
}
58+
59+
termux_step_pre_configure() {
60+
if [ "$TERMUX_PKG_QUICK_REBUILD" != "true" ]; then
61+
cd llbuild
62+
# The bare minimum patches needed from the existing llbuild package
63+
patch -p1 < $TERMUX_PKG_BUILDER_DIR/../llbuild/CMakeLists.txt.patch
64+
patch -p1 < $TERMUX_PKG_BUILDER_DIR/../llbuild/include-llvm-Config-config.h.patch
65+
patch -p1 < $TERMUX_PKG_BUILDER_DIR/../llbuild/lib-llvm-Support-CmakeLists.txt.patch
66+
fi
67+
}
68+
69+
termux_step_configure() {
70+
ln -sf $(which python2) python
71+
export PATH=$TERMUX_PKG_BUILDDIR:$PATH
72+
}
73+
74+
termux_step_make() {
75+
SWIFT_BUILD_ROOT=$TERMUX_PKG_BUILDDIR $TERMUX_PKG_SRCDIR/swift/utils/build-script \
76+
$SWIFT_BUILD_FLAGS
77+
}
78+
79+
termux_step_make_install() {
80+
SWIFT_BUILD_ROOT=$TERMUX_PKG_BUILDDIR $TERMUX_PKG_SRCDIR/swift/utils/build-script \
81+
$SWIFT_BUILD_FLAGS --install-swift --install-libdispatch --install-foundation \
82+
--install-xctest --install-swiftpm --llvm-install-components=IndexStore
83+
84+
mkdir -p $TERMUX_PREFIX/lib/swift/pm/llbuild
85+
cp llbuild-android-aarch64/lib/libllbuildSwift.so $TERMUX_PREFIX/lib/swift/pm/llbuild
86+
}

disabled-packages/swift/swift-build-script.patch renamed to packages/swift/swift-build-script.patch

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ index 68d7f5ddd88..5f6bfc2c57b 100755
5656
)
5757

5858
# If we are asked to not generate test targets for LLVM and or Swift,
59-
@@ -2895,7 +2907,7 @@
59+
@@ -2894,6 +2894,8 @@ for host in "${ALL_HOSTS[@]}"; do
60+
HOST_CXX_HEADERS_DIR="$HOST_CXX_DIR/../../usr/include/c++"
6061
elif [[ "$(uname -s)" == "Haiku" ]] ; then
6162
HOST_CXX_HEADERS_DIR="/boot/system/develop/headers/c++"
63+
+ elif [[ "${ANDROID_DATA}" ]] ; then
64+
+ HOST_CXX_HEADERS_DIR="$PREFIX/include/c++"
6265
else # Linux
63-
- HOST_CXX_HEADERS_DIR="/usr/include/c++"
64-
+ HOST_CXX_HEADERS_DIR="@TERMUX_PREFIX@/include/c++"
66+
HOST_CXX_HEADERS_DIR="/usr/include/c++"
6567
fi
66-
67-
# Find the path in which the local clang build is expecting to find
6868
@@ -3654,7 +3666,7 @@ for host in "${ALL_HOSTS[@]}"; do
6969
fi
7070

@@ -74,6 +74,23 @@ index 68d7f5ddd88..5f6bfc2c57b 100755
7474
*)
7575
echo "error: --install-xctest is not supported on this platform"
7676
exit 1
77+
diff --git a/swift/utils/gen-static-stdlib-link-args b/swift/utils/gen-static-stdlib-link-args
78+
index a42c5e34a2e..430694ee30b 100755
79+
--- a/swift/utils/gen-static-stdlib-link-args
80+
+++ b/swift/utils/gen-static-stdlib-link-args
81+
@@ -60,11 +60,10 @@ function write_linkfile {
82+
fi
83+
cat >$OUTPUTFILE <<EOF
84+
-ldl
85+
--lpthread
86+
-latomic
87+
-lswiftCore
88+
-latomic
89+
--lswiftImageInspectionShared
90+
+-llog
91+
$ICU_LIBS
92+
-Xlinker
93+
-export-dynamic
7794
diff --git a/swift/utils/swift_build_support/swift_build_support/targets.py b/swift/utils/swift_build_support/swift_build_support/targets.py
7895
index 7fae08ca57b..89637be0ee5 100644
7996
--- a/swift/utils/swift_build_support/swift_build_support/targets.py

disabled-packages/swift/swift-cmake.patch renamed to packages/swift/swift-cmake.patch

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ index 41768247e5..e67bf868ad 100644
4343
elseif("${SWIFT_HOST_VARIANT_SDK}" MATCHES "(OSX|IOS*|TVOS*|WATCHOS*)")
4444

4545
set(SWIFT_HOST_VARIANT "macosx" CACHE STRING
46+
@@ -1034,11 +1034,6 @@ if(SWIFT_NEED_EXPLICIT_LIBDISPATCH)
47+
else()
48+
set(SOURCEKIT_RUNTIME_DIR lib)
49+
endif()
50+
- swift_install_in_component(sourcekit-inproc
51+
- FILES
52+
- $<TARGET_FILE:dispatch>
53+
- $<TARGET_FILE:BlocksRuntime>
54+
- DESTINATION ${SOURCEKIT_RUNTIME_DIR})
55+
if(SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
56+
swift_install_in_component(sourcekit-inproc
57+
FILES
4658
diff --git a/swift/cmake/modules/AddSwift.cmake b/swift/cmake/modules/AddSwift.cmake
4759
index cbf613b4fc..47f926b4b8 100644
4860
--- a/swift/cmake/modules/AddSwift.cmake

0 commit comments

Comments
 (0)