xref: /aosp_15_r20/external/armnn/build-tool/scripts/validation.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# 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