xref: /aosp_15_r20/external/armnn/build-tool/scripts/common.sh (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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}