set srcdir [lindex $argv 0]
set subdir [lindex $argv 1]
set objdir [lindex $argv 2]

if [ file exists $objdir/setval.tmp ] {
    source $objdir/setval.tmp
} else {
    puts "ERROR: $objdir/setval.tmp doesn't exist"
}
if [ file exists $srcdir/$subdir/default_procs.tcl ] {
    source "$srcdir/$subdir/default_procs.tcl"
} else {
    puts "ERROR: $srcdir/$subdir/default_procs.tcl doesn't exist"
}

set file $srcdir/../lib/target.exp
if [ file exists $file] {
    source $file
} else {
    puts "ERROR: $file doesn't exist"
}
# we load framework so we can use stuff like is3way
set file $srcdir/../lib/framework.exp
if [ file exists $file] {
    source $file
} else {
    puts "ERROR: $file doesn't exist"
}
# we load the remote stuff so we can test execute_anywhere
set file $srcdir/../lib/remote.exp
if [ file exists $file] {
    source $file
} else {
    puts "ERROR: $file doesn't exist"
}

#
# Create a false target config array
#
set target_info(idp,name)       "idp"
set target_info(idp,ldflags)    "-Tidp.ld"
set target_info(idp,config)     m68k-unknown-aout
set target_info(idp,cflags)     ""
set target_info(idp,connect)    "telnet"
set target_info(idp,target)     "s12"
set target_info(idp,serial)     "tstty12"
set target_info(idp,netport)    "localhost:23"
set target_info(idp,baud)       "9600"
# MVME target
set target_info(mvme,name)      "mvme"
set target_info(mvme,ldflags)   "-Tmvme.ld"
set target_info(mvme,config)    m68k-unknown-aout
set target_info(mvme,cflags)    ""
set target_info(mvme,connect)   "telnet"
set target_info(mvme,target)    "s12"
set target_info(mvme,serial)    "tstty8"
set target_info(mvme,netport)   "localhost:23"
set target_info(mvme,baud)      "9600"

# Test remote open. We try not to use any of the support procs in
# target.exp to for isolation testing. "target" is the name of the
# default array setup by the procs in target.exp.

set timeout 100

# test list_target

if { [list_targets] == "idp mvme" } {
    puts "PASSED: list_targets"
} else {
    puts "FAILED: list_targets"
}
push_config target idp
set matches 0
if { $target_info(target,name) == "idp" } {
    incr matches
}
if { $target_info(target,ldflags) == "-Tidp.ld" } {
    incr matches
}
if { $target_info(target,config) == "m68k-unknown-aout" } {
    incr matches
}
if { $target_info(target,cflags) == "" } {
    incr matches
}
if { $target_info(target,connect) == "telnet" } {
    incr matches
}
if { $target_info(target,target) == "s12" } {
    incr matches
}
if { $target_info(target,serial) == "tstty12" } {
    incr matches
}
if { $target_info(target,netport) == "localhost:23" } {
    incr matches
}
if { $target_info(target,baud) == "9600" } {
    incr matches
}
if { $matches == 9 } {
    puts "PASSED: push_config target"
} else {
    puts "FAILED: push_config target"
}

# test pop_config target
pop_config target
set matches 0
if { $target_info(target,name) == "" } {
    incr matches
}
if { $target_info(target,ldflags) == "" } {
    incr matches
}
if { $target_info(target,config) == "" } {
    incr matches
}
if { $target_info(target,cflags) == "" } {
    incr matches
}
if { $target_info(target,connect) == "" } {
    incr matches
}
if { $target_info(target,target) == "" } {
    incr matches
}
if { $target_info(target,serial) == "" } {
    incr matches
}
if { $target_info(target,netport) == "" } {
    incr matches
}
if { $target_info(target,baud) == "" } {
    incr matches
}
if { $matches == 9 } {
    puts "PASSED: pop_config target"
} else {
    puts "FAILED: pop_config target"
}

push_config host idp
set matches 0
if { $target_info(host,name) == "idp" } {
    incr matches
}
if { $target_info(host,ldflags) == "-Tidp.ld" } {
    incr matches
}
if { $target_info(host,config) == "m68k-unknown-aout" } {
    incr matches
}
if { $target_info(host,cflags) == "" } {
    incr matches
}
if { $target_info(host,connect) == "telnet" } {
    incr matches
}
if { $target_info(host,target) == "s12" } {
    incr matches
}
if { $target_info(host,serial) == "tstty12" } {
    incr matches
}
if { $target_info(host,netport) == "localhost:23" } {
    incr matches
}
if { $target_info(host,baud) == "9600" } {
    incr matches
}
if { $matches == 9 } {
    puts "PASSED: push_config target"
} else {
    puts "FAILED: push_config target"
}

# test pop_config host
pop_config host
set matches 0
if { $target_info(host,name) == "" } {
    incr matches
}
if { $target_info(host,ldflags) == "" } {
    incr matches
}
if { $target_info(host,config) == "" } {
    incr matches
}
if { $target_info(host,cflags) == "" } {
    incr matches
}
if { $target_info(host,connect) == "" } {
    incr matches
}
if { $target_info(host,target) == "" } {
    incr matches
}
if { $target_info(host,serial) == "" } {
    incr matches
}
if { $target_info(host,netport) == "" } {
    incr matches
}
if { $target_info(host,baud) == "" } {
    incr matches
}
if { $matches == 9 } {
    puts "PASSED: pop_config host"
} else {
    puts "FAILED: pop_config host"
}

# test execute_anywhere for a native environment
set host_triplet i586-unknown-linux
set target_triplet i586-unknown-linux
set build_triplet i586-unknown-linux
if { [string match "*setval.tmp*" [execute_anywhere "ls"]] } {
    puts "PASSED: execute_anywhere, native"
} else {
    puts "FAILED: execute_anywhere, native"
}

# test execute_anywhere for a normal cross
set target_triplet m68k-unknown-coff
if { [string match "*testsuite" [execute_anywhere "pwd"]] } {
    puts "PASSED: execute_anywhere, normal cross"
} else {
    puts "FAILED: execute_anywhere, normal cross"
}

# test execute_anywhere for a canadian cross
set build_triplet m68k-test-test
set target_info(host,connect) rlogin
set target_info(host,netport) $target_info(idp,netport)
set target_info(host,target)  localhost
if { [string match "*FooBar*" [execute_anywhere "echo FooBar"]] } {
    puts "PASSED: execute_anywhere, canadian cross"
} else {
    puts "FAILED: execute_anywhere, canadian cross"
}

# compile arg
# archive arg
# ranlib arg
# link_objects arg
