xref: /aosp_15_r20/external/armnn/profiling/buildpipe.sh (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker#!/bin/bash
2*89c4ff92SAndroid Build Coastguard Worker#
3*89c4ff92SAndroid Build Coastguard Worker# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
4*89c4ff92SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
5*89c4ff92SAndroid Build Coastguard Worker#
6*89c4ff92SAndroid Build Coastguard Worker
7*89c4ff92SAndroid Build Coastguard WorkerSOURCE="${BASH_SOURCE[0]}"
8*89c4ff92SAndroid Build Coastguard Workerwhile [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
9*89c4ff92SAndroid Build Coastguard Worker  TARGET="$(readlink "$SOURCE")"
10*89c4ff92SAndroid Build Coastguard Worker  if [[ $TARGET == /* ]]; then
11*89c4ff92SAndroid Build Coastguard Worker    # "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'"
12*89c4ff92SAndroid Build Coastguard Worker    SOURCE="$TARGET"
13*89c4ff92SAndroid Build Coastguard Worker  else
14*89c4ff92SAndroid Build Coastguard Worker    DIR="$( dirname "$SOURCE" )"
15*89c4ff92SAndroid Build Coastguard Worker    # "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')"
16*89c4ff92SAndroid Build Coastguard Worker    SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
17*89c4ff92SAndroid Build Coastguard Worker  fi
18*89c4ff92SAndroid Build Coastguard Workerdone
19*89c4ff92SAndroid Build Coastguard WorkerDIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
20*89c4ff92SAndroid Build Coastguard Worker
21*89c4ff92SAndroid Build Coastguard WorkerCMD=$( basename "$0" )
22*89c4ff92SAndroid Build Coastguard Worker
23*89c4ff92SAndroid Build Coastguard Workerusage() {
24*89c4ff92SAndroid Build Coastguard Worker  echo "Usage: $CMD [options]"
25*89c4ff92SAndroid Build Coastguard Worker  echo "Options:        -t(type) <Debug or Release>"
26*89c4ff92SAndroid Build Coastguard Worker  echo "                -c(lean) build"
27*89c4ff92SAndroid Build Coastguard Worker  echo "                -s(tatic libraries) <1 or 0>"
28*89c4ff92SAndroid Build Coastguard Worker  echo "                -w(indows) build"
29*89c4ff92SAndroid Build Coastguard Worker  exit 1
30*89c4ff92SAndroid Build Coastguard Worker}
31*89c4ff92SAndroid Build Coastguard Worker# defaults
32*89c4ff92SAndroid Build Coastguard WorkerTYPE=Release
33*89c4ff92SAndroid Build Coastguard WorkerCLEAN=0
34*89c4ff92SAndroid Build Coastguard WorkerSTATIC=0
35*89c4ff92SAndroid Build Coastguard WorkerWINDOWS=0
36*89c4ff92SAndroid Build Coastguard Worker
37*89c4ff92SAndroid Build Coastguard Worker# Parse the command line
38*89c4ff92SAndroid Build Coastguard Workerwhile getopts "whct:s:" opt; do
39*89c4ff92SAndroid Build Coastguard Worker  case "$opt" in
40*89c4ff92SAndroid Build Coastguard Worker    h|\?) usage;;
41*89c4ff92SAndroid Build Coastguard Worker    t) TYPE=$OPTARG;;
42*89c4ff92SAndroid Build Coastguard Worker    c) CLEAN=1;;
43*89c4ff92SAndroid Build Coastguard Worker    s) STATIC=$OPTARG;;
44*89c4ff92SAndroid Build Coastguard Worker    w) WINDOWS=1;;
45*89c4ff92SAndroid Build Coastguard Worker  esac
46*89c4ff92SAndroid Build Coastguard Workerdone
47*89c4ff92SAndroid Build Coastguard Workershift $((OPTIND - 1))
48*89c4ff92SAndroid Build Coastguard Worker
49*89c4ff92SAndroid Build Coastguard Workerif [ $CLEAN == 1 ]; then
50*89c4ff92SAndroid Build Coastguard Worker    echo "removing ${DIR}/build"
51*89c4ff92SAndroid Build Coastguard Worker    rm -rf "${DIR}"/build
52*89c4ff92SAndroid Build Coastguard Workerfi
53*89c4ff92SAndroid Build Coastguard Worker
54*89c4ff92SAndroid Build Coastguard WorkerBUILD_DIR="build"
55*89c4ff92SAndroid Build Coastguard Worker[ -d build ] || ( mkdir build || exit )
56*89c4ff92SAndroid Build Coastguard Workerecho $WINDOWS
57*89c4ff92SAndroid Build Coastguard Workerif [ "$WINDOWS" -eq "1" ]; then
58*89c4ff92SAndroid Build Coastguard Worker    echo "doing windows"
59*89c4ff92SAndroid Build Coastguard Worker    cd $BUILD_DIR || exit
60*89c4ff92SAndroid Build Coastguard Worker    [ -d windows ] || mkdir windows
61*89c4ff92SAndroid Build Coastguard Worker    BUILD_DIR=$BUILD_DIR/windows
62*89c4ff92SAndroid Build Coastguard Worker    cd "$DIR" || exit
63*89c4ff92SAndroid Build Coastguard Workerfi
64*89c4ff92SAndroid Build Coastguard Worker# lower case TYPE in a posix compliant manner
65*89c4ff92SAndroid Build Coastguard WorkerLC_TYPE=$(echo "$TYPE" | tr '[:upper:]' '[:lower:]')
66*89c4ff92SAndroid Build Coastguard Workerif [ "${LC_TYPE}" == "debug" ]; then
67*89c4ff92SAndroid Build Coastguard Worker    DEBUGDIR=("$DIR/$BUILD_DIR/debug")
68*89c4ff92SAndroid Build Coastguard Worker    # shellcheck disable=SC2128
69*89c4ff92SAndroid Build Coastguard Worker    [ -d "$DEBUGDIR" ] || (cd ${BUILD_DIR} && ( mkdir debug || exit ) && cd ..)
70*89c4ff92SAndroid Build Coastguard Worker    # shellcheck disable=SC2128
71*89c4ff92SAndroid Build Coastguard Worker    BUILD_DIR=$DEBUGDIR
72*89c4ff92SAndroid Build Coastguard Workerelse
73*89c4ff92SAndroid Build Coastguard Worker    RELEASEDIR=("$DIR/$BUILD_DIR/release")
74*89c4ff92SAndroid Build Coastguard Worker    # shellcheck disable=SC2128
75*89c4ff92SAndroid Build Coastguard Worker    [ -d "$RELEASEDIR" ] || (cd "${BUILD_DIR}" && ( mkdir release || exit ) && cd ..)
76*89c4ff92SAndroid Build Coastguard Worker    # shellcheck disable=SC2128
77*89c4ff92SAndroid Build Coastguard Worker    BUILD_DIR=$RELEASEDIR
78*89c4ff92SAndroid Build Coastguard Workerfi
79*89c4ff92SAndroid Build Coastguard Worker
80*89c4ff92SAndroid Build Coastguard Workerecho "Build Directory: ${BUILD_DIR}"
81*89c4ff92SAndroid Build Coastguard Worker
82*89c4ff92SAndroid Build Coastguard WorkerCMAKE=cmake
83*89c4ff92SAndroid Build Coastguard WorkerCMARGS="-DCMAKE_BUILD_TYPE=$TYPE \
84*89c4ff92SAndroid Build Coastguard Worker        -DBUILD_STATIC_PIPE_LIBS=$STATIC \
85*89c4ff92SAndroid Build Coastguard Worker        -DBUILD_PIPE_ONLY=1"
86*89c4ff92SAndroid Build Coastguard Workerif [ "$WINDOWS" -eq "1" ]; then
87*89c4ff92SAndroid Build Coastguard Worker    CMARGS="$CMARGS \
88*89c4ff92SAndroid Build Coastguard Worker           -DCMAKE_TOOLCHAIN_FILE=${DIR}/toolchain-x86-ubuntu-mingw64.cmake"
89*89c4ff92SAndroid Build Coastguard Workerfi
90*89c4ff92SAndroid Build Coastguard WorkerMAKE="make"
91*89c4ff92SAndroid Build Coastguard Worker
92*89c4ff92SAndroid Build Coastguard Workercd "${BUILD_DIR}" || exit
93*89c4ff92SAndroid Build Coastguard Workerpwd
94*89c4ff92SAndroid Build Coastguard Worker( eval $CMAKE "$CMARGS" "$DIR" && eval ${MAKE} "$MAKEFLAGS" )
95