]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/lib/dg-options.exp
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / lib / dg-options.exp
1 # Handlers for additional dg-xxx keywords in tests.
2
3 # Copyright (C) 2004-2022 Free Software Foundation, Inc.
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; see the file COPYING3. If not see
17 # <http://www.gnu.org/licenses/>.
18
19 proc dg-require-c-std { args } {
20 if { ![ check_v3_target_c_std ] } {
21 upvar dg-do-what dg-do-what
22 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
23 return
24 }
25 return
26 }
27
28 proc dg-require-debug-mode { args } {
29 if { ![ check_v3_target_debug_mode ] } {
30 upvar dg-do-what dg-do-what
31 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
32 return
33 }
34 return
35 }
36
37 proc dg-require-profile-mode { args } {
38 if { ![ check_v3_target_profile_mode ] } {
39 upvar dg-do-what dg-do-what
40 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
41 return
42 }
43 return
44 }
45
46 proc dg-require-normal-mode { args } {
47 if { ![ check_v3_target_normal_mode ] } {
48 upvar dg-do-what dg-do-what
49 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
50 return
51 }
52 return
53 }
54
55 proc dg-require-normal-namespace { args } {
56 if { ![ check_v3_target_normal_namespace ] } {
57 upvar dg-do-what dg-do-what
58 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
59 return
60 }
61 return
62 }
63
64 proc dg-require-parallel-mode { args } {
65 if { ![ check_v3_target_parallel_mode ] } {
66 upvar dg-do-what dg-do-what
67 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
68 return
69 }
70 return
71 }
72
73 proc dg-require-fileio { args } {
74 if { ![ check_v3_target_fileio ] } {
75 upvar dg-do-what dg-do-what
76 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
77 return
78 }
79 return
80 }
81
82 proc dg-require-namedlocale { args } {
83 if { ![ check_v3_target_namedlocale [lindex $args 1] ] } {
84 upvar dg-do-what dg-do-what
85 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
86 return
87 }
88 return
89 }
90
91 proc dg-require-sharedlib { args } {
92 if { ![ check_v3_target_sharedlib ] } {
93 upvar dg-do-what dg-do-what
94 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
95 return
96 }
97 return
98 }
99
100 proc dg-require-time { args } {
101 if { ![ check_v3_target_time ] } {
102 upvar dg-do-what dg-do-what
103 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
104 return
105 }
106 return
107 }
108
109 proc dg-require-cstdint { args } {
110 if { ![ check_v3_target_cstdint ] } {
111 upvar dg-do-what dg-do-what
112 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
113 return
114 }
115 return
116 }
117
118 proc dg-require-cmath { args } {
119 if { ![ check_v3_target_cmath ] } {
120 upvar dg-do-what dg-do-what
121 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
122 return
123 }
124 return
125 }
126
127 proc dg-require-thread-fence { args } {
128 if { ![ check_v3_target_thread_fence ] } {
129 upvar dg-do-what dg-do-what
130 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
131 return
132 }
133 return
134 }
135
136 proc dg-require-atomic-builtins { args } {
137 if { ![ check_v3_target_atomic_builtins ] } {
138 upvar dg-do-what dg-do-what
139 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
140 return
141 }
142 return
143 }
144
145 proc dg-require-gthreads { args } {
146 if { ![ check_v3_target_gthreads ] } {
147 upvar dg-do-what dg-do-what
148 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
149 return
150 }
151 return
152 }
153
154 proc dg-require-gthreads-timed { args } {
155 if { ![ check_v3_target_gthreads_timed ] } {
156 upvar dg-do-what dg-do-what
157 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
158 return
159 }
160 return
161 }
162
163 proc dg-require-sleep { args } {
164 if { ![ check_v3_target_sleep ] } {
165 upvar dg-do-what dg-do-what
166 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
167 return
168 }
169 return
170 }
171
172 proc dg-require-sched-yield { args } {
173 if { ![ check_v3_target_sched_yield ] } {
174 upvar dg-do-what dg-do-what
175 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
176 return
177 }
178 return
179 }
180
181 proc dg-require-string-conversions { args } {
182 if { ![ check_v3_target_string_conversions ] } {
183 upvar dg-do-what dg-do-what
184 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
185 return
186 }
187 return
188 }
189
190 proc dg-require-swprintf { args } {
191 if { ![ check_v3_target_swprintf ] } {
192 upvar dg-do-what dg-do-what
193 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
194 return
195 }
196 return
197 }
198
199 proc dg-require-binary-io { args } {
200 if { ![ check_v3_target_binary_io ] } {
201 upvar dg-do-what dg-do-what
202 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
203 return
204 }
205 return
206 }
207
208 proc dg-require-nprocs { args } {
209 if { ![ check_v3_target_nprocs ] } {
210 upvar dg-do-what dg-do-what
211 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
212 return
213 }
214 return
215 }
216
217 proc dg-require-static-libstdcxx { args } {
218 if { ![ check_v3_target_static_libstdcxx ] } {
219 upvar dg-do-what dg-do-what
220 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
221 return
222 }
223 return
224 }
225
226 proc dg-require-little-endian { args } {
227 if { ![ check_v3_target_little_endian ] } {
228 upvar dg-do-what dg-do-what
229 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
230 return
231 }
232 return
233 }
234
235 proc dg-require-filesystem-ts { args } {
236 if { ![ check_v3_target_filesystem_ts ] } {
237 upvar dg-do-what dg-do-what
238 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
239 return
240 }
241 return
242 }
243
244 proc add_options_for_no_pch { flags } {
245 # This forces any generated and possibly included PCH to be invalid.
246 return "-D__GLIBCXX__=99999999"
247 }
248
249 # Add to FLAGS all the target-specific flags needed for networking.
250
251 proc add_options_for_net_ts { flags } {
252 # Before they were integrated into libc in Solaris 11.4, Solaris needs
253 # libsocket and libnsl for networking applications.
254 if { [istarget *-*-solaris2*] } {
255 return "$flags -lsocket -lnsl"
256 }
257 return $flags
258 }
259
260 # Add to FLAGS all the target-specific flags to link to libatomic,
261 # if required for atomics on pointers and 64-bit types.
262
263 proc atomic_link_flags { paths } {
264 global srcdir
265 global ld_library_path
266 global shlib_ext
267
268 set gccpath ${paths}
269 set flags ""
270
271 set shlib_ext [get_shlib_extension]
272
273 if { $gccpath != "" } {
274 if { [file exists "${gccpath}/libatomic/.libs/libatomic.a"]
275 || [file exists "${gccpath}/libatomic/.libs/libatomic.${shlib_ext}"] } {
276 append flags " -B${gccpath}/libatomic/ "
277 append flags " -L${gccpath}/libatomic/.libs"
278 append ld_library_path ":${gccpath}/libatomic/.libs"
279 }
280 } else {
281 global tool_root_dir
282
283 set libatomic [lookfor_file ${tool_root_dir} libatomic]
284 if { $libatomic != "" } {
285 append flags "-L${libatomic} "
286 append ld_library_path ":${libatomic}"
287 }
288 }
289
290 set_ld_library_path_env_vars
291
292 return "$flags"
293 }
294
295 proc add_options_for_libatomic { flags } {
296 if { [istarget hppa*-*-hpux*]
297 || ([istarget powerpc*-*-*] && [check_effective_target_ilp32])
298 || [istarget riscv*-*-*]
299 || ([istarget sparc*-*-linux-gnu] && [check_effective_target_ilp32])
300 } {
301 global TOOL_OPTIONS
302
303 set link_flags ""
304 if ![is_remote host] {
305 if [info exists TOOL_OPTIONS] {
306 set link_flags "[atomic_link_flags [get_multilibs ${TOOL_OPTIONS}]]"
307 } else {
308 set link_flags "[atomic_link_flags [get_multilibs]]"
309 }
310 }
311
312 append link_flags " -latomic "
313
314 return "$flags $link_flags"
315 }
316 return $flags
317 }
318
319 # Add options to enable use of deprecated features.
320 proc add_options_for_using-deprecated { flags } {
321 return "$flags -U_GLIBCXX_USE_DEPRECATED -D_GLIBCXX_USE_DEPRECATED=1"
322 }
323
324 # Like dg-options, but adds to the default options rather than replacing them.
325
326 proc dg-additional-options { args } {
327 upvar dg-extra-tool-flags extra-tool-flags
328
329 if { [llength $args] > 3 } {
330 error "[lindex $args 0]: too many arguments"
331 return
332 }
333
334 if { [llength $args] >= 3 } {
335 switch [dg-process-target [lindex $args 2]] {
336 "S" { eval lappend extra-tool-flags [lindex $args 1] }
337 "N" { }
338 "F" { error "[lindex $args 0]: `xfail' not allowed here" }
339 "P" { error "[lindex $args 0]: `xfail' not allowed here" }
340 }
341 } else {
342 eval lappend extra-tool-flags [lindex $args 1]
343 }
344 }