build.sh 2.3 KB
Newer Older
B
Bin Li 已提交
1 2 3 4
#!/usr/bin/env bash

set -e -u -o pipefail

Y
yejianwu 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Usage() {
  echo "Usage: ./build.sh [dynamic|static]"
  echo "|==============|====================|"
  echo "|   parameter  |  lib will linked   |"
  echo "|==============|====================|"
  echo "|   dynamic    |    libmace.so      |"
  echo "|--------------|--------------------|"
  echo "|   static     |    libmace.a       |"
  echo "|--------------|--------------------|"
}

if [ $# -lt 1 ]; then
  Usage
  exit 1
fi

MACE_LINK_TYPE=$1

L
Liangliang He 已提交
23
pushd ../..
B
Bin Li 已提交
24

25
TARGET_ABI=arm64-v8a
L
Liangliang He 已提交
26
ANDROID_DEMO_DIR=examples/android/
Y
yejianwu 已提交
27
LIBRARY_DIR=$ANDROID_DEMO_DIR/macelibrary/src/main/cpp/
L
Liangliang He 已提交
28
INCLUDE_DIR=$LIBRARY_DIR/include
29
LIBMACE_DIR=$LIBRARY_DIR/lib/$TARGET_ABI/
Y
yejianwu 已提交
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
LIBGNUSTL_SHARED_SO=libgnustl_shared.so
LIBCPP_SHARED_SO=libc++_shared.so

JNILIBS_DIR=$ANDROID_DEMO_DIR/macelibrary/src/main/jniLibs/$TARGET_ABI
rm -rf $JNILIBS_DIR

if [ $MACE_LINK_TYPE == "dynamic" ]; then
  BAZEL_LIBMACE_TARGET=mace/libmace:libmace.so
  BAZEL_GEN_LIBMACE_PATH=bazel-bin/mace/libmace/libmace.so
elif [ $MACE_LINK_TYPE == "static" ]; then
  BAZEL_LIBMACE_TARGET=mace/libmace:libmace_static
  BAZEL_GEN_LIBMACE_PATH=bazel-genfiles/mace/libmace/libmace.a
else
  Usage
  exit 1
fi
46

L
Liangliang He 已提交
47
python tools/converter.py convert --config=examples/android/mobilenet.yml --target_abis=$TARGET_ABI
48

L
Liangliang He 已提交
49 50
rm -rf $INCLUDE_DIR && mkdir -p $INCLUDE_DIR
rm -rf $LIBMACE_DIR && mkdir -p $LIBMACE_DIR
51 52
rm -rf $LIBRARY_DIR/model/

L
Liangliang He 已提交
53 54 55
cp -rf include/mace $INCLUDE_DIR
cp -rf build/mobilenet/include/mace/public/*.h $INCLUDE_DIR/mace/public/
cp -rf build/mobilenet/model $LIBRARY_DIR
56

57
bazel build --config android --config optimization $BAZEL_LIBMACE_TARGET --define neon=true --define openmp=true --define opencl=true --define quantize=true --cpu=$TARGET_ABI
Y
yejianwu 已提交
58
cp -rf $BAZEL_GEN_LIBMACE_PATH $LIBMACE_DIR
B
Bin Li 已提交
59

Y
yejianwu 已提交
60 61 62
if [ $MACE_LINK_TYPE == "dynamic" ]; then
  mkdir -p $JNILIBS_DIR
  cp -rf $BAZEL_GEN_LIBMACE_PATH $JNILIBS_DIR
B
Bin Li 已提交
63

Y
yejianwu 已提交
64 65 66 67 68 69 70
  if [[ "" != `$ANDROID_NDK_HOME/ndk-depends $BAZEL_GEN_LIBMACE_PATH | grep $LIBGNUSTL_SHARED_SO` ]]; then
    cp -rf $ANDROID_NDK_HOME/sources/cxx-stl/gnu-libstdc++/4.9/libs/$TARGET_ABI/$LIBGNUSTL_SHARED_SO $JNILIBS_DIR
  fi

  if [[ "" != `$ANDROID_NDK_HOME/ndk-depends $BAZEL_GEN_LIBMACE_PATH | grep $LIBCPP_SHARED_SO` ]]; then
    cp -rf $ANDROID_NDK_HOME/sources/cxx-stl/llvm-libc++/libs/$TARGET_ABI/$LIBCPP_SHARED_SO $JNILIBS_DIR
  fi
B
Bin Li 已提交
71
fi
Y
yejianwu 已提交
72 73 74 75 76 77

popd

# Build demo
./gradlew clean
./gradlew build