summaryrefslogtreecommitdiff
path: root/scripts/build_deps.sh
blob: 20ed016b1d4b664c53e8c68dda0bb85d29e41124 (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
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
102
103
104
#!/bin/bash

function quit {
    echo "Task failed. $1."
    exit 1
}

SCRIPT_DIR=$(dirname "$0")
BASE_DIR="$SCRIPT_DIR/.."
DIR_OVPNASSETS=./ics-openvpn/main/build/ovpnassets
DIR_OVPNLIBS=./ics-openvpn/main/build/intermediates/cmake/skeletonRelease/obj
DIR_GOLIBS=./bitmaskcore/lib/
#FILE_X86=./go/out/x86/piedispatcherlib
#FILE_ARM=./go/out/armeabi-v7a/piedispatcherlib
DIR_TORLIBS=./tor-android/external/lib
EXPECTED_NDK_VERSION="21.4.7075529"
EXPECTED_ANDROID_NDK_RELEASE_VERSION="r21e"
if [[ -z $BUILD_TOR ]]; then BUILD_TOR=true; fi
if [[ -z $BUILD_OPENVPN_LIBS ]]; then BUILD_OPENVPN_LIBS=true; fi

# init
# look for empty dir

cd $BASE_DIR

# try to set the expected ndk version
if [[ $(ls -A ${ANDROID_HOME}/ndk/${EXPECTED_NDK_VERSION}) ]]
then
  ANDROID_NDK_HOME=${ANDROID_HOME}/ndk/${EXPECTED_NDK_VERSION}
elif [[ -f ${ANDROID_HOME/android-ndk-}${EXPECTED_ANDOID_NDK_RELEASE_VERSION }} ]]; then
  echo "make sure you have the right ndk version installed and paths are set correctly"
  exit 1
else
  # ndk was manually downloaded from http://dl.google.com/android/repository
  ANDROID_NDK_HOME=${ANDROID_HOME}/android-ndk-${EXPECTED_ANDROID_NDK_RELEASE_VERSION}
fi
NDK_VERSION=`cat ${ANDROID_NDK_HOME}/source.properties | grep Pkg.Revision | cut -d "=" -f2 | sed 's/ //g'`

ls -la ${ANDROID_HOME}/*/*ndk
echo "ndk version: $NDK_VERSION"
echo "ANDROID_NDK_HOME: $ANDROID_NDK_HOME"

# build tor libs
if [[ ${BUILD_TOR} == false ]]; then
  echo "skipping Tor"
elif [[ $(ls -A ${DIR_TORLIBS}) ]]; then
  echo "Dirty build: Reusing tor libraries"
else
  echo "Clean build: compiling tor libraries"
  if [[ ! -d $DIR_TORLIBS ]]
  then
    mkdir $DIR_TORLIBS
  fi
  cd ./tor-android
  if [[ $NDK_VERSION == $EXPECTED_NDK_VERSION ]]
  then
    ./tor-droid-make.sh fetch -c || quit "failed to checkout tor dependencies"
    ./tor-droid-make.sh build -b release || quit "failed to build tor release binaries"
    ./gradlew --stop
  else
    quit "expected NDK VERSION: $EXPECTED_NDK_VERSION. But found: $NDK_VERSION"
  fi
  cd ..
fi

# build openvpn libs
if [[ ${BUILD_OPENVPN_LIBS} == false ]]; then
  echo "skipping openvpn"
elif [[ $(ls -A ${DIR_OVPNASSETS}) && $(ls -A ${DIR_OVPNLIBS}) ]]; then
    echo "Dirty build: skipped externalNativeBuild - reusing existing libs"
else
    echo "Clean build: starting externalNativeBuild"
    cd ./ics-openvpn || quit "Directory ics-opevpn not found"
    ./gradlew clean main:externalNativeBuildCleanSkeletonOvpn2Release main:externalNativeBuildSkeletonOvpn2Release --debug --stacktrace || quit "Build ics-openvpn native libraries failed"
    ./gradlew --stop
    cd ..
fi

# build bitmask core (shapeshifter, snowflake, pgpverify)
if [[ $(ls -A ${DIR_GOLIBS}) ]]
then
    echo "Dirty build: Reusing go libraries"
else
    echo "Clean build: compiling Go libraries"
    cd ./bitmaskcore || quit "Directory go not found"
    if [[ ! -d lib ]]
    then
        mkdir lib
    fi
    ./build_core.sh || quit "failed to build bitmaskcore"
    cp lib/bitmaskcore.aar ../lib-bitmask-core/.
    cp lib/bitmaskcore-sources.jar ../lib-bitmask-core/.
    cp lib/bitmaskcore_web.aar ../lib-bitmask-core-web/.
    cp lib/bitmaskcore_web-sources.jar ../lib-bitmask-core-web/.
    cp lib/bitmaskcore_arm.aar ../lib-bitmask-core-armv7/.
    cp lib/bitmaskcore_arm-sources.jar ../lib-bitmask-core-armv7/.
    cp lib/bitmaskcore_arm64.aar ../lib-bitmask-core-arm64/.
    cp lib/bitmaskcore_arm64-sources.jar ../lib-bitmask-core-arm64/.
    cp lib/bitmaskcore_x86.aar ../lib-bitmask-core-x86/.
    cp lib/bitmaskcore_x86-sources.jar ../lib-bitmask-core-x86/.
    cp lib/bitmaskcore_x86_64.aar ../lib-bitmask-core-x86_64/.
    cp lib/bitmaskcore_x86_64-sources.jar ../lib-bitmask-core-x86_64/.
    cd ..
fi