1*3e777be0SXin Li#!/bin/bash 2*3e777be0SXin Li 3*3e777be0SXin Li# 4*3e777be0SXin Li# Copyright © 2018, 2020-022 Arm Ltd and Contributors. All rights reserved. 5*3e777be0SXin Li# SPDX-License-Identifier: MIT 6*3e777be0SXin Li# 7*3e777be0SXin Li 8*3e777be0SXin Lifunction AssertZeroExitCode { 9*3e777be0SXin Li EXITCODE=$? 10*3e777be0SXin Li if [ $EXITCODE -ne 0 ]; then 11*3e777be0SXin Li echo "$1" 12*3e777be0SXin Li echo "+++ Command exited with code $EXITCODE. Please fix the above errors and re-run" 13*3e777be0SXin Li exit 1 14*3e777be0SXin Li fi 15*3e777be0SXin Li} 16*3e777be0SXin Li 17*3e777be0SXin LiBUILD_DIR=build-x86_64 18*3e777be0SXin LiFLATBUFFERS_DIR=$PWD/flatbuffers 19*3e777be0SXin Li 20*3e777be0SXin Lifunction BuildFlatbuffers { 21*3e777be0SXin Li pushd flatbuffers 22*3e777be0SXin Li rm -rf $BUILD_DIR 23*3e777be0SXin Li rm -f CMakeCache.txt 24*3e777be0SXin Li FLATBUFFERS_DIR=$PWD 25*3e777be0SXin Li 26*3e777be0SXin Li mkdir -p $BUILD_DIR 27*3e777be0SXin Li cd $BUILD_DIR 28*3e777be0SXin Li 29*3e777be0SXin Li echo "+++ Building Google Flatbufers" 30*3e777be0SXin Li CMD="cmake -DFLATBUFFERS_BUILD_FLATC=1 -DCMAKE_INSTALL_PREFIX:PATH=$FLATBUFFERS_DIR .." 31*3e777be0SXin Li # Force -fPIC to allow relocatable linking. 32*3e777be0SXin Li CXXFLAGS="-fPIC" $CMD 33*3e777be0SXin Li AssertZeroExitCode "cmake Google Flatbuffers failed. command was: ${CMD}" 34*3e777be0SXin Li make all install 35*3e777be0SXin Li AssertZeroExitCode "Building Google Flatbuffers failed" 36*3e777be0SXin Li mkdir -p $FLATBUFFERS_DIR/bin 37*3e777be0SXin Li cp -f flatc $FLATBUFFERS_DIR/bin 38*3e777be0SXin Li AssertZeroExitCode "Failed to copy the Flatbuffers Compiler" 39*3e777be0SXin Li popd 40*3e777be0SXin Li} 41*3e777be0SXin Li 42*3e777be0SXin Liif [ ! -d flatbuffers ]; then 43*3e777be0SXin Li echo "++ Downloading FlatBuffers v2.0.6" 44*3e777be0SXin Li 45*3e777be0SXin Li FLATBUFFERS_PKG=v2.0.6.tar.gz 46*3e777be0SXin Li 47*3e777be0SXin Li curl -LOk https://github.com/google/flatbuffers/archive/${FLATBUFFERS_PKG} 48*3e777be0SXin Li AssertZeroExitCode "Downloading FlatBuffers failed" 49*3e777be0SXin Li mkdir -p flatbuffers 50*3e777be0SXin Li tar xzf $FLATBUFFERS_PKG -C flatbuffers --strip-components 1 51*3e777be0SXin Li AssertZeroExitCode "Unpacking FlatBuffers failed" 52*3e777be0SXin Li 53*3e777be0SXin Li BuildFlatbuffers 54*3e777be0SXin Li 55*3e777be0SXin Li rm -rf $FLATBUFFERS_PKG 56*3e777be0SXin Lifi 57*3e777be0SXin Li 58*3e777be0SXin Liif [ ! -d armnn ]; then 59*3e777be0SXin Li echo "++ Downloading armnn" 60*3e777be0SXin Li 61*3e777be0SXin Li git clone git@github.com:ARM-software/armnn armnn 62*3e777be0SXin Li AssertZeroExitCode "Cloning armnn failed" 63*3e777be0SXin Lifi 64*3e777be0SXin Li 65*3e777be0SXin Liif [ ! -d clframework ]; then 66*3e777be0SXin Li echo "++ Downloading clframework" 67*3e777be0SXin Li 68*3e777be0SXin Li git clone git@github.com:ARM-software/ComputeLibrary clframework 69*3e777be0SXin Li AssertZeroExitCode "Cloning clframework failed" 70*3e777be0SXin Lifi 71*3e777be0SXin Li 72*3e777be0SXin Li# Get scons to create the generated source code which clframework needs to compile. 73*3e777be0SXin Li# This is required for the Android build system to build clframework (see below) 74*3e777be0SXin Lipushd clframework 75*3e777be0SXin Liscons os=android build=embed_only neon=0 opencl=1 embed_kernels=1 validation_tests=0 \ 76*3e777be0SXin Li arch=arm64-v8.2-a build_dir=android-arm64v8.2-a benchmark_tests=0 -j16 \ 77*3e777be0SXin Li build/android-arm64v8.2-a/src/core/arm_compute_version.embed build/android-arm64v8.2-a/src/core/CL/cl_kernels 78*3e777be0SXin LiAssertZeroExitCode "Precompiling clframework failed for v82.a" 79*3e777be0SXin Li 80*3e777be0SXin Liscons os=android build=embed_only neon=0 opencl=1 embed_kernels=1 validation_tests=0 \ 81*3e777be0SXin Li arch=arm64-v8a build_dir=android-arm64v8a benchmark_tests=0 -j16 \ 82*3e777be0SXin Li build/android-arm64v8a/src/core/arm_compute_version.embed build/android-arm64v8a/src/core/CL/cl_kernels 83*3e777be0SXin LiAssertZeroExitCode "Precompiling clframework failed for v8a." 84*3e777be0SXin Lipopd 85*3e777be0SXin Li 86*3e777be0SXin Liif [ ! -d armnn/generated ]; then 87*3e777be0SXin Li mkdir -p armnn/generated 88*3e777be0SXin Lifi 89*3e777be0SXin Li 90*3e777be0SXin Liif [ ! -f armnn/generated/ArmnnSchema_generated.h ]; then 91*3e777be0SXin Li echo "+++ Generating new ArmnnSchema_generated.h" 92*3e777be0SXin Li $FLATBUFFERS_DIR/bin/flatc -o armnn/generated --cpp armnn/src/armnnSerializer/ArmnnSchema.fbs 93*3e777be0SXin Li AssertZeroExitCode "Generating ArmnnSchema_generated.h failed." 94*3e777be0SXin Lifi 95