1#!/bin/bash -i 2set -e 3 4################################################## 5### SET THE PATH TO YOUR ANDROID NDK DIRECTORY ### 6################################################## 7if [ -z "$NDK_ROOT" ]; then 8 NDK_ROOT=${HOME}/android-ndk 9fi 10################################################## 11# PATH OF THE MEGA SDK RELATIVE TO jni/mega/sdk OR ABSOLUTE 12MEGASDK_ROOT=../../../../../../../../.. 13################################################## 14################################################## 15# LIST OF ARCHS TO BE BUILT. 16if [ -z "${BUILD_ARCHS}" ]; then 17 # If no environment variable is defined, use all archs. 18 BUILD_ARCHS="x86 armeabi-v7a x86_64 arm64-v8a" 19fi 20################################################## 21 22if [ ! -d "${NDK_ROOT}" ]; then 23 echo "* NDK_ROOT not set. Please download ndk r16b and export NDK_ROOT variable or create a link at ${HOME}/android-ndk and try again." 24 exit 1 25fi 26 27NDK_BUILD=${NDK_ROOT}/ndk-build 28JNI_PATH=`pwd` 29CC=`${NDK_ROOT}/ndk-which gcc` 30LIBDIR=${JNI_PATH}/../obj/local/armeabi 31JAVA_OUTPUT_PATH=${JNI_PATH}/../java 32APP_PLATFORM=`grep APP_PLATFORM Application.mk | cut -d '=' -f 2` 33ANDROID_API=21 34LOG_FILE=/dev/null 35 36CRYPTOPP=cryptopp 37CRYPTOPP_VERSION=820 38CRYPTOPP_SOURCE_FILE=cryptopp${CRYPTOPP_VERSION}.zip 39CRYPTOPP_SOURCE_FOLDER=${CRYPTOPP}/${CRYPTOPP} 40CRYPTOPP_DOWNLOAD_URL=http://www.cryptopp.com/${CRYPTOPP_SOURCE_FILE} 41CRYPTOPP_SHA1="b042d2f0c93410abdec7c12bcd92787d019f8da1" 42 43SQLITE=sqlite 44SQLITE_VERSION=3300100 45SQLITE_YEAR=2019 46SQLITE_BASE_NAME=sqlite-amalgamation-${SQLITE_VERSION} 47SQLITE_SOURCE_FILE=${SQLITE_BASE_NAME}.zip 48SQLITE_SOURCE_FOLDER=${SQLITE}/${SQLITE} 49SQLITE_DOWNLOAD_URL=https://www.sqlite.org/${SQLITE_YEAR}/${SQLITE_SOURCE_FILE} 50SQLITE_SHA1="ff9b4e140fe0764bc7bc802facf5ac164443f517" 51 52CURL=curl 53CURL_VERSION=7.67.0 54C_ARES_VERSION=1.15.0 55CURL_EXTRA="--disable-smb --disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smtp --disable-gopher --disable-sspi" 56CURL_SOURCE_FILE=curl-${CURL_VERSION}.tar.gz 57CURL_SOURCE_FOLDER=curl-${CURL_VERSION} 58CURL_DOWNLOAD_URL=http://curl.haxx.se/download/${CURL_SOURCE_FILE} 59CURL_SHA1="a91652f1eaa810866dce55b2d177c5b20f4aa7a7" 60 61ARES_SOURCE_FILE=c-ares-${C_ARES_VERSION}.tar.gz 62ARES_SOURCE_FOLDER=c-ares-${C_ARES_VERSION} 63ARES_CONFIGURED=${CURL}/${ARES_SOURCE_FOLDER}/Makefile.inc 64ARES_DOWNLOAD_URL=http://c-ares.haxx.se/download/${ARES_SOURCE_FILE} 65ARES_SHA1="74a50c02b7f051c4fb66c0f60f187350f196d908" 66 67OPENSSL=openssl 68OPENSSL_VERSION=1.1.1d 69OPENSSL_SOURCE_FILE=openssl-${OPENSSL_VERSION}.tar.gz 70OPENSSL_SOURCE_FOLDER=${OPENSSL}-${OPENSSL_VERSION} 71OPENSSL_DOWNLOAD_URL=https://www.openssl.org/source/old/${OPENSSL_VERSION%?}/${OPENSSL_SOURCE_FILE} 72OPENSSL_PREFIX=${JNI_PATH}/${OPENSSL}/${OPENSSL_SOURCE_FOLDER} 73OPENSSL_SHA1="056057782325134b76d1931c48f2c7e6595d7ef4" 74 75SODIUM=sodium 76SODIUM_VERSION=1.0.18 77SODIUM_SOURCE_FILE=libsodium-${SODIUM_VERSION}.tar.gz 78SODIUM_SOURCE_FOLDER=libsodium-${SODIUM_VERSION} 79SODIUM_DOWNLOAD_URL=https://download.libsodium.org/libsodium/releases/${SODIUM_SOURCE_FILE} 80SODIUM_SHA1="795b73e3f92a362fabee238a71735579bf46bb97" 81 82LIBUV=libuv 83LIBUV_VERSION=1.8.0 84LIBUV_SOURCE_FILE=libuv-v${LIBUV_VERSION}.tar.gz 85LIBUV_SOURCE_FOLDER=libuv-v${LIBUV_VERSION} 86LIBUV_DOWNLOAD_URL=http://dist.libuv.org/dist/v${LIBUV_VERSION}/${LIBUV_SOURCE_FILE} 87LIBUV_SHA1="91ea51844ec0fac1c6358a7ad3e8bba128e9d0cc" 88 89MEDIAINFO=mediainfo 90MEDIAINFO_VERSION=4ee7f77c087b29055f48d539cd679de8de6f9c48 91MEDIAINFO_SOURCE_FILE=${MEDIAINFO_VERSION}.zip 92MEDIAINFO_SOURCE_FOLDER=MediaInfoLib-${MEDIAINFO_VERSION} 93MEDIAINFO_DOWNLOAD_URL=https://github.com/meganz/MediaInfoLib/archive/${MEDIAINFO_SOURCE_FILE} 94MEDIAINFO_SHA1="30927c761418e807d8d3b64e171a6c9ab9659c2e" 95 96ZENLIB=ZenLib 97ZENLIB_VERSION=6694a744d82d942c4a410f25f916561270381889 98ZENLIB_SOURCE_FILE=${ZENLIB_VERSION}.zip 99ZENLIB_SOURCE_FOLDER=ZenLib-${ZENLIB_VERSION} 100ZENLIB_DOWNLOAD_URL=https://github.com/MediaArea/ZenLib/archive/${ZENLIB_SOURCE_FILE} 101ZENLIB_SHA1="1af04654c9618f54ece624a0bad881a3cfef3692" 102 103function downloadCheckAndUnpack() 104{ 105 local URL=$1 106 local FILENAME=$2 107 local SHA1=$3 108 local TARGETPATH=$4 109 110 if [[ -f ${FILENAME} ]]; then 111 echo "* Already downloaded: '${FILENAME}'" 112 local CURRENTSHA1=`sha1sum ${FILENAME} | cut -d " " -f 1` 113 if [ "${SHA1}" != "${CURRENTSHA1}" ]; then 114 echo "* Invalid hash. Redownloading..." 115 wget -O ${FILENAME} ${URL} &>> ${LOG_FILE} 116 fi 117 else 118 echo "* Downloading '${FILENAME}' ..." 119 wget -O ${FILENAME} ${URL} &>> ${LOG_FILE} 120 fi 121 122 local NEWSHA1=`sha1sum ${FILENAME} | cut -d " " -f 1` 123 if [ "${SHA1}" != "${NEWSHA1}" ]; then 124 echo "* Invalid hash. It is ${NEWSHA1} but it should be ${SHA1}. Aborting..." 125 exit 1 126 fi 127 128 if [[ "${FILENAME}" =~ \.tar\.[^\.]+$ ]]; then 129 echo "* Extracting TAR file..." 130 tar --overwrite -xf ${FILENAME} -C ${TARGETPATH} &>> ${LOG_FILE} 131 elif [[ "${FILENAME}" =~ \.zip$ ]]; then 132 echo "* Extracting ZIP file..." 133 unzip -o ${FILENAME} -d ${TARGETPATH} &>> ${LOG_FILE} 134 else 135 echo "* Dont know how to extract '${FILENAME}'" 136 exit 1 137 fi 138 139 echo "* Extraction finished" 140} 141 142function createMEGABindings 143{ 144 mkdir mega/sdk &>> ${LOG_FILE} || true 145 rm mega/sdk/src &>> ${LOG_FILE} || true 146 ln -s ${MEGASDK_ROOT}/src mega/sdk/src &>> ${LOG_FILE} || true 147 rm mega/sdk/include &>> ${LOG_FILE} || true 148 ln -s ${MEGASDK_ROOT}/include mega/sdk/include &>> ${LOG_FILE} || true 149 rm mega/sdk/bindings &>> ${LOG_FILE} || true 150 ln -s ${MEGASDK_ROOT}/bindings mega/sdk/bindings &>> ${LOG_FILE} || true 151 rm mega/sdk/third_party &>> ${LOG_FILE} || true 152 ln -s ${MEGASDK_ROOT}/third_party mega/sdk/third_party &>> ${LOG_FILE} || true 153 154 echo "* Creating MEGA Java bindings" 155 mkdir -p ../java/nz/mega/sdk 156 swig -c++ -Imega/sdk/include -java -package nz.mega.sdk -outdir ${JAVA_OUTPUT_PATH}/nz/mega/sdk -o bindings/megasdk.cpp -DHAVE_LIBUV -DENABLE_CHAT mega/sdk/bindings/megaapi.i &>> ${LOG_FILE} 157} 158 159 160if (( $# != 1 )); then 161 echo "Usage: $0 <all | bindings | clean | clean_mega>"; 162 exit 0 163fi 164 165if [ "$1" == "bindings" ]; then 166 createMEGABindings 167 echo "* Bindings ready!" 168 echo "* Running ndk-build" 169 ${NDK_BUILD} -j8 170 echo "* ndk-build finished" 171 echo "* Task finished OK" 172 exit 0 173fi 174 175if [ "$1" == "clean_mega" ]; then 176 echo "* Deleting Java bindings" 177 make -C mega -f MakefileBindings clean JAVA_BASE_OUTPUT_PATH=${JAVA_OUTPUT_PATH} &>> ${LOG_FILE} 178 rm -rf megachat/megachat.cpp megachat/megachat.h 179 echo "* Deleting tarballs" 180 rm -rf ../obj/local/armeabi 181 rm -rf ../obj/local/x86 182 rm -rf ../obj/local/arm64-v8a 183 rm -rf ../obj/local/x86_64 184 echo "* Task finished OK" 185 exit 0 186fi 187 188if [ "$1" == "clean" ]; then 189 echo "* Deleting Java bindings" 190 make -C mega -f MakefileBindings clean JAVA_BASE_OUTPUT_PATH=${JAVA_OUTPUT_PATH} &>> ${LOG_FILE} 191 rm -rf megachat/megachat.cpp megachat/megachat.h 192 193 echo "* Deleting source folders" 194 rm -rf ${CRYPTOPP_SOURCE_FOLDER} 195 rm -rf ${SQLITE_SOURCE_FOLDER} ${SQLITE}/${SQLITE_BASE_NAME} 196 rm -rf ${CURL}/${CURL_SOURCE_FOLDER} 197 rm -rf ${CURL}/${CURL} 198 rm -rf ${CURL}/${ARES_SOURCE_FOLDER} 199 rm -rf ${CURL}/ares 200 rm -rf ${OPENSSL}/${OPENSSL_SOURCE_FOLDER} 201 rm -rf ${OPENSSL}/${OPENSSL} 202 rm -rf ${SODIUM}/${SODIUM_SOURCE_FOLDER} 203 rm -rf ${SODIUM}/${SODIUM} 204 rm -rf ${LIBUV}/${LIBUV_SOURCE_FOLDER} 205 rm -rf ${LIBUV}/${LIBUV} 206 rm -rf ${MEDIAINFO}/${ZENLIB_SOURCE_FOLDER} 207 rm -rf ${MEDIAINFO}/${ZENLIB} 208 rm -rf ${MEDIAINFO}/${MEDIAINFO_SOURCE_FOLDER} 209 rm -rf ${MEDIAINFO}/${MEDIAINFO} 210 211 echo "* Deleting tarballs" 212 rm -rf ${CRYPTOPP}/${CRYPTOPP_SOURCE_FILE} 213 rm -rf ${CRYPTOPP}/${CRYPTOPP_SOURCE_FILE}.ready 214 rm -rf ${SQLITE}/${SQLITE_SOURCE_FILE} 215 rm -rf ${SQLITE}/${SQLITE_SOURCE_FILE}.ready 216 rm -rf ${CURL}/${CURL_SOURCE_FILE} 217 rm -rf ${CURL}/${ARES_SOURCE_FILE} 218 rm -rf ${CURL}/${CURL_SOURCE_FILE}.ready 219 rm -rf ${OPENSSL}/${OPENSSL_SOURCE_FILE} 220 rm -rf ${OPENSSL}/${OPENSSL_SOURCE_FILE}.ready 221 rm -rf ${SODIUM}/${SODIUM_SOURCE_FILE} 222 rm -rf ${SODIUM}/${SODIUM_SOURCE_FILE}.ready 223 rm -rf ${LIBUV}/${LIBUV_SOURCE_FILE} 224 rm -rf ${LIBUV}/${LIBUV_SOURCE_FILE}.ready 225 rm -rf ${MEDIAINFO}/${ZENLIB_SOURCE_FILE} 226 rm -rf ${MEDIAINFO}/${ZENLIB_SOURCE_FILE}.ready 227 rm -rf ${MEDIAINFO}/${MEDIAINFO_SOURCE_FILE} 228 rm -rf ${MEDIAINFO}/${MEDIAINFO_SOURCE_FILE}.ready 229 230 echo "* Deleting object files" 231 rm -rf ../obj/local/armeabi-v7a 232 rm -rf ../obj/local/arm64-v8a 233 rm -rf ../obj/local/x86 234 rm -rf ../obj/local/x86_64 235 236 echo "* Deleting libraries" 237 rm -rf ../libs/armeabi-v7a 238 rm -rf ../libs/arm64-v8a 239 rm -rf ../libs/x86 240 rm -rf ../libs/x86_64 241 242 echo "* Task finished OK" 243 exit 0 244fi 245 246if [ "$1" != "all" ]; then 247 echo "Usage: $0 <all | bindings | clean | clean_mega>"; 248 exit 1 249fi 250 251echo "* Building ${BUILD_ARCHS} arch(s)" 252 253echo "* Setting up MEGA" 254createMEGABindings 255echo "* MEGA is ready" 256 257echo "* Setting up libsodium" 258if [ ! -f ${SODIUM}/${SODIUM_SOURCE_FILE}.ready ]; then 259 downloadCheckAndUnpack ${SODIUM_DOWNLOAD_URL} ${SODIUM}/${SODIUM_SOURCE_FILE} ${SODIUM_SHA1} ${SODIUM} 260 ln -sf ${SODIUM_SOURCE_FOLDER} ${SODIUM}/${SODIUM} 261 pushd ${SODIUM}/${SODIUM} &>> ${LOG_FILE} 262 export ANDROID_NDK_HOME=${NDK_ROOT} 263 export NDK_PLATFORM=${APP_PLATFORM} 264 ./autogen.sh &>> ${LOG_FILE} 265 echo "#include <limits.h>" >> src/libsodium/include/sodium/export.h 266 sed -i 's/enable-minimal/enable-minimal --disable-pie/g' dist-build/android-build.sh 267 268 if [ -n "`echo ${BUILD_ARCHS} | grep -w armeabi-v7a`" ]; then 269 echo "* Prebuilding libsodium for ARMv7" 270 dist-build/android-armv7-a.sh &>> ${LOG_FILE} 271 ln -sf libsodium-android-armv7-a libsodium-android-armeabi-v7a 272 fi 273 274 if [ -n "`echo ${BUILD_ARCHS} | grep -w arm64-v8a`" ]; then 275 echo "* Prebuilding libsodium for ARMv8" 276 dist-build/android-armv8-a.sh &>> ${LOG_FILE} 277 ln -sf libsodium-android-armv8-a libsodium-android-arm64-v8a 278 fi 279 280 if [ -n "`echo ${BUILD_ARCHS} | grep -w x86`" ]; then 281 echo "* Prebuilding libsodium for x86" 282 dist-build/android-x86.sh &>> ${LOG_FILE} 283 ln -sf libsodium-android-i686 libsodium-android-x86 284 fi 285 286 if [ -n "`echo ${BUILD_ARCHS} | grep -w x86_64`" ]; then 287 echo "* Prebuilding libsodium for x86_64" 288 dist-build/android-x86_64.sh &>> ${LOG_FILE} 289 ln -sf libsodium-android-westmere libsodium-android-x86_64 290 fi 291 292 popd &>> ${LOG_FILE} 293 touch ${SODIUM}/${SODIUM_SOURCE_FILE}.ready 294fi 295echo "* libsodium is ready" 296 297echo "* Setting up Crypto++" 298if [ ! -f ${CRYPTOPP}/${CRYPTOPP_SOURCE_FILE}.ready ]; then 299 mkdir -p ${CRYPTOPP}/${CRYPTOPP} 300 downloadCheckAndUnpack ${CRYPTOPP_DOWNLOAD_URL} ${CRYPTOPP}/${CRYPTOPP_SOURCE_FILE} ${CRYPTOPP_SHA1} ${CRYPTOPP}/${CRYPTOPP} 301 cp ${NDK_ROOT}/sources/android/cpufeatures/cpu-features.h ${CRYPTOPP}/${CRYPTOPP}/ 302 touch ${CRYPTOPP}/${CRYPTOPP_SOURCE_FILE}.ready 303fi 304echo "* Crypto++ is ready" 305 306echo "* Setting up SQLite" 307if [ ! -f ${SQLITE}/${SQLITE_SOURCE_FILE}.ready ]; then 308 downloadCheckAndUnpack ${SQLITE_DOWNLOAD_URL} ${SQLITE}/${SQLITE_SOURCE_FILE} ${SQLITE_SHA1} ${SQLITE} 309 ln -fs ${SQLITE_BASE_NAME} ${SQLITE_SOURCE_FOLDER} 310 touch ${SQLITE}/${SQLITE_SOURCE_FILE}.ready 311fi 312echo "* SQLite is ready" 313 314echo "* Setting up libuv" 315if [ ! -f ${LIBUV}/${LIBUV_SOURCE_FILE}.ready ]; then 316 downloadCheckAndUnpack ${LIBUV_DOWNLOAD_URL} ${LIBUV}/${LIBUV_SOURCE_FILE} ${LIBUV_SHA1} ${LIBUV} 317 ln -sf ${LIBUV_SOURCE_FOLDER} ${LIBUV}/${LIBUV} 318 touch ${LIBUV}/${LIBUV_SOURCE_FILE}.ready 319fi 320echo "* libuv is ready" 321 322echo "* Setting up ZenLib" 323if [ ! -f ${MEDIAINFO}/${ZENLIB_SOURCE_FILE}.ready ]; then 324 downloadCheckAndUnpack ${ZENLIB_DOWNLOAD_URL} ${MEDIAINFO}/${ZENLIB_SOURCE_FILE} ${ZENLIB_SHA1} ${MEDIAINFO} 325 ln -sf ${ZENLIB_SOURCE_FOLDER} ${MEDIAINFO}/${ZENLIB} 326 cp mega/sdk/include/mega/mega_glob.h ${MEDIAINFO}/${ZENLIB}/Source/ZenLib/glob.h 327 touch ${MEDIAINFO}/${ZENLIB_SOURCE_FILE}.ready 328fi 329echo "* ZenLib is ready" 330 331echo "* Setting up MediaInfo" 332if [ ! -f ${MEDIAINFO}/${MEDIAINFO_SOURCE_FILE}.ready ]; then 333 downloadCheckAndUnpack ${MEDIAINFO_DOWNLOAD_URL} ${MEDIAINFO}/${MEDIAINFO_SOURCE_FILE} ${MEDIAINFO_SHA1} ${MEDIAINFO} 334 ln -sf ${MEDIAINFO_SOURCE_FOLDER} ${MEDIAINFO}/${MEDIAINFO} 335 touch ${MEDIAINFO}/${MEDIAINFO_SOURCE_FILE}.ready 336fi 337echo "* MediaInfo is ready" 338 339echo "* Setting up OpenSSL" 340if [ ! -f ${OPENSSL}/${OPENSSL_SOURCE_FILE}.ready ]; then 341 downloadCheckAndUnpack ${OPENSSL_DOWNLOAD_URL} ${OPENSSL}/${OPENSSL_SOURCE_FILE} ${OPENSSL_SHA1} ${OPENSSL} 342 ln -sf ${OPENSSL_SOURCE_FOLDER} ${OPENSSL}/${OPENSSL} 343 pushd ${OPENSSL}/${OPENSSL} &>> ${LOG_FILE} 344 ORIG_PATH=$PATH 345 346 if [ -n "`echo ${BUILD_ARCHS} | grep -w x86`" ]; then 347 echo "* Prebuilding OpenSSL for x86" 348 export ANDROID_NDK_HOME=${NDK_ROOT} 349 PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/:$ORIG_PATH 350 mkdir openssl-android-x86/ 351 ./Configure android-x86 -D__ANDROID_API__=${ANDROID_API} --openssldir=${PWD}/openssl-android-x86/ --prefix=${PWD}/openssl-android-x86/ &>> ${LOG_FILE} 352 make -j8 &>> ${LOG_FILE} 353 make install &>> ${LOG_FILE} 354 make clean &>> ${LOG_FILE} 355 fi 356 357 if [ -n "`echo ${BUILD_ARCHS} | grep -w armeabi-v7a`" ]; then 358 echo "* Prebuilding OpenSSL for ARMv7" 359 export ANDROID_NDK_HOME=${NDK_ROOT} 360 PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/:$ORIG_PATH 361 mkdir openssl-android-armeabi-v7a 362 ./Configure android-arm -latomic -D__ANDROID_API__=${ANDROID_API} --openssldir=${PWD}/openssl-android-armeabi-v7a/ --prefix=${PWD}/openssl-android-armeabi-v7a/ &>> ${LOG_FILE} 363 make -j8 &>> ${LOG_FILE} 364 make install &>> ${LOG_FILE} 365 make clean &>> ${LOG_FILE} 366 fi 367 368 if [ -n "`echo ${BUILD_ARCHS} | grep -w x86_64`" ]; then 369 echo "* Prebuilding OpenSSL for x86_64" 370 export ANDROID_NDK_HOME=${NDK_ROOT} 371 PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/:$ORIG_PATH 372 mkdir openssl-android-x86_64/ 373 ./Configure android-x86_64 -D__ANDROID_API__=${ANDROID_API} --openssldir=${PWD}/openssl-android-x86_64/ --prefix=${PWD}/openssl-android-x86_64/ &>> ${LOG_FILE} 374 make -j8 &>> ${LOG_FILE} 375 make install &>> ${LOG_FILE} 376 make clean &>> ${LOG_FILE} 377 fi 378 379 if [ -n "`echo ${BUILD_ARCHS} | grep -w arm64-v8a`" ]; then 380 echo "* Prebuilding OpenSSL for ARMv8" 381 export ANDROID_NDK_HOME=${NDK_ROOT} 382 PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/:$ORIG_PATH 383 mkdir -p openssl-android-arm64-v8a 384 ./Configure android-arm64 -latomic -D__ANDROID_API__=${ANDROID_API} --openssldir=${PWD}/openssl-android-arm64-v8a/ --prefix=${PWD}/openssl-android-arm64-v8a/ &>> ${LOG_FILE} 385 make -j8 &>> ${LOG_FILE} 386 make install &>> ${LOG_FILE} 387 make clean &>> ${LOG_FILE} 388 fi 389 390 popd &>> ${LOG_FILE} 391 PATH=$ORIG_PATH 392 touch ${OPENSSL}/${OPENSSL_SOURCE_FILE}.ready 393fi 394echo "* OpenSSL is ready" 395 396echo "* Setting up cURL with c-ares" 397if [ ! -f ${CURL}/${CURL_SOURCE_FILE}.ready ]; then 398 echo "* Setting up cURL" 399 downloadCheckAndUnpack ${CURL_DOWNLOAD_URL} ${CURL}/${CURL_SOURCE_FILE} ${CURL_SHA1} ${CURL} 400 ln -sf ${CURL_SOURCE_FOLDER} ${CURL}/${CURL} 401 echo "* cURL is ready" 402 403 echo "* Setting up c-ares" 404 downloadCheckAndUnpack ${ARES_DOWNLOAD_URL} ${CURL}/${ARES_SOURCE_FILE} ${ARES_SHA1} ${CURL} 405 ln -sf ${ARES_SOURCE_FOLDER} ${CURL}/ares 406 ln -sf ../${ARES_SOURCE_FOLDER} ${CURL}/${CURL_SOURCE_FOLDER}/ares 407 echo "* c-ares is ready" 408 touch ${CURL}/${CURL_SOURCE_FILE}.ready 409fi 410echo "* cURL with c-ares is ready" 411 412echo "* All dependencies are prepared!" 413 414echo "* Building SDK" 415rm -rf ../tmpLibs 416mkdir ../tmpLibs 417if [ -n "`echo ${BUILD_ARCHS} | grep -w x86`" ]; then 418 echo "* Running ndk-build x86" 419 ${NDK_BUILD} V=1 -j8 APP_ABI=x86 &>> ${LOG_FILE} 420 mv ../libs/x86 ../tmpLibs/ 421 echo "* ndk-build finished for x86" 422fi 423 424if [ -n "`echo ${BUILD_ARCHS} | grep -w armeabi-v7a`" ]; then 425 echo "* Running ndk-build arm 32bits (armeabi-v7a)" 426 ${NDK_BUILD} V=1 -j8 APP_ABI=armeabi-v7a &>> ${LOG_FILE} 427 mv ../libs/armeabi-v7a ../tmpLibs/ 428 echo "* ndk-build finished for arm 32bits (armeabi-v7a)" 429fi 430 431if [ -n "`echo ${BUILD_ARCHS} | grep -w x86_64`" ]; then 432 echo "* Running ndk-build x86_64" 433 ${NDK_BUILD} V=1 -j8 APP_ABI=x86_64 &>> ${LOG_FILE} 434 mv ../libs/x86_64 ../tmpLibs/ 435 echo "* ndk-build finished for x86_64" 436fi 437 438if [ -n "`echo ${BUILD_ARCHS} | grep -w arm64-v8a`" ]; then 439 echo "* Running ndk-build arm 64bits (arm64-v8a)" 440 ${NDK_BUILD} V=1 -j8 APP_ABI=arm64-v8a &>> ${LOG_FILE} 441 mv ../libs/arm64-v8a ../tmpLibs/ 442 echo "* ndk-build finished for arm 64bits (arm64-v8a)" 443fi 444mv ../tmpLibs/* ../libs/ 445rmdir ../tmpLibs/ 446 447echo "* Task finished OK" 448