| #!/bin/bash |
| |
| set -e |
| |
| dArmNN=/work |
| dComputeLib=/home/armnn-devenv/ComputeLibrary |
| dTensorflow=/home/armnn-devenv/google/tensorflow |
| dFlatBuffer=/home/armnn-devenv/flatbuffers |
| |
| #Function to build ARMNN |
| function buildArmNN() |
| { |
| mkdir -p ${dArmNN}/armnn-devenv && cd ${dArmNN}/armnn-devenv |
| git clone https://github.com/ARM-software/armnn.git && cd armnn/ |
| mkdir build && cd build |
| CXX=aarch64-linux-android-clang++ \ |
| CC=aarch64-linux-android-clang \ |
| CXX_FLAGS="-fPIE -fPIC" \ |
| cmake .. \ |
| -DCMAKE_SYSTEM_NAME=Android \ |
| -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \ |
| -DCMAKE_ANDROID_STANDALONE_TOOLCHAIN=/home/armnn-devenv/toolchains/aarch64-android-r17b/ \ |
| -DCMAKE_EXE_LINKER_FLAGS="-pie -llog" \ |
| -DARMCOMPUTE_ROOT=/home/armnn-devenv/ComputeLibrary/ \ |
| -DARMCOMPUTE_BUILD_DIR=/home/armnn-devenv/ComputeLibrary/build \ |
| -DBOOST_ROOT=/home/armnn-devenv/boost/install/ \ |
| -DARMCOMPUTENEON=1 -DARMCOMPUTECL=1 -DARMNNREF=1 \ |
| -DTF_GENERATED_SOURCES=/home/armnn-devenv/google/tf_pb/ -DBUILD_TF_PARSER=1 \ |
| -DPROTOBUF_ROOT=/home/armnn-devenv/google/arm64_pb_install/ |
| make -j8 |
| } |
| |
| # Function to update Compute Lib |
| function updateComputeLib() |
| { |
| pushd ${dComputeLib} |
| git pull |
| scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags="-fPIC" \ |
| benchmark_tests=0 validation_tests=0 os=android -j8 |
| echo "Compute Lib updated" |
| popd |
| } |
| |
| # Function to update FlatBuffer Lib |
| function updateFlatBuffer() |
| { |
| pushd ${dFlatBuffer} |
| git pull |
| cd android && cd jni && \ |
| rm -rf Application.mk && \ |
| echo "APP_STL := c++_static" >> Application.mk && \ |
| echo "NDK_TOOLCHAIN_VERSION" := clang >> Application.mk && \ |
| echo "APP_CPPFLAGS :=-std=c++11" >> Application.mk && \ |
| echo "APP_ABI := arm64-v8a" >> Application.mk && \ |
| echo "APP_PLATFORM := android-23" >> Application.mk && \ |
| echo "NDK_PLATFORM=android-23" >> Application.mk && \ |
| cd ../ && ndk-build -B |
| echo "Compute Lib updated" |
| popd |
| } |
| |
| # Main |
| if [ ! -d "/work/armnn-devenv/armnn/" ]; |
| then |
| buildArmNN |
| fi |
| |
| # Check Compute Library changes from repo |
| cd ${dComputeLib} |
| if [ $(git rev-parse HEAD) = $(git ls-remote $(git rev-parse --abbrev-ref @{u} | |
| sed 's/\// /g') | cut -f1) ] |
| then |
| echo "Compute Lib Up-to-date" |
| else |
| echo "New changes are availble for Compute Library repo." |
| echo "Do you wanna update (y/n)?" |
| read answer |
| if [ "$answer" != "${answer#[Yy]}" ] ;then |
| updateComputeLib |
| fi |
| fi |
| |
| # Check Tensorflow changes from repo |
| cd ${dTensorflow} |
| if [ $(git rev-parse HEAD) = $(git ls-remote $(git rev-parse --abbrev-ref @{u} | |
| sed 's/\// /g') | cut -f1) ] |
| then |
| echo "Tensrflow Lib Up-to-date" |
| else |
| echo "Tensrflow Lib Not Up-to-date" |
| echo "Skipping for now. Issue: #267" |
| #echo "New changes are availble for Compute Library repo." |
| #echo "Do you wanna update (y/n)?" |
| #read answer |
| #if [ "$answer" != "${answer#[Yy]}" ] ;then |
| # |
| #fi |
| fi |
| |
| # Check FlatBuffer changes from repo |
| cd ${dFlatBuffer} |
| if [ $(git rev-parse HEAD) = $(git ls-remote $(git rev-parse --abbrev-ref @{u} | |
| sed 's/\// /g') | cut -f1) ] |
| then |
| echo "FlatBuffer Up-to-date" |
| else |
| echo "FlatBuffer Not Up-to-date" |
| echo "New changes are availble for Compute Library repo." |
| echo "Do you wanna update (y/n)?" |
| read answer |
| if [ "$answer" != "${answer#[Yy]}" ] ;then |
| updateFlatBuffer |
| fi |
| fi |
| |
| exec "$@" |