libjava.exp (libjava_find_spec): New function.

* testsuite/lib/libjava.exp (libjava_find_spec): New function.
	(libjava_init): Use it to find libgcj.spec.
	(libjava_arguments): Likewise.

From-SVN: r53057
This commit is contained in:
Rainer Orth 2002-05-02 19:12:37 +00:00 committed by Rainer Orth
parent fd84ba84a7
commit b651af860e
2 changed files with 36 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2002-05-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* testsuite/lib/libjava.exp (libjava_find_spec): New function.
(libjava_init): Use it to find libgcj.spec.
(libjava_arguments): Likewise.
2002-05-02 David S. Miller <davem@redhat.com>
PR bootstrap/6525

View File

@ -133,8 +133,13 @@ proc libjava_init { args } {
regexp -- "gcj \[^ \]+ (\[^ \]+) .*" $text ignore gcc_version
verbose "jar file is libgcj-$gcc_version.jar"
# FIXME: This finds libgcj.spec for the default multilib.
# If thread models differ between multilibs, this has to be moved
# to libjava_arguments
set specdir [libjava_find_spec]
# The -B is so we find libgcj.spec.
set text [eval exec "$GCJ_UNDER_TEST -B$objdir/../ -v 2>@ stdout"]
set text [eval exec "$GCJ_UNDER_TEST -B$specdir -v 2>@ stdout"]
regexp -- "Thread model: (\[^\n\]+)\n" $text ignore model
set libjava_uses_threads [expr {! ($model == "no"
|| $model == "none"
@ -175,6 +180,11 @@ proc libjava_init { args } {
# find the appropriate libraries so we must add -L options for their
# paths. However we can't simply use those libraries; we still need
# libtool for linking.
# Don't return the the lib${name}.la files here, since this causes the
# libraries to be linked twice: once as lib${name}.so and another time
# via gcj's implicit -l${name}. This is both unnecessary and causes the
# Solaris ld to warn: attempted multiple inclusion of file. This warning
# is not ignored by the dejagnu framework and cannot be disabled.
proc libjava_find_lib {dir name} {
global base_dir
set gp [get_multilibs]
@ -198,6 +208,19 @@ proc libjava_find_lib {dir name} {
return ""
}
# Find libgcj.spec. We need to use the file corresponding to the multilib
# under test since they might differ. Append a trailing slash since this
# is used with -B.
proc libjava_find_spec {} {
global objdir
set gp [get_multilibs]
if {[file exists $gp/libjava/libgcj.spec]} then {
return "$gp/libjava/"
}
return "$objdir/../"
}
# Remove a bunch of files.
proc gcj_cleanup {args} {
foreach file $args {
@ -323,6 +346,9 @@ proc libjava_arguments {{mode compile}} {
lappend args "additional_flags=$TOOL_OPTIONS"
}
# Determine libgcj.spec corresponding to multilib under test.
set specdir [libjava_find_spec]
# Search for libtool. We need it to link.
set found_compiler 0
set d [absolute $objdir]
@ -330,15 +356,15 @@ proc libjava_arguments {{mode compile}} {
if {[file exists $d/$x/libtool]} then {
# We have to run silently to avoid DejaGNU lossage.
lappend args \
"compiler=$d/$x/libtool --silent --tag=GCJ --mode=$mode $GCJ_UNDER_TEST -B$objdir/../"
"compiler=$d/$x/libtool --silent --tag=GCJ --mode=$mode $GCJ_UNDER_TEST -B$specdir"
set found_compiler 1
break
}
}
if {! $found_compiler} {
# Append -B$objdir/../ so that we find libgcj.spec before it
# Append -B$specdir so that we find libgcj.spec before it
# is installed.
lappend args "compiler=$GCJ_UNDER_TEST -B$objdir/../"
lappend args "compiler=$GCJ_UNDER_TEST -B$specdir"
}
# Avoid libtool wrapper scripts when possible.