source "site.exp"
source "$srcdir/winsup.api/known_bugs.tcl"

if { ! [isnative] } {
    verbose "skipping winsup.api because it's not native"
    return
}

set rv ""
set add_includes ""
set add_libs ""

set ltp_includes "-I$ltp_includes"
set ltp_libs "$rootme/libltp.a"

proc ws_spawn {cmd args} {
    global rv
    verbose "running $cmd\n"
    catch [eval "exec $cmd"] rv
    verbose send "catchCode = $rv\n"
}

foreach src [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.c] {
    regsub "^$srcdir/$subdir/" $src "" testcase
    regsub ".c$" $testcase "" base
    regsub ".*/" $base "" basename
    regsub "/" $base "-" base

    if { [lsearch -exact $xfail_list $basename] >= 0 } {
        set xfail_expected 1
	setup_xfail "*-*-*"
    } else {
        set xfail_expected 0
	clear_xfail
    }

    if { [regexp "^ltp/" $testcase ] } {
        set add_includes $ltp_includes
        set add_libs $ltp_libs
    }

    ws_spawn "$CC -g3 $CFLAGS $src $add_includes $add_libs $runtime_root/new-libcygwin.a -o $base.exe"
    if { $rv != "" } {
	verbose -log "$rv"
	fail "$testcase (compile)"
    } else {
        if { $verbose } {
           set redirect_output "./$base.log"
        } else {
           set redirect_output /dev/null
        }
        ws_spawn "$runtime_root/cygrun ./$base.exe > $redirect_output"
        if { $rv != "" } {
	    verbose -log "$testcase: $rv"
	    fail "$testcase (execute)"
            if { $xfail_expected } {
  	        catch { file delete "$base.exe" } err
                if { $err != "" } {
                    note "error deleting $base.exe: $err"
                }
            }
	} else {
	    pass "$testcase"
	    catch { file delete "$base.exe" } err
            if { $err != "" } {
                note "error deleting $base.exe: $err"
            }
	}
    }
}
