-# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
global gluefile wrap_flags
global gnat_initialized
global GNAT_UNDER_TEST
+ global GNAT_UNDER_TEST_ORIG
global TOOL_EXECUTABLE
global gnat_libgcc_s_path
+ global gnat_target_current
+
+ set gnat_target_current ""
if { $gnat_initialized == 1 } { return }
if ![info exists GNAT_UNDER_TEST] then {
if [info exists TOOL_EXECUTABLE] {
- set GNAT_UNDER_TEST $TOOL_EXECUTABLE
+ set GNAT_UNDER_TEST "$TOOL_EXECUTABLE"
} else {
- set GNAT_UNDER_TEST [find_gnatmake]
+ set GNAT_UNDER_TEST "[local_find_gnatmake]"
}
+ set GNAT_UNDER_TEST_ORIG "$GNAT_UNDER_TEST"
}
if ![info exists tmpdir] then {
global gluefile wrap_flags
global srcdir
global GNAT_UNDER_TEST
+ global GNAT_UNDER_TEST_ORIG
global TOOL_OPTIONS
global ld_library_path
global gnat_libgcc_s_path
+ global gnat_target_current
+
+ # If we detect a change of target we need to recompute
+ # the appropriate RTS by calling get_multilibs.
+ if { $gnat_target_current!="[current_target_name]" } {
+ set gnat_target_current "[current_target_name]"
+ if [info exists TOOL_OPTIONS] {
+ set gnat_rts_opt "--RTS=[get_multilibs ${TOOL_OPTIONS}]/libada"
+ } else {
+ set gnat_rts_opt "--RTS=[get_multilibs]/libada"
+ }
+ set GNAT_UNDER_TEST "$GNAT_UNDER_TEST_ORIG $gnat_rts_opt"
+ }
- setenv ADA_INCLUDE_PATH "${rootme}/ada/rts"
set ld_library_path ".:${gnat_libgcc_s_path}"
lappend options "compiler=$GNAT_UNDER_TEST -q -f"
- lappend options "incdir=${rootme}/ada/rts"
- lappend options "timeout=[timeout_value]
+ lappend options "timeout=[timeout_value]"
if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } {
lappend options "libs=${gluefile}"
# set sourcename [string range $source 0 [expr [string length $source] - 5]]
# set dest ""
+
return [target_compile $source $dest $type $options]
}
return $text
}
-# If this is an older version of DejaGnu (without find_gnatmake), provide one.
-# This can be deleted after next DejaGnu release.
+# find_gnatmake for some version of DejaGnu will hardcode a -I...rts/ada flag
+# which prevent multilib from working, so define a new one.
-if { [info procs find_gnatmake] == "" } {
- proc find_gnatmake {} {
- global tool_root_dir
+proc local_find_gnatmake {} {
+ global tool_root_dir
- if ![is_remote host] {
- set file [lookfor_file $tool_root_dir gnatmake]
- if { $file == "" } {
- set file [lookfor_file $tool_root_dir gcc/gnatmake]
- }
- if { $file != "" } {
- set root [file dirname $file]
- set CC "$file -I$root/ada/rts --GCC=$root/xgcc --GNATBIND=$root/gnatbind --GNATLINK=$root/gnatlink -cargs -B$root -largs --GCC=$root/xgcc -B$root -margs";
- } else {
- set CC [transform gnatmake]
- }
- } else {
- set CC [transform gnatmake]
- }
- return $CC
+ if ![is_remote host] {
+ set file [lookfor_file $tool_root_dir gnatmake]
+ if { $file == "" } {
+ set file [lookfor_file $tool_root_dir gcc/gnatmake]
+ }
+ if { $file != "" } {
+ set root [file dirname $file]
+ set CC "$file --GCC=$root/xgcc --GNATBIND=$root/gnatbind --GNATLINK=$root/gnatlink -cargs -B$root -largs --LINK=$root/xgcc -B$root -margs";
+ } else {
+ set CC [transform gnatmake]
+ }
+ } else {
+ set CC [transform gnatmake]
}
+ return $CC
}
# If this is an older version of DejaGnu (without runtest_file_p),