OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [testsuite/] [lib/] [gfortran.exp] - Blame information for rev 859

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 306 jeremybenn
# Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009
2
# Free Software Foundation, Inc.
3
 
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 3 of the License, or
7
# (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with GCC; see the file COPYING3.  If not see
16
# .
17
 
18
# This file is just 'sed -e 's/77/fortran/g' \
19
#                        -e 's/f2c/gfortran' g77.exp > gfortran.exp'
20
#
21
# with some minor modifications to make it work.
22
 
23
#
24
# gfortran support library routines
25
#
26
load_lib prune.exp
27
load_lib gcc-defs.exp
28
load_lib timeout.exp
29
load_lib target-libpath.exp
30
load_lib target-supports.exp
31
 
32
#
33
# GFORTRAN_UNDER_TEST is the compiler under test.
34
#
35
 
36
 
37
set gpp_compile_options ""
38
 
39
 
40
#
41
# gfortran_version -- extract and print the version number of the compiler
42
#
43
 
44
proc gfortran_version { } {
45
    global GFORTRAN_UNDER_TEST
46
 
47
    gfortran_init
48
 
49
    # ignore any arguments after the command
50
    set compiler [lindex $GFORTRAN_UNDER_TEST 0]
51
 
52
    # verify that the compiler exists
53
    if { [is_remote host] || [which $compiler] != 0 } then {
54
        set tmp [remote_exec host "$compiler -v"]
55
        set status [lindex $tmp 0]
56
        set output [lindex $tmp 1]
57
        regexp " version \[^\n\r\]*" $output version
58
        if { $status == 0 && [info exists version] } then {
59
            if [is_remote host] {
60
                clone_output "$compiler $version\n"
61
            } else {
62
                clone_output "[which $compiler] $version\n"
63
            }
64
        } else {
65
            clone_output "Couldn't determine version of [which $compiler]\n"
66
        }
67
    } else {
68
        # compiler does not exist (this should have already been detected)
69
        warning "$compiler does not exist"
70
    }
71
}
72
 
73
#
74
# gfortran_link_flags -- provide new version of gfortran_link_flags
75
# (originally from libgloss.exp) which knows about the gcc tree structure
76
#
77
 
78
proc gfortran_link_flags { paths } {
79
    global srcdir
80
    global ld_library_path
81
    global GFORTRAN_UNDER_TEST
82
    global shlib_ext
83
 
84
    set gccpath ${paths}
85
    set libio_dir ""
86
    set flags ""
87
    set ld_library_path "."
88
    set shlib_ext [get_shlib_extension]
89
    verbose "shared lib extension: $shlib_ext"
90
 
91
    if { $gccpath != "" } {
92
      if [file exists "${gccpath}/libgfortran/.libs/libgfortran.a"] {
93
          # Some targets use libgfortran.a%s in their specs, so they need a -B option
94
          # for uninstalled testing.
95
          append flags "-B${gccpath}/libgfortran/.libs "
96
          append flags "-L${gccpath}/libgfortran/.libs "
97
          append ld_library_path ":${gccpath}/libgfortran/.libs"
98
      }
99
      if [file exists "${gccpath}/libgfortran/.libs/libgfortran.${shlib_ext}"] {
100
          append flags "-L${gccpath}/libgfortran/.libs "
101
          append ld_library_path ":${gccpath}/libgfortran/.libs"
102
      }
103
      if [file exists "${gccpath}/libgfortran/libgforbegin.a"] {
104
          append flags "-L${gccpath}/libgfortran "
105
      }
106
      if [file exists "${gccpath}/libiberty/libiberty.a"] {
107
          append flags "-L${gccpath}/libiberty "
108
      }
109
      append ld_library_path \
110
        [gcc-set-multilib-library-path $GFORTRAN_UNDER_TEST]
111
    }
112
 
113
    set_ld_library_path_env_vars
114
 
115
    return "$flags"
116
}
117
 
118
#
119
# gfortran_init -- called at the start of each subdir of tests
120
#
121
 
122
proc gfortran_init { args } {
123
    global subdir
124
    global gpp_initialized
125
    global base_dir
126
    global tmpdir
127
    global libdir
128
    global gluefile wrap_flags
129
    global objdir srcdir
130
    global ALWAYS_GFORTRANFLAGS
131
    global TOOL_EXECUTABLE TOOL_OPTIONS
132
    global GFORTRAN_UNDER_TEST
133
    global TESTING_IN_BUILD_TREE
134
 
135
    # We set LC_ALL and LANG to C so that we get the same error messages as expected.
136
    setenv LC_ALL C
137
    setenv LANG C
138
 
139
    # Many hosts now default to a non-ASCII C locale, however, so
140
    # they can set a charset encoding here if they need.
141
    if { [ishost "*-*-cygwin*"] } {
142
      setenv LC_ALL C.ASCII
143
      setenv LANG C.ASCII
144
    }
145
 
146
    if ![info exists GFORTRAN_UNDER_TEST] then {
147
        if [info exists TOOL_EXECUTABLE] {
148
            set GFORTRAN_UNDER_TEST $TOOL_EXECUTABLE
149
        } else {
150
            if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } {
151
                set GFORTRAN_UNDER_TEST [transform gfortran]
152
            } else {
153
                set GFORTRAN_UNDER_TEST [findfile $base_dir/../../gfortran "$base_dir/../../gfortran -B$base_dir/../../" [findfile $base_dir/gfortran "$base_dir/gfortran -B$base_dir/" [transform gfortran]]]
154
            }
155
        }
156
    }
157
 
158
    if ![is_remote host] {
159
        if { [which $GFORTRAN_UNDER_TEST] == 0 } then {
160
            perror "GFORTRAN_UNDER_TEST ($GFORTRAN_UNDER_TEST) does not exist"
161
            exit 1
162
        }
163
    }
164
    if ![info exists tmpdir] {
165
        set tmpdir "/tmp"
166
    }
167
 
168
    if [info exists gluefile] {
169
        unset gluefile
170
    }
171
 
172
    gfortran_maybe_build_wrapper "${tmpdir}/gfortran-testglue.o"
173
 
174
    set ALWAYS_GFORTRANFLAGS ""
175
 
176
    if ![is_remote host] {
177
        if [info exists TOOL_OPTIONS] {
178
            lappend ALWAYS_GFORTRANFLAGS "ldflags=[gfortran_link_flags [get_multilibs ${TOOL_OPTIONS}] ]"
179
        } else {
180
            lappend ALWAYS_GFORTRANFLAGS "ldflags=[gfortran_link_flags [get_multilibs] ]"
181
        }
182
    }
183
 
184
    if [info exists TOOL_OPTIONS] {
185
        lappend ALWAYS_GFORTRANFLAGS "additional_flags=$TOOL_OPTIONS"
186
    }
187
 
188
    # On the SPU, most of the fortran test cases exceed local store size.
189
    # Use automatic overlay support to make them fit.
190
    if { [check_effective_target_spu_auto_overlay] } {
191
        lappend ALWAYS_GFORTRANFLAGS "ldflags=-Wl,--auto-overlay"
192
        lappend ALWAYS_GFORTRANFLAGS "ldflags=-Wl,--reserved-space=131072"
193
    }
194
 
195
    verbose -log "ALWAYS_GFORTRANFLAGS set to $ALWAYS_GFORTRANFLAGS"
196
 
197
    verbose "gfortran is initialized" 3
198
}
199
 
200
#
201
# gfortran_target_compile -- compile a source file
202
#
203
 
204
proc gfortran_target_compile { source dest type options } {
205
    global tmpdir
206
    global gluefile wrap_flags
207
    global ALWAYS_GFORTRANFLAGS
208
    global GFORTRAN_UNDER_TEST
209
 
210
    if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
211
        lappend options "libs=${gluefile}"
212
        lappend options "ldflags=${wrap_flags}"
213
    }
214
 
215
    lappend options "compiler=$GFORTRAN_UNDER_TEST"
216
    lappend options "timeout=[timeout_value]"
217
 
218
    set options [concat "$ALWAYS_GFORTRANFLAGS" $options]
219
    set options [dg-additional-files-options $options $source]
220
    return [target_compile $source $dest $type $options]
221
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.