Skip to content

Commit efac3fc

Browse files
committed
Update build script
1 parent f84b50a commit efac3fc

2 files changed

Lines changed: 47 additions & 12 deletions

File tree

Demo/setup.sh

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#!/bin/bash
2-
set -e
3-
source swift-define
2+
set -euo pipefail
3+
4+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5+
source "$SCRIPT_DIR/swift-define"
6+
JNI_LIBS_DIR="$SRC_ROOT/app/src/main/jniLibs/$ANDROID_ARCH"
47

58
# Install macOS dependencies
69
if [[ $OSTYPE == 'darwin'* ]]; then
@@ -12,11 +15,38 @@ if [[ $OSTYPE == 'darwin'* ]]; then
1215
fi
1316

1417
# Copy Swift libraries
15-
rm -rf $SRC_ROOT/app/src/main/jniLibs/$ANDROID_ARCH/
16-
mkdir -p $SRC_ROOT/app/src/main/jniLibs/$ANDROID_ARCH/
17-
cp -rf $SWIFT_ANDROID_LIBS/*.so \
18-
$SRC_ROOT/app/src/main/jniLibs/$ANDROID_ARCH/
18+
rm -rf "$JNI_LIBS_DIR/"
19+
mkdir -p "$JNI_LIBS_DIR/"
20+
21+
copied_swift_libs=0
22+
if [[ -d "$SWIFT_ANDROID_LIBS" ]]; then
23+
shopt -s nullglob
24+
for so in "$SWIFT_ANDROID_LIBS"/*.so; do
25+
cp -f "$so" "$JNI_LIBS_DIR/"
26+
copied_swift_libs=1
27+
done
28+
shopt -u nullglob
29+
fi
30+
31+
# Fallback for newer Skip/Swift SDK layouts where runtime libs are emitted into `.build`.
32+
if [[ $copied_swift_libs -eq 0 && -d "$SWIFT_PACKAGE_SRC/.build/$SWIFT_TARGET_NAME/debug" ]]; then
33+
shopt -s nullglob
34+
for so in "$SWIFT_PACKAGE_SRC/.build/$SWIFT_TARGET_NAME/debug"/libSwift*.so; do
35+
cp -f "$so" "$JNI_LIBS_DIR/"
36+
copied_swift_libs=1
37+
done
38+
shopt -u nullglob
39+
fi
40+
41+
if [[ $copied_swift_libs -eq 0 ]]; then
42+
echo "Warning: No Swift runtime libraries found to copy."
43+
fi
44+
1945
# Copy C stdlib
20-
cp -rf $SWIFT_ANDROID_SYSROOT/usr/lib/$ANDROID_LIB/libc++_shared.so \
21-
$SRC_ROOT/app/src/main/jniLibs/$ANDROID_ARCH/
46+
if [[ -f "$SWIFT_ANDROID_SYSROOT/usr/lib/$ANDROID_LIB/libc++_shared.so" ]]; then
47+
cp -f "$SWIFT_ANDROID_SYSROOT/usr/lib/$ANDROID_LIB/libc++_shared.so" \
48+
"$JNI_LIBS_DIR/"
49+
else
50+
echo "Warning: libc++_shared.so not found at $SWIFT_ANDROID_SYSROOT/usr/lib/$ANDROID_LIB/libc++_shared.so"
51+
fi
2252
echo "Copied Swift libraries"

Demo/swift-define

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Configurable
2-
SRC_ROOT="${SRC_ROOT:=$(pwd)}"
2+
SWIFT_DEFINE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
3+
SRC_ROOT="${SRC_ROOT:=$SWIFT_DEFINE_DIR}"
34
SWIFT_TARGET_ARCH="${SWIFT_TARGET_ARCH:=aarch64}"
45
ANDROID_ARCH="${ANDROID_ARCH:=arm64-v8a}"
56
ANDROID_LIB="${ANDROID_LIB:=aarch64-linux-android}"
@@ -11,12 +12,16 @@ SWIFT_VERSION_SHORT=6.2.3
1112
SWIFT_VERSION=swift-$SWIFT_VERSION_SHORT-RELEASE
1213
SWIFT_TARGET_NAME=$SWIFT_TARGET_ARCH-unknown-linux-android$ANDROID_SDK_VERSION
1314
XCTOOLCHAIN=/Library/Developer/Toolchains/$SWIFT_VERSION.xctoolchain
14-
SWIFT_ARTIFACT_BUNDLE=swift-$SWIFT_VERSION_SHORT-RELEASE-android-0.1.artifactbundle
15+
SWIFT_ARTIFACT_BUNDLE="${SWIFT_ARTIFACT_BUNDLE:=swift-$SWIFT_VERSION_SHORT-RELEASE_android.artifactbundle}"
16+
SWIFT_SDKS_ROOT="${SWIFT_SDKS_ROOT:=$HOME/Library/org.swift.swiftpm/swift-sdks}"
17+
if [[ ! -d "$SWIFT_SDKS_ROOT/$SWIFT_ARTIFACT_BUNDLE" ]]; then
18+
SWIFT_SDKS_ROOT="$HOME/.swiftpm/swift-sdks"
19+
fi
1520

1621
# Paths
1722
SWIFT_SDK=swift-$SWIFT_VERSION_SHORT-release-android-$ANDROID_SDK_VERSION-sdk
18-
SWIFT_ANDROID_SYSROOT=~/.swiftpm/swift-sdks/$SWIFT_ARTIFACT_BUNDLE/swift-android/ndk-sysroot
19-
SWIFT_ANDROID_LIBS=~/.swiftpm/swift-sdks/$SWIFT_ARTIFACT_BUNDLE/swift-android/swift-resources/usr/lib/swift-$SWIFT_TARGET_ARCH/android/
23+
SWIFT_ANDROID_SYSROOT="$SWIFT_SDKS_ROOT/$SWIFT_ARTIFACT_BUNDLE/swift-android/ndk-sysroot"
24+
SWIFT_ANDROID_LIBS="$SWIFT_SDKS_ROOT/$SWIFT_ARTIFACT_BUNDLE/swift-android/swift-resources/usr/lib/swift-$SWIFT_TARGET_ARCH"
2025
SWIFT_PACKAGE_SRC=$SRC_ROOT
2126
JAVA_HOME=$SWIFT_ANDROID_SYSROOT/usr
2227

0 commit comments

Comments
 (0)