1#!/bin/bash 2set -eux 3 4############################################################################## 5# Common util functions for Android build scripts. 6############################################################################## 7 8if [ -z "$PYTORCH_DIR" ]; then 9 echo "PYTORCH_DIR not set!" 10 exit 1 11fi 12 13retry () { 14 "$@" || (sleep 10 && "$@") || (sleep 20 && "$@") || (sleep 40 && "$@") 15} 16 17check_android_sdk() { 18 if [ -z "$ANDROID_HOME" ]; then 19 echo "ANDROID_HOME not set; please set it to Android sdk directory" 20 exit 1 21 fi 22 23 if [ ! -d "$ANDROID_HOME" ]; then 24 echo "ANDROID_HOME not a directory; did you install it under $ANDROID_HOME?" 25 exit 1 26 fi 27 echo "ANDROID_HOME:$ANDROID_HOME" 28} 29 30check_gradle() { 31 GRADLE_PATH=$PYTORCH_DIR/android/gradlew 32 echo "GRADLE_PATH:$GRADLE_PATH" 33} 34 35parse_abis_list() { 36 # sync with https://github.com/pytorch/pytorch/blob/0ca0e02685a9d033ac4f04e2fa5c8ba6dbc5ae50/android/gradle.properties#L1 37 ABIS_LIST="armeabi-v7a,arm64-v8a,x86,x86_64" 38 CUSTOM_ABIS_LIST=false 39 if [ $# -gt 0 ]; then 40 ABIS_LIST=$1 41 CUSTOM_ABIS_LIST=true 42 fi 43 44 echo "ABIS_LIST:$ABIS_LIST" 45 echo "CUSTOM_ABIS_LIST:$CUSTOM_ABIS_LIST" 46} 47 48build_android() { 49 PYTORCH_ANDROID_DIR="$PYTORCH_DIR/android" 50 BUILD_ROOT="${BUILD_ROOT:-$PYTORCH_DIR}" 51 echo "BUILD_ROOT:$BUILD_ROOT" 52 53 LIB_DIR="$PYTORCH_ANDROID_DIR/pytorch_android/src/main/jniLibs" 54 INCLUDE_DIR="$PYTORCH_ANDROID_DIR/pytorch_android/src/main/cpp/libtorch_include" 55 56 # These directories only contain symbolic links. 57 rm -rf "$LIB_DIR" && mkdir -p "$LIB_DIR" 58 rm -rf "$INCLUDE_DIR" && mkdir -p "$INCLUDE_DIR" 59 60 for abi in $(echo "$ABIS_LIST" | tr ',' '\n') 61 do 62 echo "abi:$abi" 63 ANDROID_BUILD_ROOT="$BUILD_ROOT/build_android_$abi" 64 ANDROID_ABI="$abi" \ 65 BUILD_ROOT="$ANDROID_BUILD_ROOT" \ 66 "$PYTORCH_DIR/scripts/build_android.sh" \ 67 -DANDROID_CCACHE="$(which ccache)" \ 68 -DUSE_LITE_INTERPRETER_PROFILER="OFF" 69 70 echo "$abi build output lib,include at $ANDROID_BUILD_ROOT/install" 71 ln -s "$ANDROID_BUILD_ROOT/install/lib" "$LIB_DIR/$abi" 72 ln -s "$ANDROID_BUILD_ROOT/install/include" "$INCLUDE_DIR/$abi" 73 done 74} 75