summaryrefslogtreecommitdiff
path: root/python/openvino/runtime/build_hpspackages.sh
diff options
context:
space:
mode:
authorEric Dao <eric@erickhangdao.com>2025-03-10 17:54:31 -0400
committerEric Dao <eric@erickhangdao.com>2025-03-10 17:54:31 -0400
commitab224e2e6ba65f5a369ec392f99cd8845ad06c98 (patch)
treea1e757e9341863ed52b8ad4c5a1c45933aab9da4 /python/openvino/runtime/build_hpspackages.sh
parent40da1752f2c8639186b72f6838aa415e854d0b1d (diff)
downloadthesis-master.tar.gz
thesis-master.tar.bz2
thesis-master.zip
completed thesisHEADmaster
Diffstat (limited to 'python/openvino/runtime/build_hpspackages.sh')
-rwxr-xr-xpython/openvino/runtime/build_hpspackages.sh571
1 files changed, 571 insertions, 0 deletions
diff --git a/python/openvino/runtime/build_hpspackages.sh b/python/openvino/runtime/build_hpspackages.sh
new file mode 100755
index 0000000..dba9711
--- /dev/null
+++ b/python/openvino/runtime/build_hpspackages.sh
@@ -0,0 +1,571 @@
+#!/bin/bash
+set -x
+
+# Script to build extra packages for building and running on Linux based SoC FPGAs.
+# This script needs to be called prior to building the CoreDLA Runtime.
+# Typical Usage : ./build_hpspackages.sh -sb
+# For Help : ./build_hpspackages.sh -h
+
+##################################################################
+# Parameters
+SCRIPT_DIR=$(cd "$(dirname $0)" >/dev/null 2>&1 && pwd)
+RUNTIME_ROOT_DIR=$(cd "${SCRIPT_DIR}" >/dev/null 2>&1 && pwd)
+
+DEV_HOME=`pwd`
+BUILD_DIR=$DEV_HOME/hps_packages
+STAGING_DIR=$BUILD_DIR/armcpu_package
+
+YOCTO_SDK_NAME="embedded_arm_sdk"
+YOCTO_SDK="`pwd`/${YOCTO_SDK_NAME}"
+TOOLCHAIN_FILE="${YOCTO_SDK}/cmake/embedded.arm.cmake"
+TOOLCHAIN_PREFIX="${YOCTO_SDK}/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-"
+SYSROOT="${YOCTO_SDK}/sysroots/armv7at2hf-neon-poky-linux-gnueabi"
+
+##############################################################
+function get_toolchain_prefix()
+{
+ (
+ unset LD_LIBRARY_PATH
+ source ${YOCTO_SDK}//environment-setup-*
+ IFS='\ ' array=(${CC})
+ CC_PATH=`which ${array[0]}`
+ echo ${CC_PATH::-3}
+ )
+}
+
+function get_sdksysroot()
+{
+ (
+ unset LD_LIBRARY_PATH
+ source ${YOCTO_SDK}//environment-setup-*
+ echo ${OECORE_TARGET_SYSROOT}
+ )
+}
+
+#################################################################
+# Functions
+function fail()
+{
+ echo "Failed : $1"
+ exit 1
+}
+
+#################################################################
+get_git_repo()
+{
+ OUTPUT=$1
+ URL=$2
+ SUBMODULES=$3
+ TAG=$4
+ if [ ! -e ${OUTPUT} ]; then
+
+ COMMAND="git clone $URL"
+ if [ ! -z ${TAG} ]; then
+ COMMAND="$COMMAND -b ${TAG}"
+ else
+ echo "Please provide a version number for $URL"
+ exit 1
+ fi
+
+ if [ "${SUBMODULES}" == "true" ]; then
+ COMMAND="${COMMAND} --recurse-submodules"
+ fi
+
+ COMMAND="${COMMAND} ${OUTPUT}"
+ ${COMMAND}
+ else
+ echo "Repo already exists - $OUTPUT"
+ fi
+}
+
+
+#################################################################
+function build_opencv()
+{
+ pushd $OPENCV_HOME
+ CMAKE_FLAGS="-DBUILD_opencv_apps:BOOL=OFF -DBUILD_opencv_calib3d:BOOL=OFF -DBUILD_opencv_core:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_dnn:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_features2d:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_flann:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_gapi:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_highgui:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_imgcodecs:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_imgproc:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_java_bindings_generator:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_js:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_js_bindings_generator:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_ml:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_objc_bindings_generator:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_objdetect:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_photo:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_python_bindings_generator:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_python_tests:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_stitching:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_ts:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_video:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_videoio:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_opencv_world:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_GTK:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_GTK_2_X:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_1394:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_GSTREAMER:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_PNG:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_PNG:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_JPEG:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_JPEG:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_WEBP:BOOL=OFF"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_TIFF:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_TIFF:BOOL=ON"
+ # CMAKE_FLAGS="${CMAKE_FLAGS} -DWITH_TBB:BOOL=ON"
+ # CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_TBB:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DBUILD_ZLIB:BOOL=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DCMAKE_BUILD_TYPE=${OPENCV_BUILD_TYPE}"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DCMAKE_INSTALL_PREFIX=$OPENCV_BUILD/install"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DCMAKE_STAGING_PREFIX=$STAGING_DIR/opencv"
+
+ # For some reason, OpenCV uses the machine's native ccache
+ # On SLES15, this ccache is too new for the older gcc version that we arc shell
+ CMAKE_FLAGS="${CMAKE_FLAGS} -DENABLE_CCACHE:BOOL=OFF"
+
+ cmake -B ${OPENCV_BUILD} -G "Ninja" -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} ${CMAKE_FLAGS}
+ if [ $? != 0 ]; then
+ fail "Failed to configure OPENCV"
+ fi
+ cmake --build ${OPENCV_BUILD} --parallel $(nproc)
+ if [ $? != 0 ]; then
+ fail "Failed to build OPENCV"
+ fi
+
+ cmake --install ${OPENCV_BUILD}
+ if [ $? != 0 ]; then
+ fail "Failed to install OPENCV"
+ fi
+ popd
+}
+
+#################################################################
+function cleanup_tmpfile() {
+ local file="$1"
+ rm -rf "$file"
+}
+
+#################################################################
+function build_openvino()
+{
+ # The cmake option ENABLE_OPENVINO_DEBUG allow OV print rich debug info,
+ # we turn it on here if build type in Debug
+ if [[ "$OPENVINO_BUILD_TYPE" == "Debug" ]]; then
+ OV_DEBUG_FLAG="ON"
+ else
+ OV_DEBUG_FLAG="OFF"
+ fi
+ # Arm plugin build options should be exported as an env variable
+ export toolchain_prefix=${TOOLCHAIN_PREFIX}
+ export exceptions=False
+ export reference_openmp=False
+ export validation_tests=False
+ export benchmark_tests=False
+ export extra_link_flags="--sysroot=${SYSROOT}"
+
+ # cmake throws an "Argument list too long" error if the path is too long
+ # Use a temp directory symlinked to the runtime/hps_packages directory
+ # If cmake was previously run, use the same temp directory
+ echo "Checking for cached path"
+
+ # Path to generated cmake cache file that contains previously used cmake cache path
+ OPENVINO_CMAKE_CACHE_FILE=$OPENVINO_HOME/build_Release/CMakeCache.txt
+
+ # Check if cmake_install.cmake exists, indicating that cmake has previously run
+ if [ -e "$OPENVINO_CMAKE_CACHE_FILE" ]; then
+
+ # Read first 2 line of the file, which contains the previously used path
+ FIRST_LINES=$(head -n 2 $OPENVINO_CMAKE_CACHE_FILE)
+
+ PATH_REGEX='\bFor build in directory:\s+(\S+)\/hps_packages\/openvino\/build_Release'
+
+ if [[ $FIRST_LINES =~ $PATH_REGEX ]]; then
+ BUILD_DIR_TEMP=${BASH_REMATCH[1]}
+ echo "Using cached temp path: $BUILD_DIR_TEMP"
+
+ mkdir -p $BUILD_DIR_TEMP
+
+ if [ -d $BUILD_DIR_TEMP ]; then
+ ln -s $BUILD_DIR $BUILD_DIR_TEMP
+ trap 'cleanup_tmpfile "$BUILD_DIR_TEMP"' EXIT
+ else
+ echo "mkdir command failed. Cannot create temporary build directory."
+ fi
+ else
+ echo "Could not read path from cmake_install.cmake"
+ fi
+ # If cmake_install.cmake does not exist, then generate a new temp directory
+ else
+ # Create temporary directory
+ if [ -n "$TEMPDIR" ]; then
+ BUILD_DIR_TEMP=$(mktemp -d -p "$TEMPDIR")
+ else
+ BUILD_DIR_TEMP=$(mktemp -d)
+ fi
+
+ echo "Creating new temp directory: $BUILD_DIR_TEMP"
+
+ if [ -z "$BUILD_DIR_TEMP" ]; then
+ echo "mktemp command failed. Cannot create temporary build directory."
+ else
+ ln -s $BUILD_DIR $BUILD_DIR_TEMP
+ trap 'cleanup_tmpfile "$BUILD_DIR_TEMP"' EXIT
+ fi
+ fi
+
+ # Use local versions of cmake variables
+ if [ -d "$BUILD_DIR_TEMP" ]; then
+ OPENVINO_HOME_LOC=$BUILD_DIR_TEMP/hps_packages/openvino
+ OPENVINO_BUILD_LOC=$OPENVINO_HOME_LOC/build_Release
+ STAGING_DIR_LOC=$BUILD_DIR_TEMP/hps_packages/armcpu_package
+ else
+ OPENVINO_HOME_LOC=$OPENVINO_HOME
+ OPENVINO_BUILD_LOC=$OPENVINO_BUILD
+ STAGING_DIR_LOC=$STAGING_DIR
+ fi
+
+ # Disable OpenVINO hetero plugin. ED4 should use the CoreDLA Hetero
+ pushd $OPENVINO_HOME_LOC
+ cmake -G "Ninja" -B $OPENVINO_BUILD_LOC \
+ -DOpenCV_DIR=$STAGING_DIR_LOC/opencv/cmake -DENABLE_OPENCV=OFF \
+ -DENABLE_SAMPLES=OFF \
+ -DENABLE_HETERO=OFF \
+ -DENABLE_AUTO=OFF \
+ -DENABLE_INTEL_GNA=OFF \
+ -DENABLE_INTEL_GPU=OFF \
+ -DENABLE_INTEL_MYRIAD=OFF \
+ -DENABLE_CPPLINT=OFF \
+ -DENABLE_TEMPLATE=OFF \
+ -DENABLE_TESTS=OFF -DENABLE_BEH_TESTS=OFF -DENABLE_FUNCTIONAL_TESTS=OFF \
+ -DENABLE_GAPI_TESTS=OFF \
+ -DENABLE_DATA=OFF -DENABLE_PROFILING_ITT=OFF \
+ -DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath-link,$STAGING_DIR_LOC/opencv/lib -DCMAKE_INSTALL_LIBDIR=lib \
+ -DENABLE_SSE42=OFF -DENABLE_INTEL_MYRIAD=OFF -DENABLE_INTEL_MYRIAD_COMMON=OFF\
+ -DENABLE_OPENVINO_DEBUG="${OV_DEBUG_FLAG}" \
+ -DENABLE_SYSTEM_TBB=OFF \
+ -DTHREADING=SEQ -DENABLE_LTO=ON \
+ -DENABLE_PYTHON=OFF \
+ -DENABLE_TEMPLATE=OFF \
+ -DENABLE_OV_ONNX_FRONTEND=OFF \
+ -DENABLE_OV_PADDLE_FRONTEND=OFF \
+ -DENABLE_OV_TF_FRONTEND=OFF \
+ -DENABLE_SYSTEM_PUGIXML=OFF \
+ -DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}" \
+ -DARM_COMPUTE_TOOLCHAIN_PREFIX=${TOOLCHAIN_PREFIX} ${OPENCV_PREFIX} \
+ -DCMAKE_STAGING_PREFIX=$STAGING_DIR_LOC \
+ -DCMAKE_PREFIX_PATH=$STAGING_DIR_LOC \
+ -DCMAKE_BUILD_TYPE=$OPENVINO_BUILD_TYPE \
+ .
+ if [ $? != 0 ]; then
+ fail "Failed to configure OPENVINO"
+ fi
+
+ cmake --build $OPENVINO_BUILD_LOC --parallel $(nproc)
+ if [ $? != 0 ]; then
+ fail "Failed to build OPENVINO"
+ fi
+
+ cmake --install ${OPENVINO_BUILD_LOC}
+ if [ $? != 0 ]; then
+ fail "Failed to install OPENVINO"
+ fi
+ popd
+}
+
+#################################################################
+function build_protobuf()
+{
+ pushd $PROTOBUF_HOME/cmake
+ cmake -G "Ninja" -B $PROTOBUF_BUILD \
+ -Dprotobuf_BUILD_TESTS=OFF \
+ -Dprotobuf_BUILD_EXAMPLES=OFF \
+ -Dprotobuf_WITH_ZLIB=OFF \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
+ -DCMAKE_INSTALL_PREFIX=$STAGING_DIR/protobuf \
+ -DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}" \
+ -DCMAKE_BUILD_TYPE=$PROTOBUF_BUILD_TYPE \
+ .
+ if [ $? != 0 ]; then
+ fail "Failed to configure PROTOBUF"
+ fi
+
+ cmake --build $PROTOBUF_BUILD --parallel $(nproc)
+ if [ $? != 0 ]; then
+ fail "Failed to build PROTOBUF"
+ fi
+
+ cmake --install ${PROTOBUF_BUILD}
+ if [ $? != 0 ]; then
+ fail "Failed to install PROTOBUF"
+ fi
+ popd
+}
+
+#################################################################
+function build_gflags()
+{
+ pushd $GFLAGS_HOME
+ cmake -B $GFLAGS_BUILD \
+ -D BUILD_STATIC_LIBS=ON \
+ -D BUILD_SHARED_LIBS=ON \
+ -D BUILD_gflags_nothreads_LIBS=ON \
+ -D BUILD_gflags_LIBS=ON \
+ -D INSTALL_HEADERS=ON \
+ -DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}" \
+ -DCMAKE_INSTALL_PREFIX="${GFLAGS_HOME}/install" \
+ -DCMAKE_STAGING_PREFIX=$STAGING_DIR/gflags \
+ -DARM_COMPUTE_TOOLCHAIN_PREFIX=${TOOLCHAIN_PREFIX} ${OPENCV_PREFIX} \
+ -Dextra_link_flags=--sysroot=${SYSROOT} \
+ -DCMAKE_BUILD_TYPE=$GFLAGS_BUILD_TYPE \
+ $GFLAGS_PLUGIN_HOME
+ if [ $? != 0 ]; then
+ fail "Failed to configure GFLAGS"
+ fi
+
+ cmake --build $GFLAGS_BUILD --parallel $(nproc)
+ if [ $? != 0 ]; then
+ fail "Failed to configure GFLAGS"
+ fi
+
+ cmake --install $GFLAGS_BUILD
+ if [ $? != 0 ]; then
+ fail "Failed to install GFLAGS"
+ fi
+ popd
+}
+#################################################################
+function usage
+{
+ echo "$script -schbvodp"
+ echo "Options:"
+ echo " -h Display usage"
+ echo " -s get sources"
+ echo " -b build"
+ echo " -d Build debug OpenVino"
+ echo " -c clean build directory"
+ echo " -v build only OpenCV"
+ echo " -o build only OpenVINO (Requires previous Protobuf, OpenCV build)"
+ echo " -p build only Protobuf"
+ echo " -x debug script"
+}
+
+##################################################################
+# Main Script
+get_source=0
+do_build=0
+do_clean=0
+
+do_opencv=0
+do_openvino=0
+do_protobuf=0
+do_gflags=0
+
+clean_staging=0
+
+BUILD_TYPE=Release
+
+while getopts "schbvoxpd" optname; do
+ case "$optname" in
+ h)
+ usage
+ exit 0
+ ;;
+ s)
+ get_source=1
+ ;;
+ b)
+ do_build=1
+ ;;
+ d)
+ BUILD_TYPE=Debug
+ ;;
+ c)
+ do_clean=1
+ ;;
+ v)
+ do_opencv=1
+ ;;
+ o)
+ do_openvino=1
+ ;;
+ g)
+ do_gflags=1
+ ;;
+ p)
+ do_protobuf=1
+ ;;
+ x)
+ set -x
+ ;;
+ esac
+done
+shift "$(($OPTIND -1))"
+
+
+#####################################################
+# Parameters
+OPENCV_BUILD_TYPE=Release
+OPENCV_HOME=$BUILD_DIR/opencv
+OPENCV_BUILD=$OPENCV_HOME/build_$OPENCV_BUILD_TYPE
+
+OPENVINO_BUILD_TYPE=$BUILD_TYPE
+OPENVINO_HOME=$BUILD_DIR/openvino
+OPENVINO_BUILD=$OPENVINO_HOME/build_$OPENVINO_BUILD_TYPE
+
+GFLAGS_BUILD_TYPE=Release
+GFLAGS_HOME=$BUILD_DIR/gflags
+GFLAGS_BUILD=$GFLAGS_HOME/build_$GFLAGS_BUILD_TYPE
+
+PROTOBUF_BUILD_TYPE=Release
+PROTOBUF_HOME=$BUILD_DIR/protobuf
+PROTOBUF_BUILD=$PROTOBUF_HOME/cmake/build_$PROTOBUF_BUILD_TYPE
+
+######################################################
+# Setup the Yocto Toolchain
+
+if find -maxdepth 1 -type d -name "${YOCTO_SDK_NAME}" | grep -q .; then
+ echo "Using previous setup Yocto toolchain at: ${YOCTO_SDK}"
+else
+ if find ${DEV_HOME} -maxdepth 1 -type f -name "poky*.sh" | grep -q .; then
+ echo "Found poky SDK at ${DEV_HOME}"
+ elif [[ ! -z "${ED4_POKY_SDK_LOC}" ]]; then
+ echo "copying poky SDK in ${ED4_POKY_SDK_LOC} to ${DEV_HOME}"
+ cp ${ED4_POKY_SDK_LOC} ${DEV_HOME}/
+ else
+ echo "Poky SDK not found. You need to copy the poky SDK to ${DEV_HOME} or"
+ echo "do: export ED4_POKY_SDK_LOC=\"path_to_your_poky_sdk\""
+ exit 1
+ fi
+ ${RUNTIME_ROOT_DIR}/scripts/hps/setup_toolchain.sh poky*.sh
+fi
+
+TOOLCHAIN_PREFIX=`get_toolchain_prefix`
+SYSROOT=`get_sdksysroot`
+echo $TOOLCHAIN_PREFIX
+echo $SYSROOT
+
+if [ $? != 0 ]; then
+ exit 1
+fi
+
+# If not doing individual builds then enable all
+if [[ ($do_opencv -eq 0) && ($do_openvino -eq 0) && ($do_gflags -eq 0) && ($do_protobuf -eq 0) ]]; then
+ do_opencv=1
+ do_openvino=1
+ do_gflags=1
+ do_protobuf=1
+ if [[ $do_clean -ne 0 ]]; then
+ clean_staging=1
+ fi
+fi
+
+
+if [[ $get_source -ne 0 ]]; then
+ get_git_repo $OPENCV_HOME https://github.com/opencv/opencv.git true 4.8.0
+ get_git_repo $OPENVINO_HOME https://github.com/openvinotoolkit/openvino.git true 2023.3.0
+ get_git_repo $GFLAGS_HOME https://github.com/gflags/gflags.git false v2.2.2
+ get_git_repo $PROTOBUF_HOME https://github.com/protocolbuffers/protobuf.git false v3.9.0
+fi
+
+if [[ $do_clean -ne 0 ]]; then
+ if [[ $do_opencv -ne 0 ]]; then
+ if [ -e $OPENCV_BUILD ]; then
+ echo "Cleaning $OPENCV_BUILD"
+ rm -r $OPENCV_BUILD
+ fi
+ fi
+
+ if [[ $do_openvino -ne 0 ]]; then
+ if [ -e $OPENVINO_BUILD ]; then
+ echo "Cleaning $OPENVINO_BUILD"
+ rm -r $OPENVINO_BUILD
+ fi
+ fi
+
+ if [[ $do_gflags -ne 0 ]]; then
+ if [ -e $GFLAGS_BUILD ]; then
+ echo "Cleaning $GFLAGS_BUILD"
+ rm -r $GFLAGS_BUILD
+ fi
+ fi
+
+ if [[ $do_protobuf -ne 0 ]]; then
+ if [ -e $PROTOBUF_BUILD ]; then
+ echo "Cleaning $PROTOBUF_BUILD"
+ rm -r $PROTOBUF_BUILD
+ fi
+ fi
+
+ if [[ $clean_staging -ne 0 ]]; then
+ if [ -e $STAGING_DIR ]; then
+ echo "Cleaning $STAGING_DIR"
+ rm -r $STAGING_DIR
+ fi
+ fi
+fi
+
+if [[ $do_build -ne 0 ]]; then
+ # Check we have the build sources
+ if [ ! -e $OPENCV_HOME ]; then
+ fail "OPENCV Source not available"
+ fi
+
+ if [ ! -e $OPENVINO_HOME ]; then
+ fail "OPENVINO Source not available"
+ fi
+
+ if [ ! -e $PROTOBUF_HOME ]; then
+ fail "PROTOBUF_HOME Source not available"
+ fi
+
+ # Apply patches to the build and check that each applied correctly
+ pushd $OPENVINO_HOME >> //dev/null
+ git apply ${DEV_HOME}/patches/openvino_5cee8bbf29797f4544b343e803de957e9f041f92_gcc11.3.0.patch 2> /dev/null
+ popd >> //dev/null
+
+ if [ $? != 0 ]; then
+ fail "Failed to apply patch: ${DEV_HOME}/patches/openvino_5cee8bbf29797f4544b343e803de957e9f041f92_gcc11.3.0.patch"
+ fi
+
+ pushd $OPENVINO_HOME >> //dev/null
+ git apply ${DEV_HOME}/patches/flags.patch 2> /dev/null
+ popd >> //dev/null
+
+ if [ $? != 0 ]; then
+ fail "Failed to apply patch: ${DEV_HOME}/patches/flags.patch"
+ fi
+
+ pushd $OPENVINO_HOME/src/plugins/intel_cpu/thirdparty/ComputeLibrary >> //dev/null
+ git apply ${DEV_HOME}/patches/computelibrary.patch 2> /dev/null
+ popd >> //dev/null
+
+ if [ $? != 0 ]; then
+ fail "Failed to apply patch: ${DEV_HOME}/patches/computelibrary.patch"
+ fi
+
+ if [[ $do_gflags -ne 0 ]]; then
+ build_gflags
+ fi
+ unset gflags_ROOT
+ export gflags_ROOT=${GFLAGS_HOME}/install
+
+ # Build the libaries
+ if [[ $do_protobuf -ne 0 ]]; then
+ build_protobuf
+ fi
+
+ if [[ $do_opencv -ne 0 ]]; then
+ build_opencv
+ else
+ OPENCV_PREFIX="-DCMAKE_PREFIX_PATH=$OPENCV_BUILD"
+ fi
+
+ if [[ $do_openvino -ne 0 ]]; then
+ build_openvino
+ fi
+fi
+exit