xref: /netbsd-src/external/gpl3/gcc.old/dist/libstdc++-v3/crossconfig.m4 (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
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
68  *-darwin*)
69    # Darwin versions vary, but the linker should work in a cross environment,
70    # so we just check for all the features here.
71    # Check for available headers.
72
73    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
74    GLIBCXX_CHECK_MATH_SUPPORT
75    GLIBCXX_CHECK_STDLIB_SUPPORT
76    ;;
77
78  *djgpp)
79    # GLIBCXX_CHECK_MATH_SUPPORT
80    AC_DEFINE(HAVE_ISINF)
81    AC_DEFINE(HAVE_ISNAN)
82    AC_DEFINE(HAVE_FINITE)
83    AC_DEFINE(HAVE_SINCOS)
84    AC_DEFINE(HAVE_HYPOT)
85    ;;
86
87  *-freebsd*)
88    SECTION_FLAGS='-ffunction-sections -fdata-sections'
89    AC_SUBST(SECTION_FLAGS)
90    GLIBCXX_CHECK_LINKER_FEATURES
91    AC_DEFINE(HAVE_SETENV)
92    AC_DEFINE(HAVE_FINITEF)
93    AC_DEFINE(HAVE_FINITE)
94    AC_DEFINE(HAVE_FREXPF)
95    AC_DEFINE(HAVE_HYPOT)
96    AC_DEFINE(HAVE_HYPOTF)
97    AC_DEFINE(HAVE_ISINF)
98    AC_DEFINE(HAVE_ISNAN)
99    AC_DEFINE(HAVE_ISNANF)
100
101    AC_DEFINE(HAVE_ACOSF)
102    AC_DEFINE(HAVE_ASINF)
103    AC_DEFINE(HAVE_ATAN2F)
104    AC_DEFINE(HAVE_ATANF)
105    AC_DEFINE(HAVE_CEILF)
106    AC_DEFINE(HAVE_COSF)
107    AC_DEFINE(HAVE_COSHF)
108    AC_DEFINE(HAVE_EXPF)
109    AC_DEFINE(HAVE_FABSF)
110    AC_DEFINE(HAVE_FLOORF)
111    AC_DEFINE(HAVE_FMODF)
112    AC_DEFINE(HAVE_FREXPF)
113    AC_DEFINE(HAVE_LDEXPF)
114    AC_DEFINE(HAVE_LOG10F)
115    AC_DEFINE(HAVE_LOGF)
116    AC_DEFINE(HAVE_MODFF)
117    AC_DEFINE(HAVE_POWF)
118    AC_DEFINE(HAVE_SINF)
119    AC_DEFINE(HAVE_SINHF)
120    AC_DEFINE(HAVE_SQRTF)
121    AC_DEFINE(HAVE_TANF)
122    AC_DEFINE(HAVE_TANHF)
123    if test x"long_double_math_on_this_cpu" = x"yes"; then
124      AC_DEFINE(HAVE_FINITEL)
125      AC_DEFINE(HAVE_ISINFL)
126      AC_DEFINE(HAVE_ISNANL)
127    fi
128    AC_CHECK_FUNCS(__cxa_thread_atexit)
129    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
130    AC_CHECK_FUNCS(timespec_get)
131    AC_CHECK_FUNCS(sockatmark)
132    ;;
133
134  *-fuchsia*)
135    SECTION_FLAGS='-ffunction-sections -fdata-sections'
136    AC_SUBST(SECTION_FLAGS)
137    ;;
138
139  *-hpux*)
140    SECTION_FLAGS='-ffunction-sections -fdata-sections'
141    AC_SUBST(SECTION_FLAGS)
142    GLIBCXX_CHECK_LINKER_FEATURES
143
144    # GLIBCXX_CHECK_MATH_SUPPORT
145    AC_DEFINE(HAVE_ISNAN)
146    AC_DEFINE(HAVE_HYPOT)
147    AC_DEFINE(HAVE_ACOSF)
148    AC_DEFINE(HAVE_ASINF)
149    AC_DEFINE(HAVE_ATANF)
150    AC_DEFINE(HAVE_COSF)
151    AC_DEFINE(HAVE_COSHF)
152    AC_DEFINE(HAVE_SINF)
153    AC_DEFINE(HAVE_SINHF)
154    AC_DEFINE(HAVE_TANF)
155    AC_DEFINE(HAVE_TANHF)
156    AC_DEFINE(HAVE_EXPF)
157    AC_DEFINE(HAVE_ATAN2F)
158    AC_DEFINE(HAVE_FABSF)
159    AC_DEFINE(HAVE_FMODF)
160    AC_DEFINE(HAVE_FREXPF)
161    AC_DEFINE(HAVE_LOGF)
162    AC_DEFINE(HAVE_LOG10F)
163    AC_DEFINE(HAVE_MODF)
164    AC_DEFINE(HAVE_POWF)
165    AC_DEFINE(HAVE_SQRTF)
166
167    # GLIBCXX_CHECK_STDLIB_SUPPORT
168    AC_DEFINE(HAVE_STRTOLD)
169
170    GCC_CHECK_TLS
171    case "$target" in
172      *-hpux10*)
173	AC_DEFINE(HAVE_ISINF)
174	AC_DEFINE(HAVE_ISINFF)
175	AC_DEFINE(HAVE_ISNANF)
176	AC_DEFINE(HAVE_FINITE)
177	AC_DEFINE(HAVE_FINITEF)
178	;;
179    esac
180    ;;
181  *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-cygwin* | *-solaris*)
182    GLIBCXX_CHECK_COMPILER_FEATURES
183    GLIBCXX_CHECK_LINKER_FEATURES
184    GLIBCXX_CHECK_MATH_SUPPORT
185    GLIBCXX_CHECK_STDLIB_SUPPORT
186    AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
187    AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
188    GCC_CHECK_TLS
189    AC_CHECK_FUNCS(__cxa_thread_atexit_impl)
190    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
191    AC_CHECK_FUNCS(timespec_get)
192    AC_CHECK_FUNCS(sockatmark)
193    AM_ICONV
194    ;;
195  *-mingw32*)
196    GLIBCXX_CHECK_LINKER_FEATURES
197    GLIBCXX_CHECK_MATH_SUPPORT
198    GLIBCXX_CHECK_STDLIB_SUPPORT
199    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
200    AC_CHECK_FUNCS(_wfopen)
201    ;;
202  *-netbsd* | *-openbsd*)
203    SECTION_FLAGS='-ffunction-sections -fdata-sections'
204    AC_SUBST(SECTION_FLAGS)
205    GLIBCXX_CHECK_LINKER_FEATURES
206
207    AC_DEFINE(HAVE_ICONV)
208    AC_DEFINE(HAVE_ICONV_CLOSE)
209    AC_DEFINE(HAVE_ICONV_OPEN)
210    AC_DEFINE(HAVE_LC_MESSAGES)
211
212    AC_DEFINE(HAVE_MMAP)
213    AC_DEFINE(HAVE_GETPAGESIZE)
214    AC_DEFINE(HAVE_SETENV)
215    AC_DEFINE(HAVE_SIGSETJMP)
216
217    AC_DEFINE(HAVE_FINITEF)
218    AC_DEFINE(HAVE_FINITE)
219    AC_DEFINE(HAVE_FREXPF)
220    AC_DEFINE(HAVE_HYPOT)
221    AC_DEFINE(HAVE_HYPOTF)
222    AC_DEFINE(HAVE_ISINF)
223    AC_DEFINE(HAVE_ISINFF)
224    AC_DEFINE(HAVE_ISNAN)
225    AC_DEFINE(HAVE_ISNANF)
226    AC_DEFINE(HAVE_ACOSF)
227    AC_DEFINE(HAVE_ASINF)
228    AC_DEFINE(HAVE_ATAN2F)
229    AC_DEFINE(HAVE_ATANF)
230    AC_DEFINE(HAVE_CEILF)
231    AC_DEFINE(HAVE_COSF)
232    AC_DEFINE(HAVE_COSHF)
233    AC_DEFINE(HAVE_EXPF)
234    AC_DEFINE(HAVE_FABSF)
235    AC_DEFINE(HAVE_FLOORF)
236    AC_DEFINE(HAVE_FMODF)
237    AC_DEFINE(HAVE_FREXPF)
238    AC_DEFINE(HAVE_LDEXPF)
239    AC_DEFINE(HAVE_LOG10F)
240    AC_DEFINE(HAVE_LOGF)
241    AC_DEFINE(HAVE_MODF)
242    AC_DEFINE(HAVE_MODFF)
243    AC_DEFINE(HAVE_POWF)
244    AC_DEFINE(HAVE_SINF)
245    AC_DEFINE(HAVE_SINHF)
246    AC_DEFINE(HAVE_SQRTF)
247    AC_DEFINE(HAVE_STRTOF)
248    AC_DEFINE(HAVE_STRTOLD)
249    AC_DEFINE(HAVE_TANF)
250    AC_DEFINE(HAVE_TANHF)
251    if test x"long_double_math_on_this_cpu" = x"yes"; then
252      AC_DEFINE(HAVE_FINITEL)
253      AC_DEFINE(HAVE_ISINFL)
254      AC_DEFINE(HAVE_ISNANL)
255    fi
256    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
257    AC_CHECK_FUNCS(timespec_get)
258    AC_CHECK_FUNCS(sockatmark)
259    ;;
260  *-qnx6.1* | *-qnx6.2*)
261    SECTION_FLAGS='-ffunction-sections -fdata-sections'
262    AC_SUBST(SECTION_FLAGS)
263    GLIBCXX_CHECK_LINKER_FEATURES
264    AC_DEFINE(HAVE_COSF)
265    AC_DEFINE(HAVE_COSL)
266    AC_DEFINE(HAVE_COSHF)
267    AC_DEFINE(HAVE_COSHL)
268    AC_DEFINE(HAVE_LOGF)
269    AC_DEFINE(HAVE_LOGL)
270    AC_DEFINE(HAVE_LOG10F)
271    AC_DEFINE(HAVE_LOG10L)
272    AC_DEFINE(HAVE_SINF)
273    AC_DEFINE(HAVE_SINL)
274    AC_DEFINE(HAVE_SINHF)
275    AC_DEFINE(HAVE_SINHL)
276    ;;
277  *-rtems*)
278    GLIBCXX_CHECK_COMPILER_FEATURES
279    GLIBCXX_CHECK_LINKER_FEATURES
280    GLIBCXX_CHECK_MATH_SUPPORT
281    GLIBCXX_CHECK_STDLIB_SUPPORT
282    ;;
283  *-tpf)
284    SECTION_FLAGS='-ffunction-sections -fdata-sections'
285    SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS'
286    AC_SUBST(SECTION_FLAGS)
287    AC_DEFINE(HAVE_FINITE)
288    AC_DEFINE(HAVE_FINITEF)
289    AC_DEFINE(HAVE_FREXPF)
290    AC_DEFINE(HAVE_HYPOTF)
291    AC_DEFINE(HAVE_ISINF)
292    AC_DEFINE(HAVE_ISINFF)
293    AC_DEFINE(HAVE_ISNAN)
294    AC_DEFINE(HAVE_ISNANF)
295    AC_DEFINE(HAVE_SINCOS)
296    AC_DEFINE(HAVE_SINCOSF)
297    if test x"long_double_math_on_this_cpu" = x"yes"; then
298      AC_DEFINE(HAVE_FINITEL)
299      AC_DEFINE(HAVE_HYPOTL)
300      AC_DEFINE(HAVE_ISINFL)
301      AC_DEFINE(HAVE_ISNANL)
302    fi
303    ;;
304  *-*vms*)
305    # Check for available headers.
306    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld
307    GLIBCXX_CHECK_MATH_SUPPORT
308    GLIBCXX_CHECK_STDLIB_SUPPORT
309    ;;
310  *-vxworks)
311    AC_DEFINE(HAVE_ACOSF)
312    AC_DEFINE(HAVE_ASINF)
313    AC_DEFINE(HAVE_ATAN2F)
314    AC_DEFINE(HAVE_ATANF)
315    AC_DEFINE(HAVE_CEILF)
316    AC_DEFINE(HAVE_COSF)
317    AC_DEFINE(HAVE_COSHF)
318    AC_DEFINE(HAVE_EXPF)
319    AC_DEFINE(HAVE_FABSF)
320    AC_DEFINE(HAVE_FLOORF)
321    AC_DEFINE(HAVE_FMODF)
322    AC_DEFINE(HAVE_HYPOT)
323    AC_DEFINE(HAVE_LOG10F)
324    AC_DEFINE(HAVE_LOGF)
325    AC_DEFINE(HAVE_POWF)
326    AC_DEFINE(HAVE_SINF)
327    AC_DEFINE(HAVE_SINHF)
328    AC_DEFINE(HAVE_SQRTF)
329    AC_DEFINE(HAVE_TANF)
330    AC_DEFINE(HAVE_TANHF)
331
332dnl # Different versions and execution modes implement different
333dnl # subsets of these functions.  Instead of hard-coding, test for C
334dnl # declarations in headers.  The C primitives could be defined as
335dnl # macros, in which case the tests might fail, and we might have to
336dnl # switch to more elaborate tests.
337    GLIBCXX_CHECK_MATH_DECLS([
338      acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl
339      frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl])
340dnl # sincosl is the only one missing here, compared with the *l
341dnl # functions in the list guarded by
342dnl # long_double_math_on_this_cpu in configure.ac, right after
343dnl # the expansion of the present macro.
344    ;;
345  *)
346    AC_MSG_ERROR([No support for this host/target combination.])
347   ;;
348esac
349])
350
351
352dnl
353dnl Check to see if the (math function) argument passed is
354dnl declared when using the c compiler
355dnl
356dnl Define HAVE_CARGF etc if "cargf" is declared
357dnl
358dnl argument 1 is name of function to check
359dnl
360dnl ASSUMES argument is a math function
361dnl
362dnl GLIBCXX_CHECK_MATH_DECL
363AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
364  AC_CACHE_CHECK([for $1 declaration],
365    [glibcxx_cv_func_$1_use], [
366      AC_LANG_SAVE
367      AC_LANG_C
368      AC_TRY_COMPILE([
369#include <math.h>
370#ifdef HAVE_IEEEFP_H
371# include <ieeefp.h>
372#endif
373#undef $1
374], [
375  void (*f)(void) = (void (*)(void))$1;
376], [glibcxx_cv_func_$1_use=yes
377], [glibcxx_cv_func_$1_use=no])])
378  if test "x$glibcxx_cv_func_$1_use" = xyes; then
379    AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]))
380  fi
381])
382
383dnl
384dnl Check to see whether multiple math functions are
385dnl declared when using the c compiler
386dnl
387dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl"
388dnl are declared
389dnl
390dnl argument 1 is a word list naming function to check
391dnl
392dnl ASSUMES arguments are math functions
393dnl
394dnl GLIBCXX_CHECK_MATH_DECLS
395AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [
396  m4_foreach_w([glibcxx_func], [$1], [
397    GLIBCXX_CHECK_MATH_DECL(glibcxx_func)
398  ])
399])
400