#!/bin/bash

function AssertZeroExitCode {
  EXITCODE=$?
  if [ $EXITCODE -ne 0 ]; then
    echo "$1"
    echo "+++ Command exited with code $EXITCODE. Please fix the above errors and re-run"
    exit 1
  fi
}

BUILD_DIR=build-x86_64
FLATBUFFERS_DIR=$PWD/flatbuffers

function BuildFlatbuffers {
  pushd flatbuffers
  rm -rf $BUILD_DIR
  rm -f CMakeCache.txt
  FLATBUFFERS_DIR=$PWD

  mkdir -p $BUILD_DIR
  cd $BUILD_DIR

  echo "+++ Building Google Flatbufers"
  CMD="cmake -DFLATBUFFERS_BUILD_FLATC=1 -DCMAKE_INSTALL_PREFIX:PATH=$FLATBUFFERS_DIR .."
  # Force -fPIC to allow relocatable linking.
  CXXFLAGS="-fPIC" $CMD
  AssertZeroExitCode "cmake Google Flatbuffers failed. command was: ${CMD}"
  make all install
  AssertZeroExitCode "Building Google Flatbuffers failed"
  mkdir -p $FLATBUFFERS_DIR/bin
  cp -f flatc $FLATBUFFERS_DIR/bin
  AssertZeroExitCode "Failed to copy the Flatbuffers Compiler"
  popd
}

if [ ! -d flatbuffers ]; then
  echo "++ Downloading FlatBuffers v1.12.0"

  FLATBUFFERS_PKG=v1.12.0.tar.gz

  curl -LOk https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz
  AssertZeroExitCode "Downloading FlatBuffers failed"
  mkdir -p flatbuffers
  tar xzf $FLATBUFFERS_PKG -C flatbuffers --strip-components 1
  AssertZeroExitCode "Unpacking FlatBuffers failed"

  BuildFlatbuffers

  rm -rf $FLATBUFFERS_PKG
fi

if [ ! -d armnn ]; then
  echo "++ Downloading armnn"

  git clone git@github.com:ARM-software/armnn armnn
  AssertZeroExitCode "Cloning armnn failed"
fi

if [ ! -d clframework ]; then
  echo "++ Downloading clframework"

  git clone git@github.com:ARM-software/ComputeLibrary clframework
  AssertZeroExitCode "Cloning clframework failed"
fi

# Get scons to create the generated source code which clframework needs to compile.
# This is required for the Android build system to build clframework (see below)
pushd clframework
scons os=android build=embed_only neon=0 opencl=1 embed_kernels=1 validation_tests=0 \
    arch=arm64-v8.2-a build_dir=android-arm64v8.2-a benchmark_tests=0 -j16 \
    build/android-arm64v8.2-a/src/core/arm_compute_version.embed build/android-arm64v8.2-a/src/core/CL/cl_kernels
AssertZeroExitCode "Precompiling clframework failed for v82.a"

scons os=android build=embed_only neon=0 opencl=1 embed_kernels=1 validation_tests=0 \
    arch=arm64-v8a build_dir=android-arm64v8a benchmark_tests=0 -j16 \
    build/android-arm64v8a/src/core/arm_compute_version.embed build/android-arm64v8a/src/core/CL/cl_kernels
AssertZeroExitCode "Precompiling clframework failed for v8a."
popd

if [ ! -d armnn/generated ]; then
  mkdir -p armnn/generated
fi

if [ ! -f armnn/generated/ArmnnSchema_generated.h ]; then
  echo "+++ Generating new ArmnnSchema_generated.h"
  $FLATBUFFERS_DIR/bin/flatc -o armnn/generated --cpp armnn/src/armnnSerializer/ArmnnSchema.fbs
  AssertZeroExitCode "Generating ArmnnSchema_generated.h failed."
fi
