xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/lib/java.exp (revision 11efff7f3ac2b3cfeff0c0cddc14294d9b3aca4f)
1*11efff7fSkettenis# This test code is part of GDB, the GNU debugger.
2*11efff7fSkettenis
3*11efff7fSkettenis# Copyright 1998, 1999, 2000, 2003, 2004
4*11efff7fSkettenis# Free Software Foundation, Inc.
5*11efff7fSkettenis
6*11efff7fSkettenis# This program is free software; you can redistribute it and/or modify
7*11efff7fSkettenis# it under the terms of the GNU General Public License as published by
8*11efff7fSkettenis# the Free Software Foundation; either version 2 of the License, or
9*11efff7fSkettenis# (at your option) any later version.
10*11efff7fSkettenis#
11*11efff7fSkettenis# This program is distributed in the hope that it will be useful,
12*11efff7fSkettenis# but WITHOUT ANY WARRANTY; without even the implied warranty of
13*11efff7fSkettenis# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*11efff7fSkettenis# GNU General Public License for more details.
15*11efff7fSkettenis#
16*11efff7fSkettenis# You should have received a copy of the GNU General Public License
17*11efff7fSkettenis# along with this program; if not, write to the Free Software
18*11efff7fSkettenis# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19b725ae77Skettenis
20b725ae77Skettenisload_lib "libgloss.exp"
21b725ae77Skettenis
22b725ae77Skettenis# GCJ_UNDER_TEST is the compiler under test.
23b725ae77Skettenis
24b725ae77Skettenisglobal tmpdir
25b725ae77Skettenis
26b725ae77Skettenisif ![info exists tmpdir] {
27b725ae77Skettenis    set tmpdir "/tmp"
28b725ae77Skettenis}
29b725ae77Skettenis
30b725ae77Skettenisset java_initialized 0
31b725ae77Skettenis
32b725ae77Skettenis#
33b725ae77Skettenis# Build the status wrapper library as needed.
34b725ae77Skettenis#
35b725ae77Skettenisproc java_init { args } {
36b725ae77Skettenis    global wrapper_file;
37b725ae77Skettenis    global wrap_compile_flags;
38b725ae77Skettenis    global java_initialized
39b725ae77Skettenis    global GCJ_UNDER_TEST
40b725ae77Skettenis    global TOOL_EXECUTABLE
41b725ae77Skettenis    global env
42b725ae77Skettenis
43b725ae77Skettenis    if { $java_initialized == 1 } { return; }
44b725ae77Skettenis
45b725ae77Skettenis    if ![info exists GCJ_UNDER_TEST] {
46b725ae77Skettenis	if [info exists TOOL_EXECUTABLE] {
47b725ae77Skettenis	    set GCJ_UNDER_TEST $TOOL_EXECUTABLE;
48b725ae77Skettenis	} else {
49b725ae77Skettenis	    if [info exists env(GCJ)] {
50b725ae77Skettenis		set GCJ_UNDER_TEST $env(GCJ)
51b725ae77Skettenis	    } else {
52b725ae77Skettenis		global tool_root_dir
53b725ae77Skettenis		global target_alias
54b725ae77Skettenis
55b725ae77Skettenis		if ![is_remote host] {
56b725ae77Skettenis		    set file [lookfor_file $tool_root_dir gcj];
57b725ae77Skettenis		    if { $file == "" } {
58b725ae77Skettenis			set file [lookfor_file $tool_root_dir gcc/gcj];
59b725ae77Skettenis		    }
60b725ae77Skettenis		    if { $file != "" } {
61b725ae77Skettenis			set CC "$file -B[file dirname $file]/ --specs=$tool_root_dir/$target_alias/libjava/libgcj-test.spec";
62b725ae77Skettenis		    } else {
63b725ae77Skettenis			set CC [transform gcj];
64b725ae77Skettenis		    }
65b725ae77Skettenis		} else {
66b725ae77Skettenis		    set CC [transform gcj]
67b725ae77Skettenis		}
68b725ae77Skettenis		set GCJ_UNDER_TEST $CC
69b725ae77Skettenis	    }
70b725ae77Skettenis	}
71b725ae77Skettenis    }
72b725ae77Skettenis
73b725ae77Skettenis    set wrapper_file "";
74b725ae77Skettenis    set wrap_compile_flags "";
75b725ae77Skettenis    if [target_info exists needs_status_wrapper] {
76b725ae77Skettenis	set result [build_wrapper "testglue.o"];
77b725ae77Skettenis	if { $result != "" } {
78b725ae77Skettenis	    set wrapper_file [lindex $result 0];
79b725ae77Skettenis	    set wrap_compile_flags [lindex $result 1];
80b725ae77Skettenis	} else {
81b725ae77Skettenis	    warning "Status wrapper failed to build."
82b725ae77Skettenis	}
83b725ae77Skettenis    }
84b725ae77Skettenis
85b725ae77Skettenis    set java_initialized 1
86b725ae77Skettenis}
87b725ae77Skettenis
88b725ae77Skettenis#
89b725ae77Skettenis# Run the test specified by srcfile and resultfile. compile_args and
90b725ae77Skettenis# exec_args are options telling this proc how to work.
91b725ae77Skettenis#
92b725ae77Skettenisproc compile_java_from_source { srcfile binfile compile_args } {
93b725ae77Skettenis    global GCJ_UNDER_TEST
94b725ae77Skettenis    global runtests
95b725ae77Skettenis    global java_initialized
96b725ae77Skettenis
97b725ae77Skettenis    if { $java_initialized != 1 } { java_init }
98b725ae77Skettenis
99b725ae77Skettenis    set errname [file rootname [file tail $srcfile]]
100b725ae77Skettenis    if {! [runtest_file_p $runtests $errname]} {
101b725ae77Skettenis        return
102b725ae77Skettenis    }
103b725ae77Skettenis
104b725ae77Skettenis    set args "compiler=$GCJ_UNDER_TEST"
105b725ae77Skettenis    lappend args "additional_flags=--main=[file rootname [file tail $srcfile]]"
106b725ae77Skettenis    if { $compile_args != "" } {
107b725ae77Skettenis	lappend args "additional_flags=$compile_args"
108b725ae77Skettenis    }
109b725ae77Skettenis
110b725ae77Skettenis    if { $compile_args != "" } {
111b725ae77Skettenis	set errname "$errname $compile_args"
112b725ae77Skettenis    }
113b725ae77Skettenis
114b725ae77Skettenis    set x [target_compile $srcfile ${binfile} ${binfile} $args]
115b725ae77Skettenis    if { $x != "" } {
116b725ae77Skettenis	verbose "target_compile failed: $x" 2
117b725ae77Skettenis	return "$errname compilation from source";
118b725ae77Skettenis    }
119b725ae77Skettenis}
120b725ae77Skettenis
121b725ae77Skettenis# Local Variables:
122b725ae77Skettenis# tcl-indent-level:4
123b725ae77Skettenis# End:
124