blob: a94a54bc23cea17e5f91cf19c38a4a15411e19d8 (
plain)
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
|
#!/usr/bin/env bash
set -eu
# Ensure we are in the correct directory for the execution of this script
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd $script_dir
# Keep a GOPATH in the build directory to maintain a cache of downloaded libraries
export GOPATH=$script_dir/../../build/android-go-path/
mkdir -p $GOPATH
for arch in ${ARCHITECTURES:-armv7 aarch64 x86_64 i686}; do
case "$arch" in
"aarch64")
export ANDROID_C_COMPILER="${NDK_TOOLCHAIN_DIR}/aarch64-linux-android21-clang"
export ANDROID_STRIP_TOOL="${NDK_TOOLCHAIN_DIR}/aarch64-linux-android-strip"
export RUST_TARGET_TRIPLE="aarch64-linux-android"
export ANDROID_ABI="arm64-v8a"
export ANDROID_ARCH_NAME="arm64"
;;
"x86_64")
export ANDROID_C_COMPILER="${NDK_TOOLCHAIN_DIR}/x86_64-linux-android21-clang"
export ANDROID_STRIP_TOOL="${NDK_TOOLCHAIN_DIR}/x86_64-linux-android-strip"
export RUST_TARGET_TRIPLE="x86_64-linux-android"
export ANDROID_ABI="x86_64"
export ANDROID_ARCH_NAME="x86_64"
;;
"armv7")
export ANDROID_C_COMPILER="${NDK_TOOLCHAIN_DIR}/armv7a-linux-androideabi21-clang"
export ANDROID_STRIP_TOOL="${NDK_TOOLCHAIN_DIR}/arm-linux-androideabi-strip"
export RUST_TARGET_TRIPLE="armv7-linux-androideabi"
export ANDROID_ABI="armeabi-v7a"
export ANDROID_ARCH_NAME="arm"
;;
"i686")
export ANDROID_C_COMPILER="${NDK_TOOLCHAIN_DIR}/i686-linux-android21-clang"
export ANDROID_STRIP_TOOL="${NDK_TOOLCHAIN_DIR}/i686-linux-android-strip"
export RUST_TARGET_TRIPLE="i686-linux-android"
export ANDROID_ABI="x86"
export ANDROID_ARCH_NAME="x86"
;;
esac
# Build Wireguard-Go
echo $(pwd)
make -f Android.mk clean
export CFLAGS="-D__ANDROID_API__=21"
make -f Android.mk
# Strip and copy the libray to `android/build/extraJni/$ANDROID_ABI` to be able to build the APK
UNSTRIPPED_LIB_PATH="../../build/lib/$RUST_TARGET_TRIPLE/libwg.so"
STRIPPED_LIB_PATH="../../android/app/build/extraJni/$ANDROID_ABI/libwg.so"
# Create the directories with RWX permissions for all users so that the build server can clean
# the directories afterwards
mkdir -m 777 -p "$(dirname "$STRIPPED_LIB_PATH")"
$ANDROID_STRIP_TOOL --strip-unneeded --strip-debug -o "$STRIPPED_LIB_PATH" "$UNSTRIPPED_LIB_PATH"
# Set permissions so that the build server can clean the outputs afterwards
chmod 777 "$STRIPPED_LIB_PATH"
rm -rf build
done
# ensure `git clean -fd` does not require root permissions
find $GOPATH -exec chmod +rw {} \;
|