1*89c4ff92SAndroid Build Coastguard Worker#!/bin/bash 2*89c4ff92SAndroid Build Coastguard Worker# 3*89c4ff92SAndroid Build Coastguard Worker# Copyright © 2022 Arm Ltd and Contributors. All rights reserved. 4*89c4ff92SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 5*89c4ff92SAndroid Build Coastguard Worker# 6*89c4ff92SAndroid Build Coastguard Worker 7*89c4ff92SAndroid Build Coastguard Worker# Script which stores common variables and paths used by setup-armnn.sh and build-armnn.sh 8*89c4ff92SAndroid Build Coastguard Worker 9*89c4ff92SAndroid Build Coastguard Worker# shellcheck disable=SC2034 10*89c4ff92SAndroid Build Coastguard Worker# SC2034: false positives for variables appear unused - variables are used in setup-armnn.sh and build-armnn.sh 11*89c4ff92SAndroid Build Coastguard Worker 12*89c4ff92SAndroid Build Coastguard Workerset -o nounset # Catch references to undefined variables. 13*89c4ff92SAndroid Build Coastguard Workerset -o pipefail # Catch non zero exit codes within pipelines. 14*89c4ff92SAndroid Build Coastguard Workerset -o errexit # Catch and propagate non zero exit codes. 15*89c4ff92SAndroid Build Coastguard Worker 16*89c4ff92SAndroid Build Coastguard Worker# ROOT_DIR is the directory in which a script is called from 17*89c4ff92SAndroid Build Coastguard WorkerROOT_DIR=$(pwd) 18*89c4ff92SAndroid Build Coastguard WorkerSOURCE_DIR="$ROOT_DIR"/source 19*89c4ff92SAndroid Build Coastguard WorkerBUILD_DIR="$ROOT_DIR"/build 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker# Host architecture e.g. x86_64, aarch64 22*89c4ff92SAndroid Build Coastguard WorkerHOST_ARCH=$(uname -m) 23*89c4ff92SAndroid Build Coastguard Worker 24*89c4ff92SAndroid Build Coastguard Worker# Number of online cores on host 25*89c4ff92SAndroid Build Coastguard WorkerNUM_THREADS=$(getconf _NPROCESSORS_ONLN) 26*89c4ff92SAndroid Build Coastguard Worker 27*89c4ff92SAndroid Build Coastguard Worker# Validate common user-defined options 28*89c4ff92SAndroid Build Coastguard Worker# shellcheck source=validation.sh 29*89c4ff92SAndroid Build Coastguard Workersource "$rel_path"/validation.sh 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard Worker# target_arch supplied as command line arg 32*89c4ff92SAndroid Build Coastguard WorkerTARGET_ARCH="$target_arch" 33*89c4ff92SAndroid Build Coastguard Worker 34*89c4ff92SAndroid Build Coastguard WorkerNATIVE_BUILD=0 35*89c4ff92SAndroid Build Coastguard Workerif [ "$TARGET_ARCH" == "$HOST_ARCH" ]; then 36*89c4ff92SAndroid Build Coastguard Worker NATIVE_BUILD=1 37*89c4ff92SAndroid Build Coastguard Workerfi 38*89c4ff92SAndroid Build Coastguard Worker 39*89c4ff92SAndroid Build Coastguard WorkerAARCH64_COMPILER_FLAGS+="CC=/usr/bin/aarch64-linux-gnu-gcc CXX=/usr/bin/aarch64-linux-gnu-g++ " 40*89c4ff92SAndroid Build Coastguard Worker 41*89c4ff92SAndroid Build Coastguard Worker# Flatbuffers 42*89c4ff92SAndroid Build Coastguard WorkerFLATBUFFERS_VERSION=2.0.6 43*89c4ff92SAndroid Build Coastguard WorkerFLATBUFFERS_SRC="$SOURCE_DIR"/flatbuffers-"$FLATBUFFERS_VERSION" 44*89c4ff92SAndroid Build Coastguard WorkerFLATBUFFERS_BUILD_ROOT="$BUILD_DIR"/flatbuffers 45*89c4ff92SAndroid Build Coastguard WorkerFLATBUFFERS_BUILD_TARGET="$FLATBUFFERS_BUILD_ROOT"/"$TARGET_ARCH"_build 46*89c4ff92SAndroid Build Coastguard WorkerFLATBUFFERS_BUILD_HOST="$FLATBUFFERS_BUILD_ROOT"/"$HOST_ARCH"_build # Location of flatc compiler 47*89c4ff92SAndroid Build Coastguard Worker 48*89c4ff92SAndroid Build Coastguard Worker# Tensorflow 49*89c4ff92SAndroid Build Coastguard WorkerTENSORFLOW_VERSION="tags/v2.10.0" 50*89c4ff92SAndroid Build Coastguard WorkerTENSORFLOW_SRC="$SOURCE_DIR"/tensorflow 51*89c4ff92SAndroid Build Coastguard WorkerTFLITE_SRC="$TENSORFLOW_SRC"/tensorflow/lite 52*89c4ff92SAndroid Build Coastguard WorkerSCHEMA_SRC="$TFLITE_SRC"/schema/schema.fbs 53*89c4ff92SAndroid Build Coastguard Worker 54*89c4ff92SAndroid Build Coastguard Worker# TF Lite Schema 55*89c4ff92SAndroid Build Coastguard WorkerFLATC="$FLATBUFFERS_BUILD_HOST"/bin/flatc 56*89c4ff92SAndroid Build Coastguard WorkerTFLITE_BUILD_ROOT="$BUILD_DIR"/tflite # Generated TF Lite Schema location 57*89c4ff92SAndroid Build Coastguard WorkerTFLITE_BUILD_TARGET="$TFLITE_BUILD_ROOT"/"$TARGET_ARCH"_build 58*89c4ff92SAndroid Build Coastguard Worker 59*89c4ff92SAndroid Build Coastguard Worker# Protobuf 60*89c4ff92SAndroid Build Coastguard WorkerPROTOBUF_VERSION=3.12.0 61*89c4ff92SAndroid Build Coastguard WorkerPROTOBUF_SRC="$SOURCE_DIR"/protobuf-"$PROTOBUF_VERSION" 62*89c4ff92SAndroid Build Coastguard WorkerPROTOBUF_BUILD_ROOT="$BUILD_DIR"/protobuf 63*89c4ff92SAndroid Build Coastguard WorkerPROTOBUF_BUILD_HOST="$PROTOBUF_BUILD_ROOT"/"$HOST_ARCH"_build 64*89c4ff92SAndroid Build Coastguard WorkerPROTOCOL_COMPILER_HOST="$PROTOBUF_BUILD_HOST"/bin/protoc 65*89c4ff92SAndroid Build Coastguard WorkerPROTOBUF_BUILD_TARGET="$PROTOBUF_BUILD_ROOT"/"$TARGET_ARCH"_build 66*89c4ff92SAndroid Build Coastguard WorkerPROTOBUF_LIBRARY_TARGET="$PROTOBUF_BUILD_TARGET"/lib/libprotobuf.so.23.0.0 67*89c4ff92SAndroid Build Coastguard Worker 68*89c4ff92SAndroid Build Coastguard Worker# ONNX 69*89c4ff92SAndroid Build Coastguard WorkerONNX_VERSION=1.6.0 70*89c4ff92SAndroid Build Coastguard WorkerONNX_SRC="$SOURCE_DIR"/onnx-"$ONNX_VERSION" 71*89c4ff92SAndroid Build Coastguard WorkerONNX_BUILD_TARGET="$BUILD_DIR"/onnx/"$TARGET_ARCH"_build 72*89c4ff92SAndroid Build Coastguard Worker 73*89c4ff92SAndroid Build Coastguard Worker# Arm NN / ACL 74*89c4ff92SAndroid Build Coastguard WorkerARMNN_SRC="$SOURCE_DIR"/armnn 75*89c4ff92SAndroid Build Coastguard WorkerACL_SRC="$SOURCE_DIR"/acl 76*89c4ff92SAndroid Build Coastguard Worker 77*89c4ff92SAndroid Build Coastguard Worker# Check if directory at $1 is a repository or not 78*89c4ff92SAndroid Build Coastguard Workercheck_if_repository() 79*89c4ff92SAndroid Build Coastguard Worker{ 80*89c4ff92SAndroid Build Coastguard Worker pushd "$1" > /dev/null 81*89c4ff92SAndroid Build Coastguard Worker 82*89c4ff92SAndroid Build Coastguard Worker if [ "$(git rev-parse --is-inside-work-tree 2> /dev/null)" ]; then 83*89c4ff92SAndroid Build Coastguard Worker popd > /dev/null 84*89c4ff92SAndroid Build Coastguard Worker return 0 85*89c4ff92SAndroid Build Coastguard Worker else 86*89c4ff92SAndroid Build Coastguard Worker popd > /dev/null 87*89c4ff92SAndroid Build Coastguard Worker return 1 88*89c4ff92SAndroid Build Coastguard Worker fi 89*89c4ff92SAndroid Build Coastguard Worker}