Skip to content
Snippets Groups Projects
Commit 6d63ea75 authored by Laurent GUERBY's avatar Laurent GUERBY Committed by Laurent Guerby
Browse files

gnat.exp: Handle multilib.

testsuite/
2009-04-06  Laurent GUERBY  <laurent@guerby.net>

        * lib/gnat.exp: Handle multilib.
        
libada/
2009-04-06  Laurent GUERBY  <laurent@guerby.net>

        * Makefile.in (ADA_RTS_DIR): Define.
        * Makefile.in (gnatlib-*): Link adainclude and adalib to it.

From-SVN: r145622
parent ea0a374b
No related branches found
No related tags found
No related merge requests found
2009-04-06 Laurent GUERBY <laurent@guerby.net>
* lib/gnat.exp: Handle multilib.
2009-04-06 Paul Thomas <pault@gcc.gnu.org> 2009-04-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38863 PR fortran/38863
......
...@@ -83,17 +83,22 @@ proc gnat_init { args } { ...@@ -83,17 +83,22 @@ proc gnat_init { args } {
global gluefile wrap_flags global gluefile wrap_flags
global gnat_initialized global gnat_initialized
global GNAT_UNDER_TEST global GNAT_UNDER_TEST
global GNAT_UNDER_TEST_ORIG
global TOOL_EXECUTABLE global TOOL_EXECUTABLE
global gnat_libgcc_s_path global gnat_libgcc_s_path
global gnat_target_current
set gnat_target_current ""
if { $gnat_initialized == 1 } { return } if { $gnat_initialized == 1 } { return }
if ![info exists GNAT_UNDER_TEST] then { if ![info exists GNAT_UNDER_TEST] then {
if [info exists TOOL_EXECUTABLE] { if [info exists TOOL_EXECUTABLE] {
set GNAT_UNDER_TEST $TOOL_EXECUTABLE set GNAT_UNDER_TEST "$TOOL_EXECUTABLE"
} else { } 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 { if ![info exists tmpdir] then {
...@@ -124,14 +129,26 @@ proc gnat_target_compile { source dest type options } { ...@@ -124,14 +129,26 @@ proc gnat_target_compile { source dest type options } {
global gluefile wrap_flags global gluefile wrap_flags
global srcdir global srcdir
global GNAT_UNDER_TEST global GNAT_UNDER_TEST
global GNAT_UNDER_TEST_ORIG
global TOOL_OPTIONS global TOOL_OPTIONS
global ld_library_path global ld_library_path
global gnat_libgcc_s_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}" set ld_library_path ".:${gnat_libgcc_s_path}"
lappend options "compiler=$GNAT_UNDER_TEST -q -f" 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] } { if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } {
...@@ -150,6 +167,7 @@ proc gnat_target_compile { source dest type options } { ...@@ -150,6 +167,7 @@ proc gnat_target_compile { source dest type options } {
# set sourcename [string range $source 0 [expr [string length $source] - 5]] # set sourcename [string range $source 0 [expr [string length $source] - 5]]
# set dest "" # set dest ""
return [target_compile $source $dest $type $options] return [target_compile $source $dest $type $options]
} }
...@@ -232,29 +250,27 @@ proc prune_gnat_output { text } { ...@@ -232,29 +250,27 @@ proc prune_gnat_output { text } {
return $text return $text
} }
# If this is an older version of DejaGnu (without find_gnatmake), provide one. # find_gnatmake for some version of DejaGnu will hardcode a -I...rts/ada flag
# This can be deleted after next DejaGnu release. # which prevent multilib from working, so define a new one.
if { [info procs find_gnatmake] == "" } {
proc find_gnatmake {} {
global tool_root_dir
if ![is_remote host] { proc local_find_gnatmake {} {
set file [lookfor_file $tool_root_dir gnatmake] global tool_root_dir
if { $file == "" } {
set file [lookfor_file $tool_root_dir gcc/gnatmake] if ![is_remote host] {
} set file [lookfor_file $tool_root_dir gnatmake]
if { $file != "" } { if { $file == "" } {
set root [file dirname $file] set file [lookfor_file $tool_root_dir gcc/gnatmake]
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 { if { $file != "" } {
set CC [transform gnatmake] set root [file dirname $file]
} set CC "$file --GCC=$root/xgcc --GNATBIND=$root/gnatbind --GNATLINK=$root/gnatlink -cargs -B$root -largs -B$root -margs -B$root";
} else { } else {
set CC [transform gnatmake] set CC [transform gnatmake]
} }
return $CC } else {
set CC [transform gnatmake]
} }
return $CC
} }
# If this is an older version of DejaGnu (without runtest_file_p), # If this is an older version of DejaGnu (without runtest_file_p),
......
2009-04-06 Laurent GUERBY <laurent@guerby.net>
* Makefile.in (ADA_RTS_DIR): Define.
* Makefile.in (gnatlib-*): Link adainclude and adalib to it.
2008-09-21 Laurent Guerby <laurent@guerby.net> 2008-09-21 Laurent Guerby <laurent@guerby.net>
Paolo Bonzini <bonzini@gnu.org> Paolo Bonzini <bonzini@gnu.org>
......
...@@ -65,6 +65,7 @@ include $(GCC_DIR)/libgcc.mvars ...@@ -65,6 +65,7 @@ include $(GCC_DIR)/libgcc.mvars
target_noncanonical:=@target_noncanonical@ target_noncanonical:=@target_noncanonical@
version := $(shell cat $(srcdir)/../gcc/BASE-VER) version := $(shell cat $(srcdir)/../gcc/BASE-VER)
libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
# exeext should not be used because it's the *host* exeext. We're building # exeext should not be used because it's the *host* exeext. We're building
# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
...@@ -97,11 +98,15 @@ gnatlib-plain: oscons $(GCC_DIR)/ada/Makefile ...@@ -97,11 +98,15 @@ gnatlib-plain: oscons $(GCC_DIR)/ada/Makefile
test -f stamp-libada || \ test -f stamp-libada || \
$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \
&& touch stamp-libada && touch stamp-libada
$(LN_S) $(ADA_RTS_DIR) adainclude
$(LN_S) $(ADA_RTS_DIR) adalib
gnatlib-sjlj gnatlib-zcx gnatlib-shared: oscons $(GCC_DIR)/ada/Makefile gnatlib-sjlj gnatlib-zcx gnatlib-shared: oscons $(GCC_DIR)/ada/Makefile
test -f stamp-libada || \ test -f stamp-libada || \
$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \
&& touch stamp-libada && touch stamp-libada
$(LN_S) $(ADA_RTS_DIR) adainclude
$(LN_S) $(ADA_RTS_DIR) adalib
oscons: oscons:
$(MAKE) -C $(GCC_DIR) $(LIBADA_FLAGS_TO_PASS) ada/s-oscons.ads $(MAKE) -C $(GCC_DIR) $(LIBADA_FLAGS_TO_PASS) ada/s-oscons.ads
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment