#!/bin/bash # # Copyright © 2018,2020-2023 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # 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 v2.0.6" FLATBUFFERS_PKG=v2.0.6.tar.gz curl -LOk https://github.com/google/flatbuffers/archive/${FLATBUFFERS_PKG} 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 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."