#!/usr/bin/perl
$prefix = "c:/WinAVR";
$datadir = "c:/WinAVR/doc";
$debugger = "avr-gdb";

@argcmds = ( "-b", "--cd", "--command", "--core", "--pid", "--directory",
	     "--exec", "--interpreter", "--se", "--symbols", "--tty",
	     "-s", "-e", "-se", "-x", "-d" );

for ($i = 0; $i <= $#ARGV; $i++) {
    $arg = $ARGV[$i];

    if ($arg =~ /^-/ &&
	(grep $_ eq $arg, @argcmds || grep /^-$arg$/, @argcmds)) {
	$i++;
    }
    elsif ($arg eq "--debugger" && $i < $#ARGV) {
	$debugger = $ARGV[$i + 1];
	splice @ARGV, $i, 2;
	$i--;
    }
    elsif ($arg eq "--capture" || $arg eq "--ignore-intr") {
	$ENV{AVARICE_ARGS} = "$ENV{AVARICE_ARGS} $arg";
	splice @ARGV, $i, 1;
	# Don't load an executable
	$capture = 1 if $arg eq "--capture";
	$i--;
    }
    elsif ($arg eq "--external") {
	$avarice_running = 1;
	splice @ARGV, $i, 1;
	$i--;
    }
    elsif (!($arg =~ /^-/)) {
	$exe = $arg;
	break;
    }
}

$exe = "" if $capture;

system "start-avarice $exe" unless $avarice_running;
unshift @ARGV, ($debugger, "-x", "$datadir/avarice/gdb-avarice-script" );
exec @ARGV;