blob: 22f43070a89ee6c4d427d2d52840adeb29c807eb [file] [log] [blame]
Mike Kelly6fe9ef92023-03-24 19:21:25 +00001#!/bin/bash
2#
3# Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
4#
5# SPDX-License-Identifier: MIT
6#
7
8function Usage() {
9 echo "This script builds Arm NN for Android using the Android NDK. The script builds"
10 echo "the Arm NN core library and its dependencies."
11 echo ""
12 echo "Usage: $CMD [options]"
13 echo "Options:"
14 echo " -l Use this copy of Arm NN and ComputeLibrary instead of cloning new copies"
15 echo " <1 or 0> defaults to 1"
Nikhil Raj17086a72023-05-02 16:46:35 +010016 echo " -a Override Arm NN branch (defaults to main branch). For example to use 23.02 release use branch name branches/armnn_23_02"
17 echo " -b Override ACL branch (defaults to main branch). For example to use 23.02 release use tag v23.02"
Mike Kelly6fe9ef92023-03-24 19:21:25 +000018 echo " -A Android API level defaults to 30"
19 echo " -n Neon (CpuAcc backend) enabled <1 or 0> defaults to 1"
20 echo " -g CL (GpuAcc backend) enabled <1 or 0> defaults to 1"
21 echo " -r Reference (CpuRef backend) enabled <1 or 0> defaults to 1"
Mike Kellyc1a1d0f2023-04-14 13:43:06 +010022 echo " -u Build tests and test applications <1 or 0> defaults to 1"
Mike Kelly6fe9ef92023-03-24 19:21:25 +000023 echo " -d TfLite Delegate enabled <1 or 0> defaults to 1"
24 echo " -p TfLite Parser enabled <1 or 0> defaults to 1"
25 echo " -s Dynamic Sample enabled <1 or 0> defaults to 0"
26 echo " -i Installation directory defaults to ~/armnn-devenv"
27 echo " -t Push to board and run tests <1 or 0> defaults to 0"
28
29 exit 1
30}
31
32function AssertZeroExitCode {
33 EXITCODE=$?
34 if [[ $EXITCODE -ne 0 ]]; then
35 echo -e "Previous command exited with code $EXITCODE"
36 exit 1
37 fi
38}
39
40THIS_FILE=$(readlink -f "$0")
41BASE_DIR=$(dirname "$THIS_FILE")
42
43# Set variables and working directory
44CREATE_LINKS=1
Nikhil Raj17086a72023-05-02 16:46:35 +010045ARMNN_BRANCH=main
46ACL_BRANCH=main
Mike Kelly6fe9ef92023-03-24 19:21:25 +000047ACL_NEON=1
48ACL_CL=1
49REFERENCE=1
50BUILD_TESTS=1
51DELEGATE=1
52TFLITE_PARSER=1
53DYNAMIC_SAMPLE=0
54CMAKE=$(which cmake)
55WORKING_DIR=$HOME/armnn-devenv
56
57ANDROID_API=30
58PUSH_TO_BOARD=0
59
60# Parse the command line arguments to get build type
61while getopts "hl:a:c:A:n:g:r:u:d:p:s:i:t:" opt; do
62 ((OPTION_COUNTER+=1))
63 case "$opt" in
64 h|\?) Usage;;
65 l) CREATE_LINKS=$OPTARG;;
66 a) ARMNN_BRANCH=$OPTARG;;
67 c) ACL_BRANCH=$OPTARG;;
68 A) ANDROID_API=$OPTARG;;
69 n) ACL_NEON=$OPTARG;;
70 g) ACL_CL=$OPTARG;;
71 r) REFERENCE=$OPTARG;;
72 u) BUILD_TESTS=$OPTARG;;
73 d) DELEGATE=$OPTARG;;
74 p) TFLITE_PARSER=$OPTARG;;
75 s) DYNAMIC_SAMPLE=$OPTARG;;
76 i) WORKING_DIR=$OPTARG;;
77 t) PUSH_TO_BOARD=$OPTARG;;
78 esac
79done
80shift $((OPTIND - 1))
81
82export NDK_DIR=$WORKING_DIR/android-ndk-r25
83export NDK_TOOLCHAIN_ROOT=$NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64
84export PATH=$NDK_TOOLCHAIN_ROOT/bin/:$PATH
85
86pushd $WORKING_DIR
87
88function GetAndroidNDK {
89 cd $WORKING_DIR
90 if [[ ! -d android-ndk-r25 ]]; then
91 echo "+++ Getting Android NDK"
92 wget https://dl.google.com/android/repository/android-ndk-r25-linux.zip
93 unzip android-ndk-r25-linux.zip
94 fi
95}
96
97function GetAndBuildCmake319 {
98 echo "+++ Building Cmake 3.19rc3"
99 cd $WORKING_DIR
100 sudo apt-get install libssl-dev
101 wget https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3.tar.gz
102 tar -zxf cmake-3.19.0-rc3.tar.gz
103 pushd cmake-3.19.0-rc3
104 ./bootstrap --prefix=$WORKING_DIR/cmake/install
105 make all install
106 popd
107}
108
109function GetAndBuildFlatbuffers {
110 cd $WORKING_DIR
111
Narumol Prangnawarata2135bb2023-09-20 16:04:58 +0100112 if [[ ! -d flatbuffers-23.5.26 ]]; then
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000113 echo "+++ Getting Flatbuffers"
Narumol Prangnawarata2135bb2023-09-20 16:04:58 +0100114 wget https://github.com/google/flatbuffers/archive/v23.5.26.tar.gz
115 tar xf v23.5.26.tar.gz
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000116 fi
117 #Build FlatBuffers
118 echo "+++ Building x86 Flatbuffers library"
Narumol Prangnawarata2135bb2023-09-20 16:04:58 +0100119 cd $WORKING_DIR/flatbuffers-23.5.26
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000120
121 rm -f CMakeCache.txt
122
123 rm -rf build-x86
124 mkdir build-x86
125 cd build-x86
126
127 rm -rf $WORKING_DIR/flatbuffers-x86
128 mkdir $WORKING_DIR/flatbuffers-x86
129
130 CXXFLAGS="-fPIC" $CMAKE .. \
131 -DFLATBUFFERS_BUILD_FLATC=1 \
132 -DCMAKE_INSTALL_PREFIX:PATH=$WORKING_DIR/flatbuffers-x86
133
134 make all install -j16
135
136 echo "+++ Building Android Flatbuffers library"
Narumol Prangnawarata2135bb2023-09-20 16:04:58 +0100137 cd $WORKING_DIR/flatbuffers-23.5.26
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000138
139 rm -f CMakeCache.txt
140
141 rm -rf build-android
142 mkdir build-android
143 cd build-android
144
145 rm -rf $WORKING_DIR/flatbuffers-android
146 mkdir $WORKING_DIR/flatbuffers-android
147
148 CC=/usr/bin/aarch64-linux-gnu-gcc CXX=/usr/bin/aarch64-linux-gnu-g++ \
149 CXXFLAGS="-fPIC" $CMAKE .. \
150 -DCMAKE_ANDROID_NDK=$NDK_DIR \
151 -DCMAKE_SYSTEM_NAME=Android \
152 -DCMAKE_SYSTEM_VERSION=$ANDROID_API \
153 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
154 -DCMAKE_CXX_FLAGS=--std=c++14 \
155 -DFLATBUFFERS_BUILD_FLATC=OFF \
156 -DCMAKE_BUILD_TYPE=Release \
157 -DFLATBUFFERS_BUILD_TESTS=OFF \
158 -DCMAKE_INSTALL_PREFIX=$WORKING_DIR/flatbuffers-android
159
160 make all install -j16
161}
162
163function GetArmNN {
164 cd $WORKING_DIR
165
166 if [[ ! -d armnn ]]; then
Nikhil Raj17086a72023-05-02 16:46:35 +0100167 if [[ $CREATE_LINKS = 1 ]]; then
168 if [[ -d $BASE_DIR/../../armnn ]]; then
169 echo "+++ Linking Arm NN"
170 echo "$BASE_DIR"
171 ln -s $BASE_DIR/../../armnn $WORKING_DIR/armnn
172 else
173 echo "Couldn't find Arm NN to link"
174 fi
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000175 else
176 echo "+++ Cloning Arm NN"
Nikhil Raj17086a72023-05-02 16:46:35 +0100177 git clone https://github.com/ARM-software/armnn.git armnn
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000178 cd armnn
179
180 git checkout $ARMNN_BRANCH
181 git log -1
Nikhil Raj17086a72023-05-02 16:46:35 +0100182 fi
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000183 fi
184}
185
186function GetAndBuildComputeLibrary {
187 cd $WORKING_DIR
188
189 if [[ ! -d ComputeLibrary ]]; then
190 if [[ $CREATE_LINKS = 1 ]]; then
191 if [[ -d $BASE_DIR/../../ComputeLibrary ]]; then
192 echo "+++ Linking ComputeLibrary"
193 ln -s $BASE_DIR/../../ComputeLibrary $WORKING_DIR/ComputeLibrary
194 else
195 echo "+++ Cloning ComputeLibrary"
Nikhil Raj17086a72023-05-02 16:46:35 +0100196 git clone https://github.com/ARM-software/ComputeLibrary.git ComputeLibrary
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000197 cd ComputeLibrary
198 git checkout $($BASE_DIR/../../armnn/scripts/get_compute_library.sh -p)
199 git log -1
200 fi
201 else
202 echo "+++ Cloning ComputeLibrary"
203
Nikhil Raj17086a72023-05-02 16:46:35 +0100204 git clone https://github.com/ARM-software/ComputeLibrary.git ComputeLibrary
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000205 cd ComputeLibrary
206 git checkout $ACL_BRANCH
207 git log -1
208 fi
209 fi
210 cd $WORKING_DIR/ComputeLibrary
211
212 echo "+++ Building Compute Library"
213 scons toolchain_prefix=llvm- compiler_prefix=aarch64-linux-android$ANDROID_API- arch=arm64-v8a neon=$ACL_NEON opencl=$ACL_CL embed_kernels=$ACL_CL extra_cxx_flags="-fPIC" \
214 benchmark_tests=0 validation_tests=0 os=android -j16
215}
216
217function GetAndBuildTFLite {
Idriss Chaouch13823a92023-09-28 11:07:20 +0100218 TENSORFLOW_REVISION="tags/v2.14.0" # TF 2.14.0
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000219 TFLITE_ROOT_DIR=${WORKING_DIR}/tensorflow/tensorflow/lite
220
221 cd $WORKING_DIR
222
223 if [[ ! -d tensorflow ]]; then
224 if [[ -d $BASE_DIR/../../armnn ]]; then
225 TENSORFLOW_REVISION=$($BASE_DIR/../../armnn/scripts/get_tensorflow.sh -p)
226 fi
227 echo "+++ Cloning TensorFlow"
228 git clone https://github.com/tensorflow/tensorflow.git
229 AssertZeroExitCode "Cloning TensorFlow failed"
230
231 cd tensorflow
232
233 echo "Checking out ${TENSORFLOW_REVISION}"
234 git fetch && git checkout $TENSORFLOW_REVISION
235
236 cd $WORKING_DIR
237 fi
238
Nikhil Raj4429dab2023-04-27 12:02:08 +0100239 CMARGS="-DTFLITE_ENABLE_XNNPACK=OFF \
240 -DFLATBUFFERS_BUILD_FLATC=OFF \
241 -DBUILD_SHARED_LIBS=OFF \
242 -DBUILD_TESTING=OFF"
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000243
244 # Two different naming conventions; one for build and the other for CC_OPT_FLAGS
245 ANDROID_ARM_ARCH="arm64-v8a"
246
247 mkdir -p tflite-out/android
248 cd tflite-out/android
249
250 echo "*** Configure and Cross-Compile TfLite for ${TARGET_MACHINE} with architecture ${ANDROID_ARM_ARCH}"
251 echo "*** Outputting files to ${TFLITE_OUTPUT_DIR}/${TARGET_MACHINE}"
252
253 CMARGS="$CMARGS -DCMAKE_TOOLCHAIN_FILE=$NDK_DIR/build/cmake/android.toolchain.cmake \
254 -DANDROID_ABI=$ANDROID_ARM_ARCH \
255 -DANDROID_PLATFORM=$ANDROID_API" \
256
257 $CMAKE $CMARGS $TFLITE_ROOT_DIR
258 AssertZeroExitCode "Failed to configure Tensorflow Lite from source"
259
260 cd $WORKING_DIR
261
262 $CMAKE --build tflite-out/android -j 16
263 AssertZeroExitCode "Failed to build Tensorflow Lite from source"
264
265 mkdir -p $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
266
267 SCHEMA_LOCATION=$WORKING_DIR/tensorflow/tensorflow/lite/schema/schema.fbs
268
269 cp $SCHEMA_LOCATION $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
270
271 cd $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
272 $WORKING_DIR/flatbuffers-x86/bin/flatc -c --gen-object-api --reflect-types --reflect-names schema.fbs
273 AssertZeroExitCode "Failed to generate C++ schema from $SCHEMA_LOCATION"
274}
275
276function BuildArmNN {
277 echo "+++ Building Arm NN"
278
279 rm -rf $WORKING_DIR/armnn/build
280
281 mkdir $WORKING_DIR/armnn/build
282 cd $WORKING_DIR/armnn/build
283
284 CMARGS="-DCMAKE_BUILD_TYPE=Release \
285 -DCMAKE_ANDROID_NDK=$NDK_DIR \
286 -DNDK_VERSION=r25 \
287 -DCMAKE_SYSTEM_NAME=Android \
288 -DCMAKE_SYSTEM_VERSION=$ANDROID_API \
289 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
290 -DCMAKE_SYSROOT=$WORKING_DIR/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
291 -DARMCOMPUTE_ROOT=$WORKING_DIR/ComputeLibrary \
292 -DARMCOMPUTE_BUILD_DIR=$WORKING_DIR/ComputeLibrary/build \
293 -DARMCOMPUTENEON=$ACL_NEON -DARMCOMPUTECL=$ACL_CL -DARMNNREF=$REFERENCE \
294 -DFLATBUFFERS_INCLUDE_PATH=$WORKING_DIR/flatbuffers-x86/include \
295 -DFLATBUFFERS_ROOT=$WORKING_DIR/flatbuffers-android \
296 -DFLATC_DIR=$WORKING_DIR/flatbuffers-x86 \
297 -DBUILD_UNIT_TESTS=$BUILD_TESTS \
Mike Kellyc1a1d0f2023-04-14 13:43:06 +0100298 -DBUILD_TESTS=$BUILD_TESTS \
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000299 -fexceptions"
300
301 if [[ $TFLITE_PARSER == 1 ]]; then
302 CMARGS="$CMARGS \
303 -DBUILD_TF_LITE_PARSER=1 \
304 -DTF_LITE_GENERATED_PATH=$WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema \
305 -DTENSORFLOW_ROOT=$WORKING_DIR/tensorflow \
306 -DTFLITE_LIB_ROOT=$WORKING_DIR/tflite-out/android"
307 fi
308
309 if [[ $DELEGATE == 1 ]]; then
310 CMARGS="$CMARGS \
311 -DBUILD_ARMNN_TFLITE_DELEGATE=1 \
312 -DTENSORFLOW_ROOT=$WORKING_DIR/tensorflow \
313 -DTFLITE_LIB_ROOT=$WORKING_DIR/tflite-out/android \
Nikhil Raj4429dab2023-04-27 12:02:08 +0100314 -DTFLITE_ROOT_DIR=$WORKING_DIR/tensorflow/tensorflow/lite \
315 -DBUILD_DELEGATE_JNI_INTERFACE=0"
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000316 fi
317
318 if [[ $DYNAMIC_SAMPLE == 1 ]]; then
319 DYNAMIC_SAMPLE_PATH="/data/local/tmp/dynamic/sample"
320 CMARGS="$CMARGS \
321 -DDYNAMIC_BACKEND_PATHS=$DYNAMIC_SAMPLE_PATH \
322 -DSAMPLE_DYNAMIC_BACKEND=1"
323 fi
324 echo "args"
325 echo $CMARGS
326 CXX=aarch64-linux-android$ANDROID_API-clang++ \
327 CC=aarch64-linux-android$ANDROID_API-clang \
328 CXX_FLAGS="-fPIE -fPIC" \
329 $CMAKE $CMARGS ..
330 make -j16
331}
332
333function BuildStandaloneDynamicBackend {
334 echo "+++ Building Standalone Dynamic Sample Backend"
335 cd $WORKING_DIR/armnn/src/dynamic/sample
336 BUILD_DIR=build
337 rm -rf $BUILD_DIR
338 mkdir -p $BUILD_DIR
339 cd $BUILD_DIR
340 CXX=aarch64-linux-android$ANDROID_API-clang++ \
341 CC=aarch64-linux-android$ANDROID_API-clang \
342 CXX_FLAGS="-fPIE -fPIC" \
343 $CMAKE \
344 -DCMAKE_C_COMPILER_WORKS=TRUE \
345 -DCMAKE_CXX_COMPILER_WORKS=TRUE \
346 -DCMAKE_ANDROID_NDK=$NDK_DIR \
347 -DCMAKE_SYSTEM_NAME=Android \
348 -DCMAKE_SYSTEM_VERSION=$ANDROID_API \
349 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
350 -DCMAKE_SYSROOT=$WORKING_DIR/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
351 -DCMAKE_CXX_FLAGS=--std=c++14 \
352 -DCMAKE_EXE_LINKER_FLAGS="-pie -llog" \
353 -DCMAKE_MODULE_LINKER_FLAGS="-llog" \
354 -DARMNN_PATH=$WORKING_DIR/armnn/build/libarmnn.so ..
355 make
356}
357
358# push sources to board
359function PushBuildSourcesToBoard {
Nikhil Raja7008d92023-11-20 12:28:11 +0000360 cd $WORKING_DIR/armnn/build
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000361 adb start-server
362 adb shell rm -rf /data/local/tmp/*
363 echo "+++ Pushing sources to board"
364 adb root
365 adb remount
366 sleep 10s
367 adb version
368 adb push libarmnn.so /data/local/tmp/
369 adb push libtimelineDecoder.so /data/local/tmp/
370 adb push libtimelineDecoderJson.so /data/local/tmp/
371 adb push GatordMock /data/local/tmp/
372 adb push libarmnnBasePipeServer.so /data/local/tmp/
373 adb push libarmnnTestUtils.so /data/local/tmp/
374 adb push UnitTests /data/local/tmp/
375 if [[ $DELEGATE == 1 ]]; then
376 adb push ${WORKING_DIR}/armnn/build/delegate/DelegateUnitTests /data/local/tmp/
377 adb push ${WORKING_DIR}/armnn/build/delegate/libarmnnDelegate.so /data/local/tmp/
378 fi
379 adb push $NDK_DIR/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so /data/local/tmp/
380 echo "+++ Pushing test files to board"
381 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/testSharedObject
382 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/testSharedObject/* /data/local/tmp/src/backends/backendsCommon/test/testSharedObject/
383 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/testDynamicBackend
384 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/testDynamicBackend/* /data/local/tmp/src/backends/backendsCommon/test/testDynamicBackend/
385 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath1
386 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath1/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath1/
387 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2
388 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/
389 adb shell 'ln -s Arm_CpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so.1'
390 adb shell 'ln -s Arm_CpuAcc_backend.so.1 /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so.1.2'
391 adb shell 'ln -s Arm_CpuAcc_backend.so.1.2 /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so.1.2.3'
392 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath2/Arm_GpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/
393 adb shell 'ln -s nothing /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_no_backend.so'
394 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath3
395 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath5
396 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath5/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath5/
397 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath6
398 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath6/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath6/
399 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath7
400 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath9
401 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath9/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath9/
402 adb shell mkdir -p /data/local/tmp/src/backends/dynamic/reference
403 adb push -p ${WORKING_DIR}/armnn/build/src/backends/dynamic/reference/Arm_CpuRef_backend.so /data/local/tmp/src/backends/dynamic/reference/
404 if [[ $DYNAMIC_SAMPLE == 1 ]]; then
405 adb shell mkdir -p /data/local/tmp/dynamic/sample/
406 adb push -p ${WORKING_DIR}/armnn/src/dynamic/sample/build/libArm_SampleDynamic_backend.so /data/local/tmp/dynamic/sample/
407 fi
408 echo "+++ Running UnitTests"
409 adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib64:/vendor/lib64/egl /data/local/tmp/UnitTests ; printf $?
410 if [[ $DELEGATE == 1 ]]; then
411 adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib64:/vendor/lib64/egl /data/local/tmp/DelegateUnitTests ; printf $?
412 fi
413}
414
415# Cleanup any previous runs, setup clean directories
416echo "+++ Creating $WORKING_DIR directory"
417mkdir -p $WORKING_DIR
418AssertZeroExitCode "Creating $WORKING_DIR directory failed"
419
420GetAndroidNDK
421if [[ $? != 0 ]] ; then
422 echo "Downloading Android NDK failed"
423 exit 1
424fi
John Mcloughlin1cb43e72023-06-27 10:23:41 +0100425GetAndBuildCmake319
426CMAKE=$WORKING_DIR/cmake/install/bin/cmake
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000427GetAndBuildFlatbuffers
428if [[ $? != 0 ]] ; then
429 echo "Building Flatbuffers failed"
430 exit 1
431fi
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000432GetArmNN
433if [[ $? != 0 ]] ; then
434 echo "Cloning Arm NN failed"
435 exit 1
436fi
437# Build TFLite if the Delegate or Parser is required
438if [[ $DELEGATE == 1 || $TFLITE_PARSER ]]; then
439 GetAndBuildTFLite
440fi
441if [[ $? != 0 ]] ; then
442 echo "Building tflite failed"
443 exit 1
444fi
445GetAndBuildComputeLibrary
446if [[ $? != 0 ]] ; then
447 echo "Building ComputeLibrary failed"
448 exit 1
449fi
450BuildArmNN
451if [[ $? != 0 ]] ; then
452 echo "Building Arm NN failed"
453 exit 1
454fi
455if [[ $DYNAMIC_SAMPLE == 1 ]]; then
456 BuildStandaloneDynamicBackend
457fi
458if [[ $PUSH_TO_BOARD == 1 ]]; then
459 PushBuildSourcesToBoard
460fi
461if [[ "$R_new" -eq 0 ]]; then
462 echo "Success!"
463else
464 echo "Failed to run UnitTests"
465 exit 1
466fi