dev
sh 85 lines 2.6 KB
Raw
1 #!/bin/bash
2
3 set -e -x
4 cd "$(dirname "$0")"
5 # . ./config.sh
6
7 CW_DECRED_DIR=$(realpath ../..)/cw_decred
8 LIBWALLET_PATH="${PWD}/decred/libwallet"
9 LIBWALLET_URL="https://github.com/decred/libwallet.git"
10 LIBWALLET_VERSION="ecc4a5fb9594368777848de42d7e072d62406507"
11
12 if [[ -e $LIBWALLET_PATH ]]; then
13 rm -fr $LIBWALLET_PATH || true
14 fi
15 mkdir -p $LIBWALLET_PATH || true
16
17 git clone $LIBWALLET_URL $LIBWALLET_PATH
18 cd $LIBWALLET_PATH
19 git checkout $LIBWALLET_VERSION
20
21 if [[ "x$ANDROID_HOME" == "x" ]];
22 then
23 echo "ANDROID_HOME is missing, please declare it before building (on macos it is usually $HOME/Library/Android/sdk)"
24 echo "echo > ~/.zprofile"
25 echo "echo 'export ANDROID_HOME=\"\$HOME/Library/Android/sdk\" > ~/.zprofile"
26 exit 1
27 fi
28
29 if [[ "x$ANDROID_NDK_VERSION" == "x" ]];
30 then
31 echo "ANDROID_NDK_VERSION is missing, please declare it before building"
32 echo "You have these versions installed on your system currently:"
33 ls ${ANDROID_HOME}/ndk/ | cat | awk '{ print "- " $1 }'
34 echo "echo > ~/.zprofile"
35 echo "echo 'export ANDROID_NDK_VERSION=..... > ~/.zprofile"
36 exit 1
37 fi
38
39 export NDK_BIN_PATH="${ANDROID_HOME}/ndk/${ANDROID_NDK_VERSION}/toolchains/llvm/prebuilt/$(uname | tr '[:upper:]' '[:lower:]')-x86_64/bin"
40 export ANDROID_API_VERSION=21
41 # export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation" | rev | cut -d' ' -f1 | rev)/include"
42
43 for arch in "aarch" "aarch64" "x86_64"
44 do
45 TRIPLET=""
46 TARGET=""
47 ARCH_ABI=""
48
49 case $arch in
50 "aarch")
51 TRIPLET="armv7a-linux-androideabi"
52 TARGET="arm"
53 ARCH_ABI="armeabi-v7a";;
54 "aarch64")
55 TRIPLET="aarch64-linux-android"
56 TARGET="arm64"
57 ARCH_ABI="arm64-v8a";;
58 "x86_64")
59 TRIPLET="x86_64-linux-android"
60 TARGET="amd64"
61 ARCH_ABI="x86_64";;
62 *)
63 echo "Unknown arch: $arch"
64 exit 1;;
65 esac
66
67 # PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
68 if [[ -e ./build ]]; then
69 rm -fr ./build
70 fi
71
72 export CGO_LDFLAGS="-O2 -g -s -w -Wl,-z,max-page-size=16384"
73 CLANG_PATH="${NDK_BIN_PATH}/${TRIPLET}${ANDROID_API_VERSION}-clang"
74 CGO_ENABLED=1 GOOS=android GOARCH=${TARGET} CC=${CLANG_PATH} CXX=${CLANG_PATH}++ \
75 go build -v -buildmode=c-shared -o ./build/${TRIPLET}-libdcrwallet.so ./cgo
76
77 DEST_LIB_DIR=${CW_DECRED_DIR}/android/libs/${ARCH_ABI}
78 mkdir -p $DEST_LIB_DIR
79 cp ${LIBWALLET_PATH}/build/${TRIPLET}-libdcrwallet.so $DEST_LIB_DIR/libdcrwallet.so
80 done
81
82 HEADER_DIR=$CW_DECRED_DIR/lib/api
83 cp ${LIBWALLET_PATH}/build/${TRIPLET}-libdcrwallet.h $HEADER_DIR/libdcrwallet.h
84 cd $CW_DECRED_DIR
85 dart run ffigen