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# Common validation of command line arguments provided to setup-armnn.sh and build-armnn.sh 8*89c4ff92SAndroid Build Coastguard Worker 9*89c4ff92SAndroid Build Coastguard Worker# shellcheck disable=SC2034,SC2154 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# SC2154: false positives for variables referenced but not assigned - variables are assigned in setup-armnn.sh and build-armnn.sh 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Workerset -o nounset # Catch references to undefined variables. 14*89c4ff92SAndroid Build Coastguard Workerset -o pipefail # Catch non zero exit codes within pipelines. 15*89c4ff92SAndroid Build Coastguard Workerset -o errexit # Catch and propagate non zero exit codes. 16*89c4ff92SAndroid Build Coastguard Worker 17*89c4ff92SAndroid Build Coastguard Worker# Host and target architecture validation 18*89c4ff92SAndroid Build Coastguard Workerif [ "$target_arch" == "" ]; then 19*89c4ff92SAndroid Build Coastguard Worker echo "$name: --target-arch is not set. Example usage: --target-arch=aarch64" 20*89c4ff92SAndroid Build Coastguard Worker exit 1 21*89c4ff92SAndroid Build Coastguard Workerfi 22*89c4ff92SAndroid Build Coastguard Worker 23*89c4ff92SAndroid Build Coastguard Workerif [ "$target_arch" != "aarch64" ] && [ "$target_arch" != "x86_64" ]; then 24*89c4ff92SAndroid Build Coastguard Worker echo "$name: --target-arch is not valid. Valid options are: aarch64, x86_64" 25*89c4ff92SAndroid Build Coastguard Worker exit 1 26*89c4ff92SAndroid Build Coastguard Workerfi 27*89c4ff92SAndroid Build Coastguard Worker 28*89c4ff92SAndroid Build Coastguard Workerif [ "$HOST_ARCH" == "aarch64" ]; then 29*89c4ff92SAndroid Build Coastguard Worker if [ "$target_arch" != "aarch64" ]; then 30*89c4ff92SAndroid Build Coastguard Worker echo "$name: aarch64 is the only supported --target_arch when host is aarch64" 31*89c4ff92SAndroid Build Coastguard Worker exit 1 32*89c4ff92SAndroid Build Coastguard Worker fi 33*89c4ff92SAndroid Build Coastguard Workerfi 34*89c4ff92SAndroid Build Coastguard Worker 35*89c4ff92SAndroid Build Coastguard Worker# Validation of chosen Arm NN dependencies 36*89c4ff92SAndroid Build Coastguard Workerif [ "$flag_tflite_delegate" -eq 0 ] && [ "$flag_tflite_parser" -eq 0 ] && [ "$flag_onnx_parser" -eq 0 ]; then 37*89c4ff92SAndroid Build Coastguard Worker echo "$name: at least one of flags --tflite-delegate, --tflite-parser or --onnx-parser must be set (or --all)." 38*89c4ff92SAndroid Build Coastguard Worker exit 1 39*89c4ff92SAndroid Build Coastguard Workerfi 40*89c4ff92SAndroid Build Coastguard Worker 41*89c4ff92SAndroid Build Coastguard Worker# If --num-threads is set, overwrite default NUM_THREADS with user-defined value 42*89c4ff92SAndroid Build Coastguard Workerif [ ! "$num_threads" -eq 0 ]; then 43*89c4ff92SAndroid Build Coastguard Worker NUM_THREADS="$num_threads" 44*89c4ff92SAndroid Build Coastguard Workerfi