#!/bin/bash
###############################################################################
# Copyright (C) Intel Corporation
#
# SPDX-License-Identifier: MIT
###############################################################################
# Build cpu.

if [ -z "$BASH_VERSION" ]
then
  echo "This script must be run under bash"
  exit 1
fi

if [ "$0" = "$BASH_SOURCE" ]
then
  set -o errexit
else
  echo "Warning: This script should not be sourced. Skipping exit on error."
fi

SCRIPT_DIR="$( cd "$(dirname "${BASH_SOURCE[0]:-$0}")" >/dev/null 2>&1 ; pwd -P )"

# Read command line options
. "${SCRIPT_DIR}/_buildopts.sh" \
    --name build \
    --desc "Build cpu." \
    -- "$@"

###############################################################################
# Globals
if [ -z "${VPL_CPU_BUILD_DIR}" ]
then
  VPL_CPU_BUILD_DIR="${PROJ_DIR}/_build"
fi
###############################################################################

if [ -n "${BOOTSTRAP_OPT}" ]
then
  echo "Building dependencies..."
  "${SCRIPT_DIR}/bootstrap" ${FORWARD_OPTS}
fi

if [ -n "${VPL_INSTALL_DIR}" ]
then
  mkdir -p "${VPL_INSTALL_DIR}"
  PREFIX_PATH_CM_OPT="-DCMAKE_PREFIX_PATH=${VPL_INSTALL_DIR}"
  INSTALL_PREFIX_CM_OPT="-DCMAKE_INSTALL_PREFIX=${VPL_INSTALL_DIR}"
fi

COFIG_CM_OPT="-DCMAKE_BUILD_TYPE=${COFIG_OPT}"

BUILD_DIR="${VPL_CPU_BUILD_DIR}"
if [ "${GPL_OPT}" == "yes" ]; then
  CMAKE_GPL_OPT=-DBUILD_GPL_X264=ON
fi
if [ "${ONEAPI_LAYOUT_OPT}" == "yes" ]; then
  CMAKE_INSTALL_LAYOUT_OPT=-DUSE_ONEAPI_INSTALL_LAYOUT=ON
fi
if [ "${WARNING_AS_ERROR_OPT}" == "yes" ]; then
  CMAKE_WARN_OPTS=-DENABLE_WARNING_AS_ERROR=ON
fi
mkdir -p ${BUILD_DIR}
pushd "${BUILD_DIR}"
  cmake "${PREFIX_PATH_CM_OPT}" "${INSTALL_PREFIX_CM_OPT}" ${CMAKE_GPL_OPT} ${CMAKE_WARN_OPTS} ${CMAKE_INSTALL_LAYOUT_OPT} "${COFIG_CM_OPT}" "${PROJ_DIR}"
  make -j "$(nproc)" VERBOSE=1
  cmake --build . --config "${COFIG_OPT}" --target package
popd

# Signal to CI system
if [ -n "${TEAMCITY_VERSION}" ]; then
  HOST_OS='linux'
  UNAME=$( command -v uname)

  case $( "${UNAME}" | tr '[:upper:]' '[:lower:]') in
    msys*|cygwin*|mingw*)
      # MinGW/MSys type Bash on windows
      HOST_OS='windows'
      ;;
  esac

  if [ "${HOST_OS}" == "linux" ]; then
    echo "##teamcity[publishArtifacts '${BUILD_DIR}/*-all.zip=>']"
  fi
fi
