]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/crossconfig.m4
Detect overflow by atomic functions [PR102453].
[thirdparty/gcc.git] / libstdc++-v3 / crossconfig.m4
1 dnl
2 dnl This file contains details for non-native builds.
3 dnl
4
5 AC_DEFUN([GLIBCXX_CROSSCONFIG],[
6 # Base decisions on target environment.
7 case "${host}" in
8 arm*-*-symbianelf*)
9 # This is a freestanding configuration; there is nothing to do here.
10 ;;
11
12 avr*-*-*)
13 AC_DEFINE(HAVE_ACOSF)
14 AC_DEFINE(HAVE_ASINF)
15 AC_DEFINE(HAVE_ATAN2F)
16 AC_DEFINE(HAVE_ATANF)
17 AC_DEFINE(HAVE_CEILF)
18 AC_DEFINE(HAVE_COSF)
19 AC_DEFINE(HAVE_COSHF)
20 AC_DEFINE(HAVE_EXPF)
21 AC_DEFINE(HAVE_FABSF)
22 AC_DEFINE(HAVE_FLOORF)
23 AC_DEFINE(HAVE_FMODF)
24 AC_DEFINE(HAVE_FREXPF)
25 AC_DEFINE(HAVE_SQRTF)
26 AC_DEFINE(HAVE_HYPOTF)
27 AC_DEFINE(HAVE_LDEXPF)
28 AC_DEFINE(HAVE_LOG10F)
29 AC_DEFINE(HAVE_LOGF)
30 AC_DEFINE(HAVE_MODFF)
31 AC_DEFINE(HAVE_POWF)
32 AC_DEFINE(HAVE_SINF)
33 AC_DEFINE(HAVE_SINHF)
34 AC_DEFINE(HAVE_TANF)
35 AC_DEFINE(HAVE_TANHF)
36 ;;
37
38 mips*-sde-elf*)
39 # These definitions are for the SDE C library rather than newlib.
40 SECTION_FLAGS='-ffunction-sections -fdata-sections'
41 AC_SUBST(SECTION_FLAGS)
42 GLIBCXX_CHECK_COMPILER_FEATURES
43 GLIBCXX_CHECK_LINKER_FEATURES
44 GLIBCXX_CHECK_MATH_SUPPORT
45 GLIBCXX_CHECK_STDLIB_SUPPORT
46
47 AC_DEFINE(HAVE_FINITE)
48 AC_DEFINE(HAVE_HYPOT)
49 AC_DEFINE(HAVE_ISNAN)
50 AC_DEFINE(HAVE_ISINF)
51
52 AC_DEFINE(HAVE_LDEXPF)
53 AC_DEFINE(HAVE_MODF)
54 AC_DEFINE(HAVE_SQRTF)
55 ;;
56
57 *-aix*)
58 GLIBCXX_CHECK_LINKER_FEATURES
59 GLIBCXX_CHECK_MATH_SUPPORT
60 GLIBCXX_CHECK_STDLIB_SUPPORT
61 AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
62 AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
63 # We don't yet support AIX's TLS ABI.
64 #GCC_CHECK_TLS
65 AM_ICONV
66
67 AC_DEFINE(HAVE_USELOCALE)
68 ;;
69
70 *-darwin*)
71 # Darwin versions vary, but the linker should work in a cross environment,
72 # so we just check for all the features here.
73 # Check for available headers.
74
75 # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
76 GLIBCXX_CHECK_MATH_SUPPORT
77 GLIBCXX_CHECK_STDLIB_SUPPORT
78
79 AC_CHECK_FUNCS(uselocale)
80 ;;
81
82 *djgpp)
83 # GLIBCXX_CHECK_MATH_SUPPORT
84 AC_DEFINE(HAVE_ISINF)
85 AC_DEFINE(HAVE_ISNAN)
86 AC_DEFINE(HAVE_FINITE)
87 AC_DEFINE(HAVE_SINCOS)
88 AC_DEFINE(HAVE_HYPOT)
89 ;;
90
91 *-freebsd*)
92 SECTION_FLAGS='-ffunction-sections -fdata-sections'
93 AC_SUBST(SECTION_FLAGS)
94 GLIBCXX_CHECK_LINKER_FEATURES
95 AC_DEFINE(HAVE_SETENV)
96 AC_DEFINE(HAVE_FINITEF)
97 AC_DEFINE(HAVE_FINITE)
98 AC_DEFINE(HAVE_FREXPF)
99 AC_DEFINE(HAVE_HYPOT)
100 AC_DEFINE(HAVE_HYPOTF)
101 AC_DEFINE(HAVE_ISINF)
102 AC_DEFINE(HAVE_ISNAN)
103 AC_DEFINE(HAVE_ISNANF)
104
105 AC_DEFINE(HAVE_ACOSF)
106 AC_DEFINE(HAVE_ASINF)
107 AC_DEFINE(HAVE_ATAN2F)
108 AC_DEFINE(HAVE_ATANF)
109 AC_DEFINE(HAVE_CEILF)
110 AC_DEFINE(HAVE_COSF)
111 AC_DEFINE(HAVE_COSHF)
112 AC_DEFINE(HAVE_EXPF)
113 AC_DEFINE(HAVE_FABSF)
114 AC_DEFINE(HAVE_FLOORF)
115 AC_DEFINE(HAVE_FMODF)
116 AC_DEFINE(HAVE_FREXPF)
117 AC_DEFINE(HAVE_LDEXPF)
118 AC_DEFINE(HAVE_LOG10F)
119 AC_DEFINE(HAVE_LOGF)
120 AC_DEFINE(HAVE_MODFF)
121 AC_DEFINE(HAVE_POWF)
122 AC_DEFINE(HAVE_SINF)
123 AC_DEFINE(HAVE_SINHF)
124 AC_DEFINE(HAVE_SQRTF)
125 AC_DEFINE(HAVE_TANF)
126 AC_DEFINE(HAVE_TANHF)
127 if test x"long_double_math_on_this_cpu" = x"yes"; then
128 AC_DEFINE(HAVE_FINITEL)
129 AC_DEFINE(HAVE_ISINFL)
130 AC_DEFINE(HAVE_ISNANL)
131 fi
132 AC_CHECK_FUNCS(__cxa_thread_atexit)
133 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
134 AC_CHECK_FUNCS(timespec_get)
135 AC_CHECK_FUNCS(sockatmark)
136 AC_CHECK_FUNCS(uselocale)
137 ;;
138
139 *-fuchsia*)
140 SECTION_FLAGS='-ffunction-sections -fdata-sections'
141 AC_SUBST(SECTION_FLAGS)
142 ;;
143
144 *-hpux*)
145 SECTION_FLAGS='-ffunction-sections -fdata-sections'
146 AC_SUBST(SECTION_FLAGS)
147 GLIBCXX_CHECK_LINKER_FEATURES
148
149 # GLIBCXX_CHECK_MATH_SUPPORT
150 AC_DEFINE(HAVE_ISNAN)
151 AC_DEFINE(HAVE_HYPOT)
152 AC_DEFINE(HAVE_ACOSF)
153 AC_DEFINE(HAVE_ASINF)
154 AC_DEFINE(HAVE_ATANF)
155 AC_DEFINE(HAVE_COSF)
156 AC_DEFINE(HAVE_COSHF)
157 AC_DEFINE(HAVE_SINF)
158 AC_DEFINE(HAVE_SINHF)
159 AC_DEFINE(HAVE_TANF)
160 AC_DEFINE(HAVE_TANHF)
161 AC_DEFINE(HAVE_EXPF)
162 AC_DEFINE(HAVE_ATAN2F)
163 AC_DEFINE(HAVE_FABSF)
164 AC_DEFINE(HAVE_FMODF)
165 AC_DEFINE(HAVE_FREXPF)
166 AC_DEFINE(HAVE_LOGF)
167 AC_DEFINE(HAVE_LOG10F)
168 AC_DEFINE(HAVE_MODF)
169 AC_DEFINE(HAVE_POWF)
170 AC_DEFINE(HAVE_SQRTF)
171
172 # GLIBCXX_CHECK_STDLIB_SUPPORT
173 AC_DEFINE(HAVE_STRTOLD)
174
175 GCC_CHECK_TLS
176 case "$target" in
177 *-hpux10*)
178 AC_DEFINE(HAVE_ISINF)
179 AC_DEFINE(HAVE_ISINFF)
180 AC_DEFINE(HAVE_ISNANF)
181 AC_DEFINE(HAVE_FINITE)
182 AC_DEFINE(HAVE_FINITEF)
183 ;;
184 esac
185 ;;
186 *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-cygwin* | *-solaris*)
187 GLIBCXX_CHECK_COMPILER_FEATURES
188 GLIBCXX_CHECK_LINKER_FEATURES
189 GLIBCXX_CHECK_MATH_SUPPORT
190 GLIBCXX_CHECK_STDLIB_SUPPORT
191 AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
192 AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
193 GCC_CHECK_TLS
194 AC_CHECK_FUNCS(__cxa_thread_atexit_impl)
195 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
196 AC_CHECK_FUNCS(timespec_get)
197 AC_CHECK_FUNCS(sockatmark)
198 AC_CHECK_FUNCS(uselocale)
199 AM_ICONV
200 ;;
201 *-mingw32*)
202 GLIBCXX_CHECK_LINKER_FEATURES
203 GLIBCXX_CHECK_MATH_SUPPORT
204 GLIBCXX_CHECK_STDLIB_SUPPORT
205 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
206 AC_CHECK_FUNCS(_wfopen)
207 GCC_CHECK_TLS
208 ;;
209 *-netbsd* | *-openbsd*)
210 SECTION_FLAGS='-ffunction-sections -fdata-sections'
211 AC_SUBST(SECTION_FLAGS)
212 GLIBCXX_CHECK_LINKER_FEATURES
213 AC_DEFINE(HAVE_FINITEF)
214 AC_DEFINE(HAVE_FINITE)
215 AC_DEFINE(HAVE_FREXPF)
216 AC_DEFINE(HAVE_HYPOTF)
217 AC_DEFINE(HAVE_ISINF)
218 AC_DEFINE(HAVE_ISINFF)
219 AC_DEFINE(HAVE_ISNAN)
220 AC_DEFINE(HAVE_ISNANF)
221 if test x"long_double_math_on_this_cpu" = x"yes"; then
222 AC_DEFINE(HAVE_FINITEL)
223 AC_DEFINE(HAVE_ISINFL)
224 AC_DEFINE(HAVE_ISNANL)
225 fi
226 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
227 AC_CHECK_FUNCS(timespec_get)
228 AC_CHECK_FUNCS(sockatmark)
229 ;;
230 *-qnx6.1* | *-qnx6.2*)
231 SECTION_FLAGS='-ffunction-sections -fdata-sections'
232 AC_SUBST(SECTION_FLAGS)
233 GLIBCXX_CHECK_LINKER_FEATURES
234 AC_DEFINE(HAVE_COSF)
235 AC_DEFINE(HAVE_COSL)
236 AC_DEFINE(HAVE_COSHF)
237 AC_DEFINE(HAVE_COSHL)
238 AC_DEFINE(HAVE_LOGF)
239 AC_DEFINE(HAVE_LOGL)
240 AC_DEFINE(HAVE_LOG10F)
241 AC_DEFINE(HAVE_LOG10L)
242 AC_DEFINE(HAVE_SINF)
243 AC_DEFINE(HAVE_SINL)
244 AC_DEFINE(HAVE_SINHF)
245 AC_DEFINE(HAVE_SINHL)
246 ;;
247 *-rtems*)
248 GLIBCXX_CHECK_COMPILER_FEATURES
249 GLIBCXX_CHECK_LINKER_FEATURES
250 GLIBCXX_CHECK_MATH_SUPPORT
251 GLIBCXX_CHECK_STDLIB_SUPPORT
252 ;;
253 *-tpf)
254 SECTION_FLAGS='-ffunction-sections -fdata-sections'
255 SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS'
256 AC_SUBST(SECTION_FLAGS)
257 AC_DEFINE(HAVE_FINITE)
258 AC_DEFINE(HAVE_FINITEF)
259 AC_DEFINE(HAVE_FREXPF)
260 AC_DEFINE(HAVE_HYPOTF)
261 AC_DEFINE(HAVE_ISINF)
262 AC_DEFINE(HAVE_ISINFF)
263 AC_DEFINE(HAVE_ISNAN)
264 AC_DEFINE(HAVE_ISNANF)
265 AC_DEFINE(HAVE_SINCOS)
266 AC_DEFINE(HAVE_SINCOSF)
267 if test x"long_double_math_on_this_cpu" = x"yes"; then
268 AC_DEFINE(HAVE_FINITEL)
269 AC_DEFINE(HAVE_HYPOTL)
270 AC_DEFINE(HAVE_ISINFL)
271 AC_DEFINE(HAVE_ISNANL)
272 fi
273 ;;
274 *-*vms*)
275 # Check for available headers.
276 # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld
277 GLIBCXX_CHECK_MATH_SUPPORT
278 GLIBCXX_CHECK_STDLIB_SUPPORT
279 ;;
280 *-vxworks*)
281 AC_DEFINE(HAVE_ACOSF)
282 AC_DEFINE(HAVE_ASINF)
283 AC_DEFINE(HAVE_ATAN2F)
284 AC_DEFINE(HAVE_ATANF)
285 AC_DEFINE(HAVE_CEILF)
286 AC_DEFINE(HAVE_COSF)
287 AC_DEFINE(HAVE_COSHF)
288 AC_DEFINE(HAVE_EXPF)
289 AC_DEFINE(HAVE_FABSF)
290 AC_DEFINE(HAVE_FLOORF)
291 AC_DEFINE(HAVE_FMODF)
292 AC_DEFINE(HAVE_HYPOT)
293 AC_DEFINE(HAVE_LOG10F)
294 AC_DEFINE(HAVE_LOGF)
295 AC_DEFINE(HAVE_POWF)
296 AC_DEFINE(HAVE_SINF)
297 AC_DEFINE(HAVE_SINHF)
298 AC_DEFINE(HAVE_SQRTF)
299 AC_DEFINE(HAVE_TANF)
300 AC_DEFINE(HAVE_TANHF)
301
302 dnl # Different versions and execution modes implement different
303 dnl # subsets of these functions. Instead of hard-coding, test for C
304 dnl # declarations in headers. The C primitives could be defined as
305 dnl # macros, in which case the tests might fail, and we might have to
306 dnl # switch to more elaborate tests.
307 GLIBCXX_CHECK_MATH_DECLS([
308 acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl
309 frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl hypotl
310 ldexpf modff hypotf frexpf])
311 dnl # sincosl is the only one missing here, compared with the *l
312 dnl # functions in the list guarded by
313 dnl # long_double_math_on_this_cpu in configure.ac, right after
314 dnl # the expansion of the present macro.
315 ;;
316 *)
317 AC_MSG_ERROR([No support for this host/target combination.])
318 ;;
319 esac
320 ])
321
322
323 dnl
324 dnl Check to see if the (math function) argument passed is
325 dnl declared when using the c compiler
326 dnl
327 dnl Define HAVE_CARGF etc if "cargf" is declared
328 dnl
329 dnl argument 1 is name of function to check
330 dnl
331 dnl ASSUMES argument is a math function
332 dnl
333 dnl GLIBCXX_CHECK_MATH_DECL
334 AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
335 AC_CACHE_CHECK([for $1 declaration],
336 [glibcxx_cv_func_$1_use], [
337 AC_LANG_SAVE
338 AC_LANG_C
339 AC_TRY_COMPILE([
340 #include <math.h>
341 #ifdef HAVE_IEEEFP_H
342 # include <ieeefp.h>
343 #endif
344 #undef $1
345 ], [
346 void (*f)(void) = (void (*)(void))$1;
347 ], [glibcxx_cv_func_$1_use=yes
348 ], [glibcxx_cv_func_$1_use=no])])
349 if test "x$glibcxx_cv_func_$1_use" = xyes; then
350 AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]))
351 fi
352 ])
353
354 dnl
355 dnl Check to see whether multiple math functions are
356 dnl declared when using the c compiler
357 dnl
358 dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl"
359 dnl are declared
360 dnl
361 dnl argument 1 is a word list naming function to check
362 dnl
363 dnl ASSUMES arguments are math functions
364 dnl
365 dnl GLIBCXX_CHECK_MATH_DECLS
366 AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [
367 m4_foreach_w([glibcxx_func], [$1], [
368 GLIBCXX_CHECK_MATH_DECL(glibcxx_func)
369 ])
370 ])