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