-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·101 lines (73 loc) · 2.33 KB
/
build.sh
File metadata and controls
executable file
·101 lines (73 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/bash
set -e
source setup.sh
PACKAGE_NAME=com.logicodeum.ide
PREFIX="data/data/$PACKAGE_NAME/files/usr"
NDK=$ANDROID_NDK
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
SYSROOT="$TOOLCHAIN/sysroot"
DEPS_DIR="$PWD/deps"
fetch_dep() {
NAME=$1
URL=$2
DEST="$DEPS_DIR/$NAME"
if [ ! -d "$DEST" ]; then
echo "[*] Fetching dependency: $NAME"
mkdir -p "$DEPS_DIR"
TMP_ZIP="$DEPS_DIR/$NAME.zip"
wget -O "$TMP_ZIP" "$URL"
unzip -q "$TMP_ZIP" -d "$DEST"
rm -f "$TMP_ZIP"
echo "[✓] $NAME ready at $DEST"
else
echo "[=] Using cached dependency: $NAME"
fi
}
# Dependecy declaration
LIBCXX_NAME="libcxx"
LIBCXX_URL="https://github.com/Innovative-cst-debug/libcpp/releases/download/1.0/libcpp.zip"
fetch_dep "$LIBCXX_NAME" "$LIBCXX_URL"
# Build function
build() {
ARCH=$1
case $ARCH in
arm64) TARGET=aarch64-linux-android; API=24 ;;
arm) TARGET=armv7a-linux-androideabi; API=21 ;;
x86) TARGET=i686-linux-android; API=21 ;;
x86_64) TARGET=x86_64-linux-android; API=24 ;;
*) exit 1 ;;
esac
export CC="$TOOLCHAIN/bin/${TARGET}${API}-clang"
export CXX="$TOOLCHAIN/bin/${TARGET}${API}-clang++"
export AR="$TOOLCHAIN/bin/llvm-ar"
BUILD_DIR="build-$ARCH"
INSTALL_DIR="$PWD/$BUILD_DIR/install/$PREFIX"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
rsync -a \
--exclude='android-ndk-*' \
--exclude='build-*' \
--exclude='deps' \
../ .
LIBCXX_ROOT="$DEPS_DIR/$LIBCXX_NAME"
LIBCXX_LIB="$LIBCXX_ROOT/build-$ARCH/install/$PREFIX/lib"
export CFLAGS="--sysroot=$SYSROOT -fPIC -DANDROID"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="--sysroot=$SYSROOT -L$LIBCXX_LIB -lc++_shared"
$CXX $CFLAGS -I. -c posix_spawn.cpp -o posix_spawn.o
$CXX $LDFLAGS -shared posix_spawn.o -o libandroid-spawn.so
$AR rcu libandroid-spawn.a posix_spawn.o
mkdir -p "$INSTALL_DIR/include" "$INSTALL_DIR/lib"
cp posix_spawn.h "$INSTALL_DIR/include/spawn.h"
cp libandroid-spawn.a "$INSTALL_DIR/lib/"
cp libandroid-spawn.so "$INSTALL_DIR/lib/"
cd ..
echo "[✓] Build successful for $ARCH"
echo " Install path: $INSTALL_DIR"
echo
}
# Build all architectures
for arch in arm64 arm x86 x86_64; do
build $arch
done
echo "[✓] Build complete"