#!/bin/sh
HERE=`dirname "$0"`
TARGET="$1"
shift

if [ -d /opt/picolibc-ci ]; then
    TOP=/opt/picolibc-ci
else
    TOP=/opt
fi

# Put only the relevant toolchain in PATH for specific CI targets.
# Fallback to previous behavior for other targets.
case "$TARGET" in
    *clang-hexagon*)
        for p in "$TOP"/*hexagon*/bin "$TOP"/*/models/*; do
            [ -d "$p" ] && PATH="$p":$PATH
        done
        ;;
    *clang-arm*|*clang-aarch64*|*clang-thumb*)
        for p in "$TOP"/ATfE-*/bin "$TOP"/*/models/*; do
            [ -d "$p" ] && PATH="$p":$PATH
        done
        ;;
    *)
        for p in "$TOP"/*/bin "$TOP"/*/models/*; do
            PATH="$p":$PATH
        done
        ;;
esac

OPTIONS=""

case "$TARGET" in
    *m68k*)
	# Disable analyzer on m68k because the compiler gets very confused
	# about complex values

	OPTIONS="$OPTIONS -Danalyzer=false"
	;;
    *msp430*)

	# Use traps with the sanitizer on msp430 as the handlers make many
	# tests too large

	OPTIONS="$OPTIONS -Dsanitize-trap-on-error=true"
	;;
esac

"$HERE"/do-run "$TARGET" "$@" $OPTIONS
