blob: 45b33ee8ce7fe53b34c2d494fe35123f26c0c7d0 [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/
Nikhil Raj3ba1ff42023-11-20 16:12:12 +0000374 adb push libarmnnTfLiteParser.so /data/local/tmp/
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000375 adb push UnitTests /data/local/tmp/
376 if [[ $DELEGATE == 1 ]]; then
377 adb push ${WORKING_DIR}/armnn/build/delegate/DelegateUnitTests /data/local/tmp/
378 adb push ${WORKING_DIR}/armnn/build/delegate/libarmnnDelegate.so /data/local/tmp/
379 fi
380 adb push $NDK_DIR/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so /data/local/tmp/
381 echo "+++ Pushing test files to board"
382 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/testSharedObject
383 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/testSharedObject/* /data/local/tmp/src/backends/backendsCommon/test/testSharedObject/
384 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/testDynamicBackend
385 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/testDynamicBackend/* /data/local/tmp/src/backends/backendsCommon/test/testDynamicBackend/
386 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath1
387 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath1/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath1/
388 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2
389 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/
390 adb shell 'ln -s Arm_CpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so.1'
391 adb shell 'ln -s Arm_CpuAcc_backend.so.1 /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so.1.2'
392 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'
393 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath2/Arm_GpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/
394 adb shell 'ln -s nothing /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_no_backend.so'
395 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath3
396 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath5
397 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath5/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath5/
398 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath6
399 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath6/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath6/
400 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath7
401 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath9
402 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath9/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath9/
403 adb shell mkdir -p /data/local/tmp/src/backends/dynamic/reference
404 adb push -p ${WORKING_DIR}/armnn/build/src/backends/dynamic/reference/Arm_CpuRef_backend.so /data/local/tmp/src/backends/dynamic/reference/
405 if [[ $DYNAMIC_SAMPLE == 1 ]]; then
406 adb shell mkdir -p /data/local/tmp/dynamic/sample/
407 adb push -p ${WORKING_DIR}/armnn/src/dynamic/sample/build/libArm_SampleDynamic_backend.so /data/local/tmp/dynamic/sample/
408 fi
409 echo "+++ Running UnitTests"
410 adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib64:/vendor/lib64/egl /data/local/tmp/UnitTests ; printf $?
411 if [[ $DELEGATE == 1 ]]; then
412 adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib64:/vendor/lib64/egl /data/local/tmp/DelegateUnitTests ; printf $?
413 fi
414}
415
416# Cleanup any previous runs, setup clean directories
417echo "+++ Creating $WORKING_DIR directory"
418mkdir -p $WORKING_DIR
419AssertZeroExitCode "Creating $WORKING_DIR directory failed"
420
421GetAndroidNDK
422if [[ $? != 0 ]] ; then
423 echo "Downloading Android NDK failed"
424 exit 1
425fi
John Mcloughlin1cb43e72023-06-27 10:23:41 +0100426GetAndBuildCmake319
427CMAKE=$WORKING_DIR/cmake/install/bin/cmake
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000428GetAndBuildFlatbuffers
429if [[ $? != 0 ]] ; then
430 echo "Building Flatbuffers failed"
431 exit 1
432fi
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000433GetArmNN
434if [[ $? != 0 ]] ; then
435 echo "Cloning Arm NN failed"
436 exit 1
437fi
438# Build TFLite if the Delegate or Parser is required
439if [[ $DELEGATE == 1 || $TFLITE_PARSER ]]; then
440 GetAndBuildTFLite
441fi
442if [[ $? != 0 ]] ; then
443 echo "Building tflite failed"
444 exit 1
445fi
446GetAndBuildComputeLibrary
447if [[ $? != 0 ]] ; then
448 echo "Building ComputeLibrary failed"
449 exit 1
450fi
451BuildArmNN
452if [[ $? != 0 ]] ; then
453 echo "Building Arm NN failed"
454 exit 1
455fi
456if [[ $DYNAMIC_SAMPLE == 1 ]]; then
457 BuildStandaloneDynamicBackend
458fi
459if [[ $PUSH_TO_BOARD == 1 ]]; then
460 PushBuildSourcesToBoard
461fi
462if [[ "$R_new" -eq 0 ]]; then
463 echo "Success!"
464else
465 echo "Failed to run UnitTests"
466 exit 1
467fi