Revision 9c26503693a47773f9c3381420dd9a2509b018a9 authored by nsubiron on 18 January 2019, 09:56:52 UTC, committed by nsubiron on 18 January 2019, 09:56:52 UTC
1 parent e164d8e
Raw File
Rebuild.sh
#!/bin/bash

################################################################################
# Updates CARLA content.
################################################################################

set -e

DOC_STRING="Update CARLA content to the latest version, to be run after 'git pull'."

USAGE_STRING="Usage: $0 [-h|--help] [--no-editor]"

# ==============================================================================
# -- Parse arguments -----------------------------------------------------------
# ==============================================================================

LAUNCH_UE4_EDITOR=true

OPTS=`getopt -o h --long help,no-editor -n 'parse-options' -- "$@"`

if [ $? != 0 ] ; then echo "$USAGE_STRING" ; exit 2 ; fi

eval set -- "$OPTS"

while true; do
  case "$1" in
    --no-editor )
      LAUNCH_UE4_EDITOR=false;
      shift ;;
    -h | --help )
      echo "$DOC_STRING"
      echo "$USAGE_STRING"
      exit 1
      ;;
    * )
      break ;;
  esac
done

# ==============================================================================
# -- Set up environment --------------------------------------------------------
# ==============================================================================

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
pushd "$SCRIPT_DIR" >/dev/null

UNREAL_PROJECT_FOLDER=./Unreal/CarlaUE4
UE4_INTERMEDIATE_FOLDERS="Binaries Build Intermediate DerivedDataCache"

function fatal_error {
  echo -e "\033[0;31mERROR: $1\033[0m"
  exit 1
}

function log {
  echo -e "\033[0;33m$1\033[0m"
}

if [ ! -d "${UE4_ROOT}" ]; then
  fatal_error "UE4_ROOT is not defined, or points to a non-existant directory, please set this environment variable."
else
  echo "Using Unreal Engine at '$UE4_ROOT'"
fi

# ==============================================================================
# -- Make CarlaServer ----------------------------------------------------------
# ==============================================================================

log "Making CarlaServer..."
make clean && make debug && make release

# ==============================================================================
# -- Clean up intermediate Unreal files ----------------------------------------
# ==============================================================================

pushd "$UNREAL_PROJECT_FOLDER" >/dev/null

pushd "Plugins/Carla" >/dev/null

log "Cleaning up CARLA Plugin..."
rm -Rf ${UE4_INTERMEDIATE_FOLDERS}

popd > /dev/null

log "Cleaning up CARLAUE4..."
rm -Rf ${UE4_INTERMEDIATE_FOLDERS}

popd >/dev/null

# ==============================================================================
# -- Build and launch Unreal project -------------------------------------------
# ==============================================================================

pushd "$UNREAL_PROJECT_FOLDER" >/dev/null

# This command usually fails but normally we can continue anyway.
set +e
log "Generate Unreal project files..."
${UE4_ROOT}/GenerateProjectFiles.sh -project="${PWD}/CarlaUE4.uproject" -game -engine -makefiles
set -e

log "Build CarlaUE4 project..."
make CarlaUE4Editor

if $LAUNCH_UE4_EDITOR ; then
  log "Launching UE4Editor..."
  ${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${PWD}/CarlaUE4.uproject"
else
  echo ""
  echo "****************"
  echo "*** Success! ***"
  echo "****************"
fi

popd >/dev/null

# ==============================================================================
# -- ...and we are done --------------------------------------------------------
# ==============================================================================

popd >/dev/null
back to top