xref: /netbsd-src/external/gpl3/gcc/dist/libstdc++-v3/crossconfig.m4 (revision e9e6e0f6fbc36b8de7586170291cf5fc97cab8b6)
1dnl
2dnl This file contains details for non-native builds.
3dnl
4
5AC_DEFUN([GLIBCXX_CROSSCONFIG],[
6# Base decisions on target environment.
7case "${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
214    AC_DEFINE(HAVE_ICONV)
215    AC_DEFINE(HAVE_ICONV_CLOSE)
216    AC_DEFINE(HAVE_ICONV_OPEN)
217    AC_DEFINE(HAVE_LC_MESSAGES)
218
219    AC_DEFINE(HAVE_MMAP)
220    AC_DEFINE(HAVE_GETPAGESIZE)
221    AC_DEFINE(HAVE_SETENV)
222    AC_DEFINE(HAVE_SIGSETJMP)
223
224    AC_DEFINE(HAVE_FINITEF)
225    AC_DEFINE(HAVE_FINITE)
226    AC_DEFINE(HAVE_FREXPF)
227    AC_DEFINE(HAVE_HYPOT)
228    AC_DEFINE(HAVE_HYPOTF)
229    AC_DEFINE(HAVE_ISINF)
230    AC_DEFINE(HAVE_ISINFF)
231    AC_DEFINE(HAVE_ISNAN)
232    AC_DEFINE(HAVE_ISNANF)
233    AC_DEFINE(HAVE_ACOSF)
234    AC_DEFINE(HAVE_ASINF)
235    AC_DEFINE(HAVE_ATAN2F)
236    AC_DEFINE(HAVE_ATANF)
237    AC_DEFINE(HAVE_CEILF)
238    AC_DEFINE(HAVE_COSF)
239    AC_DEFINE(HAVE_COSHF)
240    AC_DEFINE(HAVE_EXPF)
241    AC_DEFINE(HAVE_FABSF)
242    AC_DEFINE(HAVE_FLOORF)
243    AC_DEFINE(HAVE_FMODF)
244    AC_DEFINE(HAVE_FREXPF)
245    AC_DEFINE(HAVE_LDEXPF)
246    AC_DEFINE(HAVE_LOG10F)
247    AC_DEFINE(HAVE_LOGF)
248    AC_DEFINE(HAVE_MODF)
249    AC_DEFINE(HAVE_MODFF)
250    AC_DEFINE(HAVE_POWF)
251    AC_DEFINE(HAVE_SINF)
252    AC_DEFINE(HAVE_SINHF)
253    AC_DEFINE(HAVE_SQRTF)
254    AC_DEFINE(HAVE_STRTOF)
255    AC_DEFINE(HAVE_STRTOLD)
256    AC_DEFINE(HAVE_TANF)
257    AC_DEFINE(HAVE_TANHF)
258    if test x"long_double_math_on_this_cpu" = x"yes"; then
259      AC_DEFINE(HAVE_FINITEL)
260      AC_DEFINE(HAVE_ISINFL)
261      AC_DEFINE(HAVE_ISNANL)
262    fi
263    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
264    AC_CHECK_FUNCS(timespec_get)
265    AC_CHECK_FUNCS(sockatmark)
266    ;;
267  *-qnx6.1* | *-qnx6.2*)
268    SECTION_FLAGS='-ffunction-sections -fdata-sections'
269    AC_SUBST(SECTION_FLAGS)
270    GLIBCXX_CHECK_LINKER_FEATURES
271    AC_DEFINE(HAVE_COSF)
272    AC_DEFINE(HAVE_COSL)
273    AC_DEFINE(HAVE_COSHF)
274    AC_DEFINE(HAVE_COSHL)
275    AC_DEFINE(HAVE_LOGF)
276    AC_DEFINE(HAVE_LOGL)
277    AC_DEFINE(HAVE_LOG10F)
278    AC_DEFINE(HAVE_LOG10L)
279    AC_DEFINE(HAVE_SINF)
280    AC_DEFINE(HAVE_SINL)
281    AC_DEFINE(HAVE_SINHF)
282    AC_DEFINE(HAVE_SINHL)
283    ;;
284  *-rtems*)
285    GLIBCXX_CHECK_COMPILER_FEATURES
286    GLIBCXX_CHECK_LINKER_FEATURES
287    GLIBCXX_CHECK_MATH_SUPPORT
288    GLIBCXX_CHECK_STDLIB_SUPPORT
289    ;;
290  *-tpf)
291    SECTION_FLAGS='-ffunction-sections -fdata-sections'
292    SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS'
293    AC_SUBST(SECTION_FLAGS)
294    AC_DEFINE(HAVE_FINITE)
295    AC_DEFINE(HAVE_FINITEF)
296    AC_DEFINE(HAVE_FREXPF)
297    AC_DEFINE(HAVE_HYPOTF)
298    AC_DEFINE(HAVE_ISINF)
299    AC_DEFINE(HAVE_ISINFF)
300    AC_DEFINE(HAVE_ISNAN)
301    AC_DEFINE(HAVE_ISNANF)
302    AC_DEFINE(HAVE_SINCOS)
303    AC_DEFINE(HAVE_SINCOSF)
304    if test x"long_double_math_on_this_cpu" = x"yes"; then
305      AC_DEFINE(HAVE_FINITEL)
306      AC_DEFINE(HAVE_HYPOTL)
307      AC_DEFINE(HAVE_ISINFL)
308      AC_DEFINE(HAVE_ISNANL)
309    fi
310    ;;
311  *-*vms*)
312    # Check for available headers.
313    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld
314    GLIBCXX_CHECK_MATH_SUPPORT
315    GLIBCXX_CHECK_STDLIB_SUPPORT
316    ;;
317  *-vxworks*)
318    AC_DEFINE(HAVE_ACOSF)
319    AC_DEFINE(HAVE_ASINF)
320    AC_DEFINE(HAVE_ATAN2F)
321    AC_DEFINE(HAVE_ATANF)
322    AC_DEFINE(HAVE_CEILF)
323    AC_DEFINE(HAVE_COSF)
324    AC_DEFINE(HAVE_COSHF)
325    AC_DEFINE(HAVE_EXPF)
326    AC_DEFINE(HAVE_FABSF)
327    AC_DEFINE(HAVE_FLOORF)
328    AC_DEFINE(HAVE_FMODF)
329    AC_DEFINE(HAVE_HYPOT)
330    AC_DEFINE(HAVE_LOG10F)
331    AC_DEFINE(HAVE_LOGF)
332    AC_DEFINE(HAVE_POWF)
333    AC_DEFINE(HAVE_SINF)
334    AC_DEFINE(HAVE_SINHF)
335    AC_DEFINE(HAVE_SQRTF)
336    AC_DEFINE(HAVE_TANF)
337    AC_DEFINE(HAVE_TANHF)
338
339dnl # Different versions and execution modes implement different
340dnl # subsets of these functions.  Instead of hard-coding, test for C
341dnl # declarations in headers.  The C primitives could be defined as
342dnl # macros, in which case the tests might fail, and we might have to
343dnl # switch to more elaborate tests.
344    GLIBCXX_CHECK_MATH_DECLS([
345      acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl
346      frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl hypotl
347      ldexpf modff hypotf frexpf])
348dnl # sincosl is the only one missing here, compared with the *l
349dnl # functions in the list guarded by
350dnl # long_double_math_on_this_cpu in configure.ac, right after
351dnl # the expansion of the present macro.
352    ;;
353  *)
354    AC_MSG_ERROR([No support for this host/target combination.])
355   ;;
356esac
357])
358
359
360dnl
361dnl Check to see if the (math function) argument passed is
362dnl declared when using the c compiler
363dnl
364dnl Define HAVE_CARGF etc if "cargf" is declared
365dnl
366dnl argument 1 is name of function to check
367dnl
368dnl ASSUMES argument is a math function
369dnl
370dnl GLIBCXX_CHECK_MATH_DECL
371AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
372  AC_CACHE_CHECK([for $1 declaration],
373    [glibcxx_cv_func_$1_use], [
374      AC_LANG_SAVE
375      AC_LANG_C
376      AC_TRY_COMPILE([
377#include <math.h>
378#ifdef HAVE_IEEEFP_H
379# include <ieeefp.h>
380#endif
381#undef $1
382], [
383  void (*f)(void) = (void (*)(void))$1;
384], [glibcxx_cv_func_$1_use=yes
385], [glibcxx_cv_func_$1_use=no])])
386  if test "x$glibcxx_cv_func_$1_use" = xyes; then
387    AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]))
388  fi
389])
390
391dnl
392dnl Check to see whether multiple math functions are
393dnl declared when using the c compiler
394dnl
395dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl"
396dnl are declared
397dnl
398dnl argument 1 is a word list naming function to check
399dnl
400dnl ASSUMES arguments are math functions
401dnl
402dnl GLIBCXX_CHECK_MATH_DECLS
403AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [
404  m4_foreach_w([glibcxx_func], [$1], [
405    GLIBCXX_CHECK_MATH_DECL(glibcxx_func)
406  ])
407])
408