]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/crossconfig.m4
Eenable -Winvalid-memory-order for C++ [PR99612].
[thirdparty/gcc.git] / libstdc++-v3 / crossconfig.m4
CommitLineData
ff66d28f 1dnl
552afe9e 2dnl This file contains details for non-native builds.
ff66d28f
PE
3dnl
4
c41f82b2 5AC_DEFUN([GLIBCXX_CROSSCONFIG],[
ff66d28f
PE
6# Base decisions on target environment.
7case "${host}" in
4c24b21a
MM
8 arm*-*-symbianelf*)
9 # This is a freestanding configuration; there is nothing to do here.
10 ;;
11
6649ad7e
FMA
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
d9dced13
RS
38 mips*-sde-elf*)
39 # These definitions are for the SDE C library rather than newlib.
d9dced13
RS
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
d9dced13 45 GLIBCXX_CHECK_STDLIB_SUPPORT
d9dced13 46
d9dced13
RS
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
70ed7339
RS
57 *-aix*)
58 GLIBCXX_CHECK_LINKER_FEATURES
59 GLIBCXX_CHECK_MATH_SUPPORT
60 GLIBCXX_CHECK_STDLIB_SUPPORT
5ae2c32a 61 AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
70ed7339
RS
62 AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
63 # We don't yet support AIX's TLS ABI.
64 #GCC_CHECK_TLS
65 AM_ICONV
932fbc86
JW
66
67 AC_DEFINE(HAVE_USELOCALE)
70ed7339
RS
68 ;;
69
a6f3e253
GK
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.
a6f3e253 74
a6f3e253
GK
75 # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
76 GLIBCXX_CHECK_MATH_SUPPORT
a6f3e253 77 GLIBCXX_CHECK_STDLIB_SUPPORT
932fbc86
JW
78
79 AC_CHECK_FUNCS(uselocale)
a6f3e253
GK
80 ;;
81
185fca74 82 *djgpp)
9f1fd474 83 # GLIBCXX_CHECK_MATH_SUPPORT
9bb68d2a
DD
84 AC_DEFINE(HAVE_ISINF)
85 AC_DEFINE(HAVE_ISNAN)
86 AC_DEFINE(HAVE_FINITE)
9bb68d2a
DD
87 AC_DEFINE(HAVE_SINCOS)
88 AC_DEFINE(HAVE_HYPOT)
185fca74
AH
89 ;;
90
ff66d28f 91 *-freebsd*)
ff66d28f
PE
92 SECTION_FLAGS='-ffunction-sections -fdata-sections'
93 AC_SUBST(SECTION_FLAGS)
94 GLIBCXX_CHECK_LINKER_FEATURES
ff66d28f 95 AC_DEFINE(HAVE_SETENV)
ff66d28f
PE
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
ff66d28f
PE
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)
ff66d28f
PE
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
ea4ad78e 132 AC_CHECK_FUNCS(__cxa_thread_atexit)
97ca95ac 133 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
a61ae535 134 AC_CHECK_FUNCS(timespec_get)
187fdaea 135 AC_CHECK_FUNCS(sockatmark)
932fbc86 136 AC_CHECK_FUNCS(uselocale)
ff66d28f 137 ;;
93f90f7b
JC
138
139 *-fuchsia*)
140 SECTION_FLAGS='-ffunction-sections -fdata-sections'
141 AC_SUBST(SECTION_FLAGS)
142 ;;
143
ff66d28f 144 *-hpux*)
ff66d28f
PE
145 SECTION_FLAGS='-ffunction-sections -fdata-sections'
146 AC_SUBST(SECTION_FLAGS)
147 GLIBCXX_CHECK_LINKER_FEATURES
55c8e6a3
BK
148
149 # GLIBCXX_CHECK_MATH_SUPPORT
150 AC_DEFINE(HAVE_ISNAN)
55c8e6a3
BK
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)
4564ac62 163 AC_DEFINE(HAVE_FABSF)
55c8e6a3 164 AC_DEFINE(HAVE_FMODF)
ff66d28f 165 AC_DEFINE(HAVE_FREXPF)
55c8e6a3
BK
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
55c8e6a3
BK
172 # GLIBCXX_CHECK_STDLIB_SUPPORT
173 AC_DEFINE(HAVE_STRTOLD)
174
175 GCC_CHECK_TLS
ff66d28f
PE
176 case "$target" in
177 *-hpux10*)
ff66d28f
PE
178 AC_DEFINE(HAVE_ISINF)
179 AC_DEFINE(HAVE_ISINFF)
ff66d28f 180 AC_DEFINE(HAVE_ISNANF)
55c8e6a3
BK
181 AC_DEFINE(HAVE_FINITE)
182 AC_DEFINE(HAVE_FINITEF)
ff66d28f
PE
183 ;;
184 esac
185 ;;
e34fd4dc 186 *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-cygwin* | *-solaris*)
464aea98 187 GLIBCXX_CHECK_COMPILER_FEATURES
ff66d28f 188 GLIBCXX_CHECK_LINKER_FEATURES
464aea98 189 GLIBCXX_CHECK_MATH_SUPPORT
464aea98 190 GLIBCXX_CHECK_STDLIB_SUPPORT
5ae2c32a 191 AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
bffc9d79 192 AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
55c8e6a3 193 GCC_CHECK_TLS
3c97fe77 194 AC_CHECK_FUNCS(__cxa_thread_atexit_impl)
77e6870d 195 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
a61ae535 196 AC_CHECK_FUNCS(timespec_get)
187fdaea 197 AC_CHECK_FUNCS(sockatmark)
932fbc86 198 AC_CHECK_FUNCS(uselocale)
bffc9d79 199 AM_ICONV
ff66d28f
PE
200 ;;
201 *-mingw32*)
ff66d28f 202 GLIBCXX_CHECK_LINKER_FEATURES
53f506ed
BK
203 GLIBCXX_CHECK_MATH_SUPPORT
204 GLIBCXX_CHECK_STDLIB_SUPPORT
97ca95ac 205 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
b0292359 206 AC_CHECK_FUNCS(_wfopen)
cc1e2887 207 GCC_CHECK_TLS
ff66d28f 208 ;;
4f9eae9f 209 *-netbsd* | *-openbsd*)
ff66d28f
PE
210 SECTION_FLAGS='-ffunction-sections -fdata-sections'
211 AC_SUBST(SECTION_FLAGS)
212 GLIBCXX_CHECK_LINKER_FEATURES
ff66d28f
PE
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
95c921d1 226 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
a61ae535 227 AC_CHECK_FUNCS(timespec_get)
187fdaea 228 AC_CHECK_FUNCS(sockatmark)
ff66d28f
PE
229 ;;
230 *-qnx6.1* | *-qnx6.2*)
ff66d28f
PE
231 SECTION_FLAGS='-ffunction-sections -fdata-sections'
232 AC_SUBST(SECTION_FLAGS)
233 GLIBCXX_CHECK_LINKER_FEATURES
ff66d28f
PE
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 ;;
07ecaaf9
RC
247 *-rtems*)
248 GLIBCXX_CHECK_COMPILER_FEATURES
249 GLIBCXX_CHECK_LINKER_FEATURES
250 GLIBCXX_CHECK_MATH_SUPPORT
251 GLIBCXX_CHECK_STDLIB_SUPPORT
252 ;;
6e198ee0 253 *-tpf)
6e198ee0 254 SECTION_FLAGS='-ffunction-sections -fdata-sections'
40f93bb5 255 SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS'
6e198ee0 256 AC_SUBST(SECTION_FLAGS)
6e198ee0
UW
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 ;;
db435dce
TG
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 ;;
d667beea 280 *-vxworks*)
65fc9769
PE
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)
85129ff1
AO
301
302dnl # Different versions and execution modes implement different
303dnl # subsets of these functions. Instead of hard-coding, test for C
304dnl # declarations in headers. The C primitives could be defined as
305dnl # macros, in which case the tests might fail, and we might have to
306dnl # switch to more elaborate tests.
307 GLIBCXX_CHECK_MATH_DECLS([
308 acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl
0edfc1fd
DR
309 frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl hypotl
310 ldexpf modff hypotf frexpf])
85129ff1
AO
311dnl # sincosl is the only one missing here, compared with the *l
312dnl # functions in the list guarded by
313dnl # long_double_math_on_this_cpu in configure.ac, right after
314dnl # the expansion of the present macro.
65fc9769 315 ;;
ff66d28f
PE
316 *)
317 AC_MSG_ERROR([No support for this host/target combination.])
318 ;;
319esac
c41f82b2 320])
85129ff1
AO
321
322
323dnl
324dnl Check to see if the (math function) argument passed is
325dnl declared when using the c compiler
326dnl
327dnl Define HAVE_CARGF etc if "cargf" is declared
328dnl
329dnl argument 1 is name of function to check
330dnl
331dnl ASSUMES argument is a math function
332dnl
333dnl GLIBCXX_CHECK_MATH_DECL
334AC_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
f9e84b31 344#undef $1
85129ff1
AO
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
354dnl
355dnl Check to see whether multiple math functions are
356dnl declared when using the c compiler
357dnl
358dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl"
359dnl are declared
360dnl
361dnl argument 1 is a word list naming function to check
362dnl
363dnl ASSUMES arguments are math functions
364dnl
365dnl GLIBCXX_CHECK_MATH_DECLS
366AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [
367 m4_foreach_w([glibcxx_func], [$1], [
368 GLIBCXX_CHECK_MATH_DECL(glibcxx_func)
369 ])
370])