#!/usr/bin/env bash
set -euo pipefail

if [[ -n "${ZIG_ROOT:-}" && -x "${ZIG_ROOT}/zig" ]]; then
  ZIG_BIN="${ZIG_ROOT}/zig"
elif command -v zig >/dev/null 2>&1; then
  ZIG_BIN="$(command -v zig)"
else
  ZIG_BIN="${HOME}/.cache/zig-toolchain/zig-linux-x86_64-0.14.0/zig"
fi

filtered_args=()
for arg in "$@"; do
  if [[ "${arg}" == @* && -f "${arg:1}" ]]; then
    while IFS= read -r token; do
      case "${token}" in
        --|--use-temp-file|++|-Wl,--output-def,*)
          continue
          ;;
      esac
      filtered_args+=("${token}")
    done < <(tr '\n\r\t ' '\n\n\n\n' < "${arg:1}" | sed '/^$/d')
    continue
  fi
  case "${arg}" in
    --)
      continue
      ;;
    --use-temp-file)
      continue
      ;;
    -Wl,--output-def,*)
      continue
      ;;
    ++)
      break
      ;;
  esac
  filtered_args+=("${arg}")
done

exec "${ZIG_BIN}" cc -target x86_64-windows-gnu -fuse-ld=lld "${filtered_args[@]}"
