| #!/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 |