blob: 7f6194757e3a5c362b3a62721ff8bf2cbd1c9c79 [file] [log] [blame]
Mike Kelly6fe9ef92023-03-24 19:21:25 +00001#!/bin/bash
2#
John Mcloughlin8ded1782023-12-21 15:04:40 +00003# Copyright © 2023-2024 Arm Ltd and Contributors. All rights reserved.
Mike Kelly6fe9ef92023-03-24 19:21:25 +00004#
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"
Nikhil Rajdbc5fa22024-02-13 13:50:41 +000017 echo " -c 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
John Mcloughlin8ded1782023-12-21 15:04:40 +000082export NDK_DIR=$WORKING_DIR/android-ndk-r26b
83
Mike Kelly6fe9ef92023-03-24 19:21:25 +000084export NDK_TOOLCHAIN_ROOT=$NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64
85export PATH=$NDK_TOOLCHAIN_ROOT/bin/:$PATH
86
87pushd $WORKING_DIR
88
89function GetAndroidNDK {
90 cd $WORKING_DIR
John Mcloughlin8ded1782023-12-21 15:04:40 +000091 if [[ ! -d android-ndk-r26b ]]; then
Mike Kelly6fe9ef92023-03-24 19:21:25 +000092 echo "+++ Getting Android NDK"
John Mcloughlin8ded1782023-12-21 15:04:40 +000093 wget https://dl.google.com/android/repository/android-ndk-r26b-linux.zip
94 unzip android-ndk-r26b-linux.zip
Mike Kelly6fe9ef92023-03-24 19:21:25 +000095 fi
96}
97
98function GetAndBuildCmake319 {
99 echo "+++ Building Cmake 3.19rc3"
100 cd $WORKING_DIR
101 sudo apt-get install libssl-dev
102 wget https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3.tar.gz
103 tar -zxf cmake-3.19.0-rc3.tar.gz
104 pushd cmake-3.19.0-rc3
105 ./bootstrap --prefix=$WORKING_DIR/cmake/install
106 make all install
107 popd
108}
109
110function GetAndBuildFlatbuffers {
111 cd $WORKING_DIR
112
Narumol Prangnawarata2135bb2023-09-20 16:04:58 +0100113 if [[ ! -d flatbuffers-23.5.26 ]]; then
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000114 echo "+++ Getting Flatbuffers"
Narumol Prangnawarata2135bb2023-09-20 16:04:58 +0100115 wget https://github.com/google/flatbuffers/archive/v23.5.26.tar.gz
116 tar xf v23.5.26.tar.gz
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000117 fi
118 #Build FlatBuffers
119 echo "+++ Building x86 Flatbuffers library"
Narumol Prangnawarata2135bb2023-09-20 16:04:58 +0100120 cd $WORKING_DIR/flatbuffers-23.5.26
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000121
122 rm -f CMakeCache.txt
123
124 rm -rf build-x86
125 mkdir build-x86
126 cd build-x86
127
128 rm -rf $WORKING_DIR/flatbuffers-x86
129 mkdir $WORKING_DIR/flatbuffers-x86
130
131 CXXFLAGS="-fPIC" $CMAKE .. \
132 -DFLATBUFFERS_BUILD_FLATC=1 \
133 -DCMAKE_INSTALL_PREFIX:PATH=$WORKING_DIR/flatbuffers-x86
134
135 make all install -j16
136
137 echo "+++ Building Android Flatbuffers library"
Narumol Prangnawarata2135bb2023-09-20 16:04:58 +0100138 cd $WORKING_DIR/flatbuffers-23.5.26
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000139
140 rm -f CMakeCache.txt
141
142 rm -rf build-android
143 mkdir build-android
144 cd build-android
145
146 rm -rf $WORKING_DIR/flatbuffers-android
147 mkdir $WORKING_DIR/flatbuffers-android
148
149 CC=/usr/bin/aarch64-linux-gnu-gcc CXX=/usr/bin/aarch64-linux-gnu-g++ \
150 CXXFLAGS="-fPIC" $CMAKE .. \
151 -DCMAKE_ANDROID_NDK=$NDK_DIR \
152 -DCMAKE_SYSTEM_NAME=Android \
153 -DCMAKE_SYSTEM_VERSION=$ANDROID_API \
154 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
155 -DCMAKE_CXX_FLAGS=--std=c++14 \
156 -DFLATBUFFERS_BUILD_FLATC=OFF \
157 -DCMAKE_BUILD_TYPE=Release \
158 -DFLATBUFFERS_BUILD_TESTS=OFF \
159 -DCMAKE_INSTALL_PREFIX=$WORKING_DIR/flatbuffers-android
160
161 make all install -j16
162}
163
164function GetArmNN {
165 cd $WORKING_DIR
166
167 if [[ ! -d armnn ]]; then
Nikhil Raj17086a72023-05-02 16:46:35 +0100168 if [[ $CREATE_LINKS = 1 ]]; then
169 if [[ -d $BASE_DIR/../../armnn ]]; then
170 echo "+++ Linking Arm NN"
171 echo "$BASE_DIR"
172 ln -s $BASE_DIR/../../armnn $WORKING_DIR/armnn
173 else
174 echo "Couldn't find Arm NN to link"
175 fi
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000176 else
177 echo "+++ Cloning Arm NN"
Nikhil Raj17086a72023-05-02 16:46:35 +0100178 git clone https://github.com/ARM-software/armnn.git armnn
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000179 cd armnn
180
181 git checkout $ARMNN_BRANCH
182 git log -1
Nikhil Raj17086a72023-05-02 16:46:35 +0100183 fi
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000184 fi
185}
186
187function GetAndBuildComputeLibrary {
188 cd $WORKING_DIR
189
190 if [[ ! -d ComputeLibrary ]]; then
191 if [[ $CREATE_LINKS = 1 ]]; then
192 if [[ -d $BASE_DIR/../../ComputeLibrary ]]; then
193 echo "+++ Linking ComputeLibrary"
194 ln -s $BASE_DIR/../../ComputeLibrary $WORKING_DIR/ComputeLibrary
195 else
196 echo "+++ Cloning ComputeLibrary"
Nikhil Raj17086a72023-05-02 16:46:35 +0100197 git clone https://github.com/ARM-software/ComputeLibrary.git ComputeLibrary
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000198 cd ComputeLibrary
199 git checkout $($BASE_DIR/../../armnn/scripts/get_compute_library.sh -p)
200 git log -1
201 fi
202 else
203 echo "+++ Cloning ComputeLibrary"
204
Nikhil Raj17086a72023-05-02 16:46:35 +0100205 git clone https://github.com/ARM-software/ComputeLibrary.git ComputeLibrary
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000206 cd ComputeLibrary
207 git checkout $ACL_BRANCH
208 git log -1
209 fi
210 fi
211 cd $WORKING_DIR/ComputeLibrary
212
213 echo "+++ Building Compute Library"
214 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" \
215 benchmark_tests=0 validation_tests=0 os=android -j16
216}
217
218function GetAndBuildTFLite {
Idriss Chaouch13823a92023-09-28 11:07:20 +0100219 TENSORFLOW_REVISION="tags/v2.14.0" # TF 2.14.0
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000220 TFLITE_ROOT_DIR=${WORKING_DIR}/tensorflow/tensorflow/lite
221
222 cd $WORKING_DIR
223
224 if [[ ! -d tensorflow ]]; then
225 if [[ -d $BASE_DIR/../../armnn ]]; then
226 TENSORFLOW_REVISION=$($BASE_DIR/../../armnn/scripts/get_tensorflow.sh -p)
227 fi
228 echo "+++ Cloning TensorFlow"
229 git clone https://github.com/tensorflow/tensorflow.git
230 AssertZeroExitCode "Cloning TensorFlow failed"
231
232 cd tensorflow
233
234 echo "Checking out ${TENSORFLOW_REVISION}"
235 git fetch && git checkout $TENSORFLOW_REVISION
236
237 cd $WORKING_DIR
238 fi
239
Nikhil Raj4429dab2023-04-27 12:02:08 +0100240 CMARGS="-DTFLITE_ENABLE_XNNPACK=OFF \
241 -DFLATBUFFERS_BUILD_FLATC=OFF \
242 -DBUILD_SHARED_LIBS=OFF \
243 -DBUILD_TESTING=OFF"
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000244
245 # Two different naming conventions; one for build and the other for CC_OPT_FLAGS
246 ANDROID_ARM_ARCH="arm64-v8a"
247
248 mkdir -p tflite-out/android
249 cd tflite-out/android
250
251 echo "*** Configure and Cross-Compile TfLite for ${TARGET_MACHINE} with architecture ${ANDROID_ARM_ARCH}"
252 echo "*** Outputting files to ${TFLITE_OUTPUT_DIR}/${TARGET_MACHINE}"
253
254 CMARGS="$CMARGS -DCMAKE_TOOLCHAIN_FILE=$NDK_DIR/build/cmake/android.toolchain.cmake \
255 -DANDROID_ABI=$ANDROID_ARM_ARCH \
256 -DANDROID_PLATFORM=$ANDROID_API" \
257
258 $CMAKE $CMARGS $TFLITE_ROOT_DIR
259 AssertZeroExitCode "Failed to configure Tensorflow Lite from source"
260
261 cd $WORKING_DIR
262
263 $CMAKE --build tflite-out/android -j 16
264 AssertZeroExitCode "Failed to build Tensorflow Lite from source"
265
266 mkdir -p $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
267
268 SCHEMA_LOCATION=$WORKING_DIR/tensorflow/tensorflow/lite/schema/schema.fbs
269
270 cp $SCHEMA_LOCATION $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
271
272 cd $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
273 $WORKING_DIR/flatbuffers-x86/bin/flatc -c --gen-object-api --reflect-types --reflect-names schema.fbs
274 AssertZeroExitCode "Failed to generate C++ schema from $SCHEMA_LOCATION"
275}
276
277function BuildArmNN {
278 echo "+++ Building Arm NN"
279
280 rm -rf $WORKING_DIR/armnn/build
281
282 mkdir $WORKING_DIR/armnn/build
283 cd $WORKING_DIR/armnn/build
284
285 CMARGS="-DCMAKE_BUILD_TYPE=Release \
286 -DCMAKE_ANDROID_NDK=$NDK_DIR \
John Mcloughlin8ded1782023-12-21 15:04:40 +0000287 -DNDK_VERSION=r26b \
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000288 -DCMAKE_SYSTEM_NAME=Android \
289 -DCMAKE_SYSTEM_VERSION=$ANDROID_API \
290 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
John Mcloughlin8ded1782023-12-21 15:04:40 +0000291 -DCMAKE_SYSROOT=$WORKING_DIR/android-ndk-r26b/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000292 -DARMCOMPUTE_ROOT=$WORKING_DIR/ComputeLibrary \
293 -DARMCOMPUTE_BUILD_DIR=$WORKING_DIR/ComputeLibrary/build \
294 -DARMCOMPUTENEON=$ACL_NEON -DARMCOMPUTECL=$ACL_CL -DARMNNREF=$REFERENCE \
295 -DFLATBUFFERS_INCLUDE_PATH=$WORKING_DIR/flatbuffers-x86/include \
296 -DFLATBUFFERS_ROOT=$WORKING_DIR/flatbuffers-android \
297 -DFLATC_DIR=$WORKING_DIR/flatbuffers-x86 \
298 -DBUILD_UNIT_TESTS=$BUILD_TESTS \
Mike Kellyc1a1d0f2023-04-14 13:43:06 +0100299 -DBUILD_TESTS=$BUILD_TESTS \
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000300 -fexceptions"
301
302 if [[ $TFLITE_PARSER == 1 ]]; then
303 CMARGS="$CMARGS \
304 -DBUILD_TF_LITE_PARSER=1 \
305 -DTF_LITE_GENERATED_PATH=$WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema \
306 -DTENSORFLOW_ROOT=$WORKING_DIR/tensorflow \
307 -DTFLITE_LIB_ROOT=$WORKING_DIR/tflite-out/android"
308 fi
309
310 if [[ $DELEGATE == 1 ]]; then
311 CMARGS="$CMARGS \
312 -DBUILD_ARMNN_TFLITE_DELEGATE=1 \
313 -DTENSORFLOW_ROOT=$WORKING_DIR/tensorflow \
314 -DTFLITE_LIB_ROOT=$WORKING_DIR/tflite-out/android \
Nikhil Raj4429dab2023-04-27 12:02:08 +0100315 -DTFLITE_ROOT_DIR=$WORKING_DIR/tensorflow/tensorflow/lite \
316 -DBUILD_DELEGATE_JNI_INTERFACE=0"
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000317 fi
318
319 if [[ $DYNAMIC_SAMPLE == 1 ]]; then
320 DYNAMIC_SAMPLE_PATH="/data/local/tmp/dynamic/sample"
321 CMARGS="$CMARGS \
322 -DDYNAMIC_BACKEND_PATHS=$DYNAMIC_SAMPLE_PATH \
323 -DSAMPLE_DYNAMIC_BACKEND=1"
324 fi
325 echo "args"
326 echo $CMARGS
327 CXX=aarch64-linux-android$ANDROID_API-clang++ \
328 CC=aarch64-linux-android$ANDROID_API-clang \
329 CXX_FLAGS="-fPIE -fPIC" \
330 $CMAKE $CMARGS ..
331 make -j16
332}
333
334function BuildStandaloneDynamicBackend {
335 echo "+++ Building Standalone Dynamic Sample Backend"
336 cd $WORKING_DIR/armnn/src/dynamic/sample
337 BUILD_DIR=build
338 rm -rf $BUILD_DIR
339 mkdir -p $BUILD_DIR
340 cd $BUILD_DIR
341 CXX=aarch64-linux-android$ANDROID_API-clang++ \
342 CC=aarch64-linux-android$ANDROID_API-clang \
343 CXX_FLAGS="-fPIE -fPIC" \
344 $CMAKE \
345 -DCMAKE_C_COMPILER_WORKS=TRUE \
346 -DCMAKE_CXX_COMPILER_WORKS=TRUE \
347 -DCMAKE_ANDROID_NDK=$NDK_DIR \
348 -DCMAKE_SYSTEM_NAME=Android \
349 -DCMAKE_SYSTEM_VERSION=$ANDROID_API \
350 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
John Mcloughlin8ded1782023-12-21 15:04:40 +0000351 -DCMAKE_SYSROOT=$WORKING_DIR/android-ndk-r26b/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000352 -DCMAKE_CXX_FLAGS=--std=c++14 \
353 -DCMAKE_EXE_LINKER_FLAGS="-pie -llog" \
354 -DCMAKE_MODULE_LINKER_FLAGS="-llog" \
355 -DARMNN_PATH=$WORKING_DIR/armnn/build/libarmnn.so ..
356 make
357}
358
359# push sources to board
360function PushBuildSourcesToBoard {
Nikhil Rajbafdaa12023-11-20 12:28:11 +0000361 cd $WORKING_DIR/armnn/build
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000362 adb start-server
363 adb shell rm -rf /data/local/tmp/*
364 echo "+++ Pushing sources to board"
365 adb root
366 adb remount
367 sleep 10s
368 adb version
369 adb push libarmnn.so /data/local/tmp/
370 adb push libtimelineDecoder.so /data/local/tmp/
371 adb push libtimelineDecoderJson.so /data/local/tmp/
372 adb push GatordMock /data/local/tmp/
373 adb push libarmnnBasePipeServer.so /data/local/tmp/
374 adb push libarmnnTestUtils.so /data/local/tmp/
Nikhil Raj06cb47b2023-11-20 16:12:12 +0000375 adb push libarmnnTfLiteParser.so /data/local/tmp/
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000376 adb push UnitTests /data/local/tmp/
377 if [[ $DELEGATE == 1 ]]; then
378 adb push ${WORKING_DIR}/armnn/build/delegate/DelegateUnitTests /data/local/tmp/
379 adb push ${WORKING_DIR}/armnn/build/delegate/libarmnnDelegate.so /data/local/tmp/
380 fi
John Mcloughlin8ded1782023-12-21 15:04:40 +0000381 #adb push $NDK_DIR/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so /data/local/tmp/
382 adb push $NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so /data/local/tmp/
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000383 echo "+++ Pushing test files to board"
384 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/testSharedObject
385 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/testSharedObject/* /data/local/tmp/src/backends/backendsCommon/test/testSharedObject/
386 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/testDynamicBackend
387 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/testDynamicBackend/* /data/local/tmp/src/backends/backendsCommon/test/testDynamicBackend/
388 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath1
389 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath1/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath1/
390 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2
391 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/
392 adb shell 'ln -s Arm_CpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so.1'
393 adb shell 'ln -s Arm_CpuAcc_backend.so.1 /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backend.so.1.2'
394 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'
395 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath2/Arm_GpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/
396 adb shell 'ln -s nothing /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_no_backend.so'
397 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath3
398 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath5
399 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath5/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath5/
400 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath6
401 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath6/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath6/
402 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath7
403 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath9
404 adb push -p ${WORKING_DIR}/armnn/build/src/backends/backendsCommon/test/backendsTestPath9/* /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath9/
405 adb shell mkdir -p /data/local/tmp/src/backends/dynamic/reference
406 adb push -p ${WORKING_DIR}/armnn/build/src/backends/dynamic/reference/Arm_CpuRef_backend.so /data/local/tmp/src/backends/dynamic/reference/
407 if [[ $DYNAMIC_SAMPLE == 1 ]]; then
408 adb shell mkdir -p /data/local/tmp/dynamic/sample/
409 adb push -p ${WORKING_DIR}/armnn/src/dynamic/sample/build/libArm_SampleDynamic_backend.so /data/local/tmp/dynamic/sample/
410 fi
411 echo "+++ Running UnitTests"
412 adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib64:/vendor/lib64/egl /data/local/tmp/UnitTests ; printf $?
413 if [[ $DELEGATE == 1 ]]; then
414 adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib64:/vendor/lib64/egl /data/local/tmp/DelegateUnitTests ; printf $?
415 fi
416}
417
418# Cleanup any previous runs, setup clean directories
419echo "+++ Creating $WORKING_DIR directory"
420mkdir -p $WORKING_DIR
421AssertZeroExitCode "Creating $WORKING_DIR directory failed"
422
423GetAndroidNDK
424if [[ $? != 0 ]] ; then
425 echo "Downloading Android NDK failed"
426 exit 1
427fi
John Mcloughlin1cb43e72023-06-27 10:23:41 +0100428GetAndBuildCmake319
429CMAKE=$WORKING_DIR/cmake/install/bin/cmake
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000430GetAndBuildFlatbuffers
431if [[ $? != 0 ]] ; then
432 echo "Building Flatbuffers failed"
433 exit 1
434fi
Mike Kelly6fe9ef92023-03-24 19:21:25 +0000435GetArmNN
436if [[ $? != 0 ]] ; then
437 echo "Cloning Arm NN failed"
438 exit 1
439fi
440# Build TFLite if the Delegate or Parser is required
441if [[ $DELEGATE == 1 || $TFLITE_PARSER ]]; then
442 GetAndBuildTFLite
443fi
444if [[ $? != 0 ]] ; then
445 echo "Building tflite failed"
446 exit 1
447fi
448GetAndBuildComputeLibrary
449if [[ $? != 0 ]] ; then
450 echo "Building ComputeLibrary failed"
451 exit 1
452fi
453BuildArmNN
454if [[ $? != 0 ]] ; then
455 echo "Building Arm NN failed"
456 exit 1
457fi
458if [[ $DYNAMIC_SAMPLE == 1 ]]; then
459 BuildStandaloneDynamicBackend
460fi
461if [[ $PUSH_TO_BOARD == 1 ]]; then
462 PushBuildSourcesToBoard
463fi
464if [[ "$R_new" -eq 0 ]]; then
465 echo "Success!"
466else
467 echo "Failed to run UnitTests"
468 exit 1
469fi