X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=libjava%2Ftestsuite%2Flibjava.jni%2Fjni.exp;fp=libjava%2Ftestsuite%2Flibjava.jni%2Fjni.exp;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=724b2545acb0670d63e9c2606883aefa13fb95ce;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/libjava/testsuite/libjava.jni/jni.exp b/libjava/testsuite/libjava.jni/jni.exp deleted file mode 100644 index 724b2545..00000000 --- a/libjava/testsuite/libjava.jni/jni.exp +++ /dev/null @@ -1,180 +0,0 @@ -# Tests for JNI code. - -# Compile a single C file and produce a .so file. OPTIONS is a list -# of options to pass to the compiler. Returns 0 on failure, 1 on -# success. -proc gcj_jni_compile_c_to_so {file {options {}}} { - global srcdir - - set name [file rootname [file tail $file]] - set soname lib${name}.so - - lappend options "additional_flags=-shared -fPIC" - # Find the generated header. - lappend options "additional_flags=-I. -I.." - # Find jni.h. - lappend options "additional_flags=-I$srcdir/../include" - - set x [prune_warnings [target_compile $file $soname executable $options]] - if {$x != ""} { - verbose "target_compile failed: $x" 2 - fail "$name.c compilation" - return 0 - } - - pass "$name.c compilation" - return 1 -} - -# Build a header file from a .class file. Return 0 on failure. -proc gcj_jni_build_header {file} { - set gcjh [find_gcjh] - set file [file rootname $file] - set x [string trim [prune_warnings \ - [lindex [local_exec "$gcjh -jni $file" "" "" 300] 1]]] - if {$x != ""} { - verbose "local_exec failed: $x" 2 - fail "$file header generation" - return 0 - } - - pass "$file header generation" - return 1 -} - -# Invoke the program and see what happens. Return 0 on failure. -proc gcj_invoke {program expectFile ld_library_additions} { - global env - set lib_path $env(LD_LIBRARY_PATH) - - set newval . - if {[llength $ld_library_additions] > 0} { - append newval :[join $ld_library_additions :] - } - append newval :$lib_path - - setenv LD_LIBRARY_PATH $newval - setenv SHLIB_PATH $newval - - verbose "LD_LIBRARY_PATH=$env(LD_LIBRARY_PATH)" - - set result [libjava_load ./$program] - set status [lindex $result 0] - set output [lindex $result 1] - - # Restore setting - setenv LD_LIBRARY_PATH $lib_path - setenv SHLIB_PATH $lib_path - - if {$status != "pass"} { - verbose "got $output" - fail "$program run" - untested "$program output" - return 0 - } - - set id [open $expectFile r] - set expected [read $id] - close $id - - if {! [string compare $output $expected]} { - pass "$program output" - return 1 - } else { - fail "$program output" - return 0 - } -} - -# Do all the work for a single JNI test. Return 0 on failure. -proc gcj_jni_test_one {file} { - global runtests - - # The base name. We use it for several purposes. - set main [file rootname [file tail $file]] - if {! [runtest_file_p $runtests $main]} { - # Simply skip it. - return 1 - } - - if {! [bytecompile_file $file [pwd]]} { - fail "bytecompile $file" - # FIXME - should use `untested' on all remaining tests. - # But that is hard. - return 0 - } - pass "bytecompile $file" - - set bytefile [file rootname [file tail $file]].class - if {! [gcj_jni_build_header $bytefile]} { - # FIXME - return 0 - } - - set cfile [file rootname $file].c - set cxxflags "" - set cxxldlibflags {} - # If there is no `.c' file, assume there is a `.cc' file. - if {! [file exists $cfile]} { - set cfile [file rootname $file].cc - - set cxxflaglist {} - foreach arg [split [libjava_find_lib libstdc++-v3/src stdc++] " "] { - switch -glob -- $arg { - "-L*" { - set arg [string range $arg 2 end] - lappend cxxldlibflags $arg - # Strip the `.libs' directory; we link with libtool which - # doesn't need it. - set arg "-L[file dirname $arg]" - } - } - lappend cxxflaglist $arg - } - - lappend cxxflaglist "-lstdc++" - set cxxflags [join $cxxflaglist] - } - - if {! [gcj_jni_compile_c_to_so $cfile]} { - # FIXME - return 0 - } - - # We use -l$main because the .so is named the same as the main - # program. - set args [list "additional_flags=-fjni -L. -l$main $cxxflags"] - if {! [gcj_link $main $main $file $args]} { - # FIXME - return 0 - } - - if {! [gcj_invoke $main [file rootname $file].out $cxxldlibflags]} { - # FIXME - return 0 - } - - # When we succeed we remove all our clutter. - eval gcj_cleanup [glob -nocomplain -- ${main}.*] [list $main lib${main}.so] - - return 1 -} - -# Run the JNI tests. -proc gcj_jni_run {} { - global srcdir subdir - global build_triplet host_triplet - - # For now we only test JNI on native builds. - if {$build_triplet == $host_triplet} { - catch "glob -nocomplain ${srcdir}/${subdir}/*.java" srcfiles - - foreach x $srcfiles { - gcj_jni_test_one $x - } - } else { - verbose "JNI tests not run in cross-compilation environment" - } -} - -gcj_jni_run