#!/bin/sh
# SPDX-License-Identifier: Apache-2.0
# Copyright (C) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.

# -- Detect a Windows environment and automatically switch to the .bat file
if [ "$(uname | grep -E '^(windows32|CYGWIN)')" ]; then
  trap "" INT
  "$0.bat" "$@"
  exit $?
fi

# Working variables
XRT_PROG=xclbinutil

# -- Examine the options 
XRTWARP_PROG_ARGS_size=0
while [ $# -gt 0 ]; do
  case "$1" in
    #  Future option example syntax
    #    -futureOption|--futureOption)
    #      XRT_PROG=xbutil2
    #      shift
    #      ;;

    # Copy the remaining options
    *)
      eval "XRTWRAP_PROG_ARG_$XRTWARP_PROG_ARGS_size=\"\$1\""
      XRTWARP_PROG_ARGS_size=$((XRTWARP_PROG_ARGS_size + 1))
      shift
      ;;
  esac
done

# -- Find loader directory
XRT_LOADER_DIR="$(dirname "$0")"

# For edge platforms loader is not required as tools are in standard location(/usr).
# So calling unwrapped tool from this script itself.
case "$XRT_LOADER_DIR" in
    */usr*|/usr*)
        # Build arguments dynamically
        i=0
        while [ $i -lt $XRTWARP_PROG_ARGS_size ]; do
            eval "arg=\$XRTWRAP_PROG_ARG_$i"
            set -- "$@" "$arg"
            i=$((i + 1))
        done
        "${XRT_LOADER_DIR}/unwrapped/${XRT_PROG}" "$@"
        exit 0
        ;;
esac

# Call loader for dc platforms
XRT_LOADER="${XRT_LOADER_DIR}/unwrapped/loader"

if [ ! -f "$XRT_LOADER" ]; then
  echo "ERROR: Could not find 64-bit loader executable."
  echo "ERROR: ${XRT_LOADER} does not exist."
  exit 1
fi

# Build arguments dynamically for final call
i=0
while [ $i -lt $XRTWARP_PROG_ARGS_size ]; do
    eval "arg=\$XRTWRAP_PROG_ARG_$i"
    set -- "$@" "$arg"
    i=$((i + 1))
done

"${XRT_LOADER}" -exec $XRT_PROG "$@"
