#!/bin/bash # # Copyright © 2022, 2024 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # # Script which installs system-wide packages required by setup-armnn.sh and build-armnn.sh # Downloads and builds CMake from source in the current directory from which this script is called # CMake will be installed system-wide once this script has completed execution # Requires sudo privileges set -o nounset # Catch references to undefined variables. set -o pipefail # Catch non zero exit codes within pipelines. set -o errexit # Catch and propagate non zero exit codes. # Host architecture e.g. x86_64, aarch64 HOST_ARCH=$(uname -m) # Number of online cores on host NUM_THREADS=$(getconf _NPROCESSORS_ONLN) # CMake is downloaded and built in the current directory from which this script is called ROOT_DIR=$(pwd) # CMake CMAKE_VERSION=3.19 CMAKE_VERSION_FULL=3.19.0 CMAKE_SRC="$ROOT_DIR"/cmake-"$CMAKE_VERSION_FULL" CMAKE_BUILD="$ROOT_DIR"/cmake_build download_cmake() { cd "$ROOT_DIR" echo -e "\n***** Downloading CMake $CMAKE_VERSION *****" wget -O cmake-"$CMAKE_VERSION_FULL".tar.gz https://cmake.org/files/v"$CMAKE_VERSION"/cmake-"$CMAKE_VERSION_FULL".tar.gz echo -e "\n***** Extracting archive *****" tar -xzf cmake-"$CMAKE_VERSION_FULL".tar.gz echo -e "\n***** Removing archive *****" rm cmake-"$CMAKE_VERSION_FULL".tar.gz echo -e "\n***** CMake $CMAKE_VERSION Downloaded *****" } install_cmake() { mkdir -p "$CMAKE_BUILD" cd "$CMAKE_BUILD" apt-get purge -y cmake echo -e "\n***** Building CMake $CMAKE_VERSION ***** " "$CMAKE_SRC"/bootstrap make make install -j "$NUM_THREADS" if [[ "$(cmake --version 2> /dev/null | grep "$CMAKE_VERSION" )" == *"$CMAKE_VERSION"* ]]; then echo -e "\n***** Built and Installed CMake $CMAKE_VERSION *****" else echo -e "\nERROR: CMake $CMAKE_VERSION not installed correctly after building from source" exit 1 fi } install_apt_packages() { apt-get update && apt-get install -y --no-install-recommends \ autoconf \ automake \ build-essential \ curl \ git \ libssl-dev \ libtool \ make \ scons \ unzip \ wget \ xxd \ llvm # Install cross compile toolchains if host is x86_64 if [ "$HOST_ARCH" == "x86_64" ]; then apt-get update && apt-get install -y --no-install-recommends \ crossbuild-essential-arm64 fi apt-get clean rm -rf /var/lib/apt/lists/* } usage_darwin() { cat < /dev/null | grep "$CMAKE_VERSION" )" == *"$CMAKE_VERSION"* ]]; then echo -e "\n***** CMake $CMAKE_VERSION already installed, skipping CMake install *****" else download_cmake install_cmake fi echo -e "\n***** $name: Successfully installed system-wide packages required by setup-armnn.sh and build-armnn.sh *****\n" exit 0