blob: ab98253eb09cbf4380bec506a674410eee8fe5f8 [file] [log] [blame]
#!/usr/bin/env bash
set -e
set -u
# this is to support running Renode from external directory
ROOT_PATH="$(cd $(dirname $0); echo $PWD)"
. "$ROOT_PATH/tools/common.sh"
OUTPUT_PATH="$ROOT_PATH/output/bin"
TARGET="Release"
QUIET=false
TRACE=false
NET=false
PARAMS=()
while [[ "$#" -gt 0 ]]
do
case $1 in
-d|--debug)
TARGET="Debug"
if $ON_LINUX
then
LAUNCHER="$LAUNCHER --debug"
fi
;;
-q|--quiet)
QUIET=true
;;
--net)
NET=true
;;
--trace)
TRACE=true
TRACE_FORMAT=${2:-}
case $TRACE_FORMAT in
Chromium|chromium)
TRACE_FORMAT="Chromium"
shift
;;
Speedscope|speedscope)
TRACE_FORMAT="Speedscope"
shift
;;
Nettrace|nettrace)
TRACE_FORMAT="Nettrace"
shift
;;
*)
# No format specified - use default, don't shift argument list
TRACE_FORMAT="Nettrace"
;;
esac
;;
*)
PARAMS+=("$1")
;;
esac
shift
done
if ! $NET && $TRACE
then
echo "Tracing is available only on the dotnet target"
exit 1
fi
if [ "$TARGET" == "Release" ] && $TRACE
then
echo "Tracing is available only with the debug target"
exit 1
fi
if $ON_WINDOWS && $TRACE
then
echo "Tracing is not available on the Windows platform"
fi
if ! $ON_WINDOWS && ! $NET
then
verify_mono_version
fi
if ${REMOTE:-false} && ! $NET
then
LAUNCHER="$LAUNCHER --debugger-agent=transport=dt_socket,address=0.0.0.0:${REMOTE_PORT:=9876},server=y"
echo "Waiting for a debugger at port $REMOTE_PORT..."
fi
if ${QUIET:-false}
then
exec 2>/dev/null
fi
if $NET
then
if $ON_WINDOWS
then
TFM="net6.0-windows10.0.17763.0"
"${OUTPUT_PATH}/${TARGET}/${TFM}/Renode.exe" "${PARAMS[@]:-}"
else
if ! $TRACE
then
TRACE_COMMAND=""
else
TRACE_COMMAND="dotnet-trace collect --format ${TRACE_FORMAT} --"
fi
TFM="net6.0"
${TRACE_COMMAND} dotnet "${OUTPUT_PATH}/${TARGET}/${TFM}/Renode.dll" "${PARAMS[@]:-}"
fi
else
if $ON_WINDOWS
then
"${OUTPUT_PATH}/${TARGET}/Renode.exe" "${PARAMS[@]:-}"
else
$LAUNCHER "${OUTPUT_PATH}/${TARGET}/Renode.exe" "${PARAMS[@]:-}"
fi
fi