Patch ieee128-lib-patch005b
[official-gcc.git] / libstdc++-v3 / crossconfig.m4
blobfe1828835368dd5c2c16a20cf4abc52739e52f30
1 dnl
2 dnl This file contains details for non-native builds.
3 dnl
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     ;;
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     ;;
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
47     AC_DEFINE(HAVE_FINITE)
48     AC_DEFINE(HAVE_HYPOT)
49     AC_DEFINE(HAVE_ISNAN)
50     AC_DEFINE(HAVE_ISINF)
52     AC_DEFINE(HAVE_LDEXPF)
53     AC_DEFINE(HAVE_MODF)
54     AC_DEFINE(HAVE_SQRTF)
55     ;;
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     ;;
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.
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     ;;
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     ;;
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)
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     ;;
134   *-fuchsia*)
135     SECTION_FLAGS='-ffunction-sections -fdata-sections'
136     AC_SUBST(SECTION_FLAGS)
137     ;;
139   *-hpux*)
140     SECTION_FLAGS='-ffunction-sections -fdata-sections'
141     AC_SUBST(SECTION_FLAGS)
142     GLIBCXX_CHECK_LINKER_FEATURES
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)
167     # GLIBCXX_CHECK_STDLIB_SUPPORT
168     AC_DEFINE(HAVE_STRTOLD)
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     AC_DEFINE(HAVE_FINITEF)
207     AC_DEFINE(HAVE_FINITE)
208     AC_DEFINE(HAVE_FREXPF)
209     AC_DEFINE(HAVE_HYPOTF)
210     AC_DEFINE(HAVE_ISINF)
211     AC_DEFINE(HAVE_ISINFF)
212     AC_DEFINE(HAVE_ISNAN)
213     AC_DEFINE(HAVE_ISNANF)
214     if test x"long_double_math_on_this_cpu" = x"yes"; then
215       AC_DEFINE(HAVE_FINITEL)
216       AC_DEFINE(HAVE_ISINFL)
217       AC_DEFINE(HAVE_ISNANL)
218     fi
219     AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
220     AC_CHECK_FUNCS(timespec_get)
221     AC_CHECK_FUNCS(sockatmark)
222     ;;
223   *-qnx6.1* | *-qnx6.2*)
224     SECTION_FLAGS='-ffunction-sections -fdata-sections'
225     AC_SUBST(SECTION_FLAGS) 
226     GLIBCXX_CHECK_LINKER_FEATURES
227     AC_DEFINE(HAVE_COSF)
228     AC_DEFINE(HAVE_COSL)
229     AC_DEFINE(HAVE_COSHF)
230     AC_DEFINE(HAVE_COSHL)
231     AC_DEFINE(HAVE_LOGF)
232     AC_DEFINE(HAVE_LOGL)
233     AC_DEFINE(HAVE_LOG10F)
234     AC_DEFINE(HAVE_LOG10L)
235     AC_DEFINE(HAVE_SINF)
236     AC_DEFINE(HAVE_SINL)
237     AC_DEFINE(HAVE_SINHF)
238     AC_DEFINE(HAVE_SINHL)
239     ;;
240   *-rtems*)
241     GLIBCXX_CHECK_COMPILER_FEATURES
242     GLIBCXX_CHECK_LINKER_FEATURES
243     GLIBCXX_CHECK_MATH_SUPPORT
244     GLIBCXX_CHECK_STDLIB_SUPPORT
245     ;;
246   *-tpf)
247     SECTION_FLAGS='-ffunction-sections -fdata-sections'
248     SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS'
249     AC_SUBST(SECTION_FLAGS)
250     AC_DEFINE(HAVE_FINITE)
251     AC_DEFINE(HAVE_FINITEF)
252     AC_DEFINE(HAVE_FREXPF)
253     AC_DEFINE(HAVE_HYPOTF)
254     AC_DEFINE(HAVE_ISINF)
255     AC_DEFINE(HAVE_ISINFF)
256     AC_DEFINE(HAVE_ISNAN)
257     AC_DEFINE(HAVE_ISNANF)
258     AC_DEFINE(HAVE_SINCOS)
259     AC_DEFINE(HAVE_SINCOSF)
260     if test x"long_double_math_on_this_cpu" = x"yes"; then
261       AC_DEFINE(HAVE_FINITEL)
262       AC_DEFINE(HAVE_HYPOTL)
263       AC_DEFINE(HAVE_ISINFL)
264       AC_DEFINE(HAVE_ISNANL)
265     fi
266     ;;
267   *-*vms*)
268     # Check for available headers.
269     # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld
270     GLIBCXX_CHECK_MATH_SUPPORT
271     GLIBCXX_CHECK_STDLIB_SUPPORT
272     ;;
273   *-vxworks)
274     AC_DEFINE(HAVE_ACOSF)
275     AC_DEFINE(HAVE_ASINF)
276     AC_DEFINE(HAVE_ATAN2F)
277     AC_DEFINE(HAVE_ATANF)
278     AC_DEFINE(HAVE_CEILF)
279     AC_DEFINE(HAVE_COSF)
280     AC_DEFINE(HAVE_COSHF)
281     AC_DEFINE(HAVE_EXPF)
282     AC_DEFINE(HAVE_FABSF)
283     AC_DEFINE(HAVE_FLOORF)
284     AC_DEFINE(HAVE_FMODF)
285     AC_DEFINE(HAVE_HYPOT)
286     AC_DEFINE(HAVE_LOG10F)
287     AC_DEFINE(HAVE_LOGF)
288     AC_DEFINE(HAVE_POWF)
289     AC_DEFINE(HAVE_SINF)
290     AC_DEFINE(HAVE_SINHF)
291     AC_DEFINE(HAVE_SQRTF)
292     AC_DEFINE(HAVE_TANF)
293     AC_DEFINE(HAVE_TANHF)
295 dnl # Different versions and execution modes implement different
296 dnl # subsets of these functions.  Instead of hard-coding, test for C
297 dnl # declarations in headers.  The C primitives could be defined as
298 dnl # macros, in which case the tests might fail, and we might have to
299 dnl # switch to more elaborate tests.
300     GLIBCXX_CHECK_MATH_DECLS([
301       acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl
302       frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl])
303 dnl # sincosl is the only one missing here, compared with the *l
304 dnl # functions in the list guarded by
305 dnl # long_double_math_on_this_cpu in configure.ac, right after
306 dnl # the expansion of the present macro.
307     ;;
308   *)
309     AC_MSG_ERROR([No support for this host/target combination.])
310    ;;
311 esac
316 dnl Check to see if the (math function) argument passed is
317 dnl declared when using the c compiler
319 dnl Define HAVE_CARGF etc if "cargf" is declared
321 dnl argument 1 is name of function to check
323 dnl ASSUMES argument is a math function
325 dnl GLIBCXX_CHECK_MATH_DECL
326 AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
327   AC_CACHE_CHECK([for $1 declaration],
328     [glibcxx_cv_func_$1_use], [
329       AC_LANG_SAVE
330       AC_LANG_C
331       AC_TRY_COMPILE([
332 #include <math.h>
333 #ifdef HAVE_IEEEFP_H
334 # include <ieeefp.h>
335 #endif
336 #undef $1
337 ], [
338   void (*f)(void) = (void (*)(void))$1;
339 ], [glibcxx_cv_func_$1_use=yes
340 ], [glibcxx_cv_func_$1_use=no])])
341   if test "x$glibcxx_cv_func_$1_use" = xyes; then
342     AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]))
343   fi
347 dnl Check to see whether multiple math functions are
348 dnl declared when using the c compiler
350 dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl"
351 dnl are declared
353 dnl argument 1 is a word list naming function to check
355 dnl ASSUMES arguments are math functions
357 dnl GLIBCXX_CHECK_MATH_DECLS
358 AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [
359   m4_foreach_w([glibcxx_func], [$1], [
360     GLIBCXX_CHECK_MATH_DECL(glibcxx_func)
361   ])