aboutsummaryrefslogtreecommitdiff
path: root/setup.sh
blob: 2887678ad91553630b0d3b364ee2a35c56914012 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash

#
# Copyright © 2018,2020-2023 Arm Ltd and Contributors. All rights reserved.
# SPDX-License-Identifier: MIT
#

function AssertZeroExitCode {
  EXITCODE=$?
  if [ $EXITCODE -ne 0 ]; then
    echo "$1"
    echo "+++ Command exited with code $EXITCODE. Please fix the above errors and re-run"
    exit 1
  fi
}

BUILD_DIR=build-x86_64
FLATBUFFERS_DIR=$PWD/flatbuffers

function BuildFlatbuffers {
  pushd flatbuffers
  rm -rf $BUILD_DIR
  rm -f CMakeCache.txt
  FLATBUFFERS_DIR=$PWD

  mkdir -p $BUILD_DIR
  cd $BUILD_DIR

  echo "+++ Building Google Flatbufers"
  CMD="cmake -DFLATBUFFERS_BUILD_FLATC=1 -DCMAKE_INSTALL_PREFIX:PATH=$FLATBUFFERS_DIR .."
  # Force -fPIC to allow relocatable linking.
  CXXFLAGS="-fPIC" $CMD
  AssertZeroExitCode "cmake Google Flatbuffers failed. command was: ${CMD}"
  make all install
  AssertZeroExitCode "Building Google Flatbuffers failed"
  mkdir -p $FLATBUFFERS_DIR/bin
  cp -f flatc $FLATBUFFERS_DIR/bin
  AssertZeroExitCode "Failed to copy the Flatbuffers Compiler"
  popd
}

if [ ! -d flatbuffers ]; then
  echo "++ Downloading FlatBuffers v2.0.6"

  FLATBUFFERS_PKG=v2.0.6.tar.gz

  curl -LOk https://github.com/google/flatbuffers/archive/${FLATBUFFERS_PKG}
  AssertZeroExitCode "Downloading FlatBuffers failed"
  mkdir -p flatbuffers
  tar xzf $FLATBUFFERS_PKG -C flatbuffers --strip-components 1
  AssertZeroExitCode "Unpacking FlatBuffers failed"

  BuildFlatbuffers

  rm -rf $FLATBUFFERS_PKG
fi

if [ ! -d armnn ]; then
  echo "++ Downloading armnn"

  git clone git@github.com:ARM-software/armnn armnn
  AssertZeroExitCode "Cloning armnn failed"
fi

if [ ! -d clframework ]; then
  echo "++ Downloading clframework"

  git clone git@github.com:ARM-software/ComputeLibrary clframework
  AssertZeroExitCode "Cloning clframework failed"
fi

# Get scons to create the generated source code which clframework needs to compile.
# This is required for the Android build system to build clframework (see below)
pushd clframework
scons os=android build=embed_only neon=0 opencl=1 embed_kernels=1 validation_tests=0 \
    arch=arm64-v8.2-a build_dir=android-arm64v8.2-a benchmark_tests=0 -j16 \
    build/android-arm64v8.2-a/src/core/arm_compute_version.embed build/android-arm64v8.2-a/src/core/CL/cl_kernels
AssertZeroExitCode "Precompiling clframework failed for v82.a"

scons os=android build=embed_only neon=0 opencl=1 embed_kernels=1 validation_tests=0 \
    arch=arm64-v8a build_dir=android-arm64v8a benchmark_tests=0 -j16 \
    build/android-arm64v8a/src/core/arm_compute_version.embed build/android-arm64v8a/src/core/CL/cl_kernels
AssertZeroExitCode "Precompiling clframework failed for v8a."
popd

if [ ! -d armnn/generated ]; then
  mkdir -p armnn/generated
fi

echo "+++ Generating new ArmnnSchema_generated.h"
$FLATBUFFERS_DIR/bin/flatc -o armnn/generated --cpp armnn/src/armnnSerializer/ArmnnSchema.fbs
AssertZeroExitCode "Generating ArmnnSchema_generated.h failed."