crossconfig.m4 revision 225736
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  *-darwin*)
13    # Darwin versions vary, but the linker should work in a cross environment,
14    # so we just check for all the features here.
15    # Check for available headers.
16    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
17    machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
18    sys/types.h])
19
20    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
21    GLIBCXX_CHECK_MATH_SUPPORT
22    GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
23    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
24    GLIBCXX_CHECK_ICONV_SUPPORT
25    GLIBCXX_CHECK_STDLIB_SUPPORT
26
27    # For showmanyc_helper().
28    AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
29    GLIBCXX_CHECK_POLL
30    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
31
32    # For xsputn_2().
33    AC_CHECK_HEADERS(sys/uio.h)
34    GLIBCXX_CHECK_WRITEV
35
36    AC_DEFINE(HAVE_LC_MESSAGES)
37
38    AC_TRY_COMPILE(
39      [#include <setjmp.h>],
40      [sigjmp_buf env;
41       while (! sigsetjmp (env, 1))
42         siglongjmp (env, 1);
43    ],
44    [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available.])])
45
46    AC_DEFINE(HAVE_MMAP)
47    ;;
48
49  *djgpp)
50    AC_CHECK_HEADERS([float.h ieeefp.h inttypes.h locale.h \
51      memory.h stdint.h stdlib.h strings.h string.h unistd.h \
52      wchar.h wctype.h machine/endian.h sys/ioctl.h sys/param.h \
53      sys/resource.h sys/stat.h sys/time.h sys/types.h sys/uio.h])
54    GLIBCXX_CHECK_LINKER_FEATURES
55    GLIBCXX_CHECK_MATH_SUPPORT
56    GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
57    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
58    GLIBCXX_CHECK_ICONV_SUPPORT
59    GLIBCXX_CHECK_STDLIB_SUPPORT
60    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
61    AC_DEFINE(HAVE_WRITEV)
62    ;;
63
64  *-freebsd*)
65    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
66      machine/endian.h machine/param.h sys/machine.h sys/types.h \
67      fp.h locale.h float.h inttypes.h sys/resource.h sys/stat.h \
68      sys/time.h unistd.h])
69    SECTION_FLAGS='-ffunction-sections -fdata-sections'
70    AC_SUBST(SECTION_FLAGS) 
71    GLIBCXX_CHECK_LINKER_FEATURES
72    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
73    GLIBCXX_CHECK_ICONV_SUPPORT
74    AC_DEFINE(HAVE_LC_MESSAGES)
75    AC_DEFINE(HAVE_GETPAGESIZE)
76    AC_DEFINE(HAVE_SETENV)
77    AC_DEFINE(HAVE_SIGSETJMP)
78    AC_DEFINE(HAVE_COPYSIGN)
79    AC_DEFINE(HAVE_COPYSIGNF)
80    AC_DEFINE(HAVE_FINITEF)
81    AC_DEFINE(HAVE_FINITE)
82    AC_DEFINE(HAVE_FREXPF)
83    AC_DEFINE(HAVE_HYPOT)
84    AC_DEFINE(HAVE_HYPOTF)
85    AC_DEFINE(HAVE_ISINF)
86    AC_DEFINE(HAVE_ISNAN)
87    AC_DEFINE(HAVE_ISNANF)
88
89    AC_DEFINE(HAVE_MMAP)
90    AC_DEFINE(HAVE_ACOSF)
91    AC_DEFINE(HAVE_ASINF)
92    AC_DEFINE(HAVE_ATAN2F)
93    AC_DEFINE(HAVE_ATANF)
94    AC_DEFINE(HAVE_CEILF)
95    AC_DEFINE(HAVE_COPYSIGN)
96    AC_DEFINE(HAVE_COPYSIGNF)
97    AC_DEFINE(HAVE_COSF)
98    AC_DEFINE(HAVE_COSHF)
99    AC_DEFINE(HAVE_EXPF)
100    AC_DEFINE(HAVE_FABSF)
101    AC_DEFINE(HAVE_FLOORF)
102    AC_DEFINE(HAVE_FMODF)
103    AC_DEFINE(HAVE_FREXPF)
104    AC_DEFINE(HAVE_LDEXPF)
105    AC_DEFINE(HAVE_LOG10F)
106    AC_DEFINE(HAVE_LOGF)
107    AC_DEFINE(HAVE_MODFF)
108    AC_DEFINE(HAVE_POWF)
109    AC_DEFINE(HAVE_SINF)
110    AC_DEFINE(HAVE_SINHF)
111    AC_DEFINE(HAVE_SQRTF)
112    AC_DEFINE(HAVE_TANF)
113    AC_DEFINE(HAVE_TANHF)
114    if test x"long_double_math_on_this_cpu" = x"yes"; then
115      AC_DEFINE(HAVE_FINITEL)
116      AC_DEFINE(HAVE_ISINFL)
117      AC_DEFINE(HAVE_ISNANL)
118    fi
119    ;;
120  *-hpux*)
121    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
122      machine/endian.h machine/param.h sys/machine.h sys/types.h \
123      fp.h locale.h float.h inttypes.h])
124    SECTION_FLAGS='-ffunction-sections -fdata-sections'
125    AC_SUBST(SECTION_FLAGS)
126    GLIBCXX_CHECK_LINKER_FEATURES
127    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
128    GLIBCXX_CHECK_ICONV_SUPPORT
129    AC_DEFINE(HAVE_COPYSIGN)
130    AC_DEFINE(HAVE_COPYSIGNF)
131    AC_DEFINE(HAVE_FREXPF)
132    AC_DEFINE(HAVE_HYPOT)
133    case "$target" in
134      *-hpux10*)
135	AC_DEFINE(HAVE_FINITE)
136	AC_DEFINE(HAVE_FINITEF)
137	AC_DEFINE(HAVE_ISINF)
138	AC_DEFINE(HAVE_ISINFF)
139	AC_DEFINE(HAVE_ISNAN)
140	AC_DEFINE(HAVE_ISNANF)
141	;;
142    esac
143    ;;
144  *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
145    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
146      machine/endian.h machine/param.h sys/machine.h sys/types.h \
147      fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
148    SECTION_FLAGS='-ffunction-sections -fdata-sections'
149    AC_SUBST(SECTION_FLAGS)
150    GLIBCXX_CHECK_COMPILER_FEATURES
151    GLIBCXX_CHECK_LINKER_FEATURES
152    GLIBCXX_CHECK_MATH_SUPPORT
153    GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
154    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
155    GLIBCXX_CHECK_ICONV_SUPPORT
156    GLIBCXX_CHECK_STDLIB_SUPPORT
157
158    # For LFS.
159    AC_DEFINE(HAVE_INT64_T)
160    GLIBCXX_CHECK_LFS
161
162    # For showmanyc_helper().
163    AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
164    GLIBCXX_CHECK_POLL
165    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
166
167    # For xsputn_2().
168    AC_CHECK_HEADERS(sys/uio.h)
169    GLIBCXX_CHECK_WRITEV
170    ;;
171  *-mingw32*)
172    AC_CHECK_HEADERS([sys/types.h locale.h float.h])
173    GLIBCXX_CHECK_LINKER_FEATURES
174    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
175    ;;
176  *-netbsd*)
177    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
178      machine/endian.h machine/param.h sys/machine.h sys/types.h \
179      fp.h locale.h float.h inttypes.h])
180    SECTION_FLAGS='-ffunction-sections -fdata-sections'
181    AC_SUBST(SECTION_FLAGS) 
182    GLIBCXX_CHECK_LINKER_FEATURES
183    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
184    GLIBCXX_CHECK_ICONV_SUPPORT
185    AC_DEFINE(HAVE_COPYSIGN)
186    AC_DEFINE(HAVE_COPYSIGNF)
187    AC_DEFINE(HAVE_FINITEF)
188    AC_DEFINE(HAVE_FINITE)
189    AC_DEFINE(HAVE_FREXPF)
190    AC_DEFINE(HAVE_HYPOTF)
191    AC_DEFINE(HAVE_ISINF)
192    AC_DEFINE(HAVE_ISINFF)
193    AC_DEFINE(HAVE_ISNAN)
194    AC_DEFINE(HAVE_ISNANF)
195    if test x"long_double_math_on_this_cpu" = x"yes"; then
196      AC_DEFINE(HAVE_FINITEL)
197      AC_DEFINE(HAVE_ISINFL)
198      AC_DEFINE(HAVE_ISNANL)
199    fi
200    ;;
201  *-netware)
202    AC_CHECK_HEADERS([nan.h ieeefp.h sys/isa_defs.h sys/machine.h \
203      sys/types.h locale.h float.h inttypes.h])
204    SECTION_FLAGS='-ffunction-sections -fdata-sections'
205    AC_SUBST(SECTION_FLAGS)
206    GLIBCXX_CHECK_LINKER_FEATURES
207    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
208    GLIBCXX_CHECK_ICONV_SUPPORT
209    AC_DEFINE(HAVE_HYPOT)
210    AC_DEFINE(HAVE_ISINF)
211    AC_DEFINE(HAVE_ISNAN)
212
213    # For showmanyc_helper().
214    AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
215    GLIBCXX_CHECK_POLL
216    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
217
218    # For xsputn_2().
219    AC_CHECK_HEADERS(sys/uio.h)
220    GLIBCXX_CHECK_WRITEV
221    ;;
222  *-qnx6.1* | *-qnx6.2*)
223    SECTION_FLAGS='-ffunction-sections -fdata-sections'
224    AC_SUBST(SECTION_FLAGS) 
225    GLIBCXX_CHECK_LINKER_FEATURES
226    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
227    GLIBCXX_CHECK_ICONV_SUPPORT
228    AC_DEFINE(HAVE_COSF)
229    AC_DEFINE(HAVE_COSL)
230    AC_DEFINE(HAVE_COSHF)
231    AC_DEFINE(HAVE_COSHL)
232    AC_DEFINE(HAVE_LOGF)
233    AC_DEFINE(HAVE_LOGL)
234    AC_DEFINE(HAVE_LOG10F)
235    AC_DEFINE(HAVE_LOG10L)
236    AC_DEFINE(HAVE_SINF)
237    AC_DEFINE(HAVE_SINL)
238    AC_DEFINE(HAVE_SINHF)
239    AC_DEFINE(HAVE_SINHL)
240    ;;
241  *-solaris*)
242    case "$target" in
243    #  *-solaris2.5)
244    #    os_include_dir="os/solaris/solaris2.5"
245    #    ;;
246    #  *-solaris2.6)
247    #    os_include_dir="os/solaris/solaris2.6"
248    #    ;;
249      *-solaris2.7 | *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
250         GLIBCXX_CHECK_LINKER_FEATURES
251         AC_DEFINE(HAVE_GETPAGESIZE)
252         AC_DEFINE(HAVE_SIGSETJMP)
253         AC_DEFINE(HAVE_MBSTATE_T)
254         AC_DEFINE(HAVE_POLL)
255         AC_DEFINE(HAVE_S_ISREG)
256         AC_DEFINE(HAVE_LC_MESSAGES)
257         AC_DEFINE(HAVE_FINITE)
258         AC_DEFINE(HAVE_FPCLASS)
259         AC_DEFINE(HAVE_GETPAGESIZE)
260         AC_DEFINE(HAVE_NL_LANGINFO)
261         AC_DEFINE(HAVE_ICONV)
262         AC_DEFINE(HAVE_ICONV_CLOSE)
263         AC_DEFINE(HAVE_ICONV_OPEN)
264         # Look for the pieces required for wchar_t support in order to
265         # get all the right HAVE_* macros defined.
266         GLIBCXX_CHECK_ICONV_SUPPORT
267         # All of the dependencies for wide character support are here, so
268         # turn it on.  This requires some syncronization with the
269         # GLIBCXX_CHECK_ICONV_SUPPORT in acinclude.m4
270         AC_DEFINE(_GLIBCXX_USE_WCHAR_T) 
271         # Are these tested for even when cross?
272         AC_DEFINE(HAVE_FLOAT_H)
273         AC_DEFINE(HAVE_IEEEFP_H)
274         AC_DEFINE(HAVE_INTTYPES_H)
275         AC_DEFINE(HAVE_LOCALE_H)
276         AC_DEFINE(HAVE_NAN_H)
277         AC_DEFINE(HAVE_SYS_FILIO_H)
278         AC_DEFINE(HAVE_SYS_IOCTL_H)
279         AC_DEFINE(HAVE_SYS_ISA_DEFS_H)
280         AC_DEFINE(HAVE_SYS_RESOURCE_H)
281         AC_DEFINE(HAVE_SYS_TIME_H)
282         AC_DEFINE(HAVE_SYS_TYPES_H)
283         AC_DEFINE(HAVE_UNISTD_H)
284         AC_DEFINE(HAVE_WCHAR_H)
285         AC_DEFINE(HAVE_WCTYPE_H)
286         AC_DEFINE(HAVE_LIBM)
287        ;;
288    esac
289    case "$target" in
290      sparc*-*-solaris2.8 | sparc*-*-solaris2.9 | sparc*-*-solaris2.10)
291        # I saw these on sparc-sun-solaris2.8, but not 2.6, and not on i386
292        AC_DEFINE(HAVE___BUILTIN_ABS)
293        AC_DEFINE(HAVE___BUILTIN_LABS)
294        AC_DEFINE(HAVE___BUILTIN_FABS)
295        AC_DEFINE(HAVE___BUILTIN_FABSF)
296        AC_DEFINE(HAVE___BUILTIN_FABSL)
297        AC_DEFINE(HAVE___BUILTIN_COS)
298        AC_DEFINE(HAVE___BUILTIN_COSF)
299        AC_DEFINE(HAVE___BUILTIN_SIN)
300        AC_DEFINE(HAVE___BUILTIN_SINF)
301       ;;
302    esac
303    case "$target" in
304      *-*-solaris2.10)
305      # These two C99 functions are present only in Solaris >= 10
306      AC_DEFINE(HAVE_STRTOF)
307      AC_DEFINE(HAVE_STRTOLD)
308     ;;
309    esac
310    AC_DEFINE(HAVE_MMAP) 
311    AC_DEFINE(HAVE_COPYSIGN)
312    AC_DEFINE(HAVE_ISNAN)
313    AC_DEFINE(HAVE_ISNANF)
314    AC_DEFINE(HAVE_MODFF)
315    AC_DEFINE(HAVE_HYPOT)
316    ;;
317  *-tpf)
318    AC_CHECK_HEADERS([nan.h endian.h machine/endian.h  \
319      sys/param.h sys/types.h locale.h float.h inttypes.h])
320    SECTION_FLAGS='-ffunction-sections -fdata-sections'
321    AC_SUBST(SECTION_FLAGS)
322    GLIBCXX_CHECK_LINKER_FEATURES
323    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
324    GLIBCXX_CHECK_ICONV_SUPPORT
325    AC_DEFINE(HAVE_COPYSIGN)
326    AC_DEFINE(HAVE_COPYSIGNF)
327    AC_DEFINE(HAVE_FINITE)
328    AC_DEFINE(HAVE_FINITEF)
329    AC_DEFINE(HAVE_FREXPF)
330    AC_DEFINE(HAVE_HYPOTF)
331    AC_DEFINE(HAVE_ISINF)
332    AC_DEFINE(HAVE_ISINFF)
333    AC_DEFINE(HAVE_ISNAN)
334    AC_DEFINE(HAVE_ISNANF)
335    AC_DEFINE(HAVE_SINCOS)
336    AC_DEFINE(HAVE_SINCOSF)
337    if test x"long_double_math_on_this_cpu" = x"yes"; then
338      AC_DEFINE(HAVE_FINITEL)
339      AC_DEFINE(HAVE_HYPOTL)
340      AC_DEFINE(HAVE_ISINFL)
341      AC_DEFINE(HAVE_ISNANL)
342    fi
343    ;;
344  *-vxworks)
345    AC_DEFINE(HAVE_MMAP)
346    AC_DEFINE(HAVE_ACOSF)
347    AC_DEFINE(HAVE_ASINF)
348    AC_DEFINE(HAVE_ATAN2F)
349    AC_DEFINE(HAVE_ATANF)
350    AC_DEFINE(HAVE_CEILF)
351    AC_DEFINE(HAVE_COSF)
352    AC_DEFINE(HAVE_COSHF)
353    AC_DEFINE(HAVE_EXPF)
354    AC_DEFINE(HAVE_FABSF)
355    AC_DEFINE(HAVE_FLOORF)
356    AC_DEFINE(HAVE_FMODF)
357    AC_DEFINE(HAVE_HYPOT)
358    AC_DEFINE(HAVE_LOG10F)
359    AC_DEFINE(HAVE_LOGF)
360    AC_DEFINE(HAVE_POWF)
361    AC_DEFINE(HAVE_SINF)
362    AC_DEFINE(HAVE_SINHF)
363    AC_DEFINE(HAVE_SQRTF)
364    AC_DEFINE(HAVE_TANF)
365    AC_DEFINE(HAVE_TANHF)
366    ;;
367  *-windiss*)
368    AC_DEFINE(HAVE_ACOSF)
369    AC_DEFINE(HAVE_ACOSL)
370    AC_DEFINE(HAVE_ASINF)
371    AC_DEFINE(HAVE_ASINL)
372    AC_DEFINE(HAVE_ATAN2F)
373    AC_DEFINE(HAVE_ATAN2L)
374    AC_DEFINE(HAVE_ATANF)
375    AC_DEFINE(HAVE_ATANL)
376    AC_DEFINE(HAVE_CEILF)
377    AC_DEFINE(HAVE_CEILL)
378    AC_DEFINE(HAVE_COPYSIGN)
379    AC_DEFINE(HAVE_COPYSIGNF)
380    AC_DEFINE(HAVE_COSF)
381    AC_DEFINE(HAVE_COSL)
382    AC_DEFINE(HAVE_COSHF)
383    AC_DEFINE(HAVE_COSHL)
384    AC_DEFINE(HAVE_EXPF)
385    AC_DEFINE(HAVE_EXPL)
386    AC_DEFINE(HAVE_FABSF)
387    AC_DEFINE(HAVE_FABSL)
388    AC_DEFINE(HAVE_FLOORF)
389    AC_DEFINE(HAVE_FLOORL)
390    AC_DEFINE(HAVE_FMODF)
391    AC_DEFINE(HAVE_FMODL)
392    AC_DEFINE(HAVE_FREXPF)
393    AC_DEFINE(HAVE_FREXPL)
394    AC_DEFINE(HAVE_LDEXPF)
395    AC_DEFINE(HAVE_LDEXPL)
396    AC_DEFINE(HAVE_LOG10F)
397    AC_DEFINE(HAVE_LOG10L)
398    AC_DEFINE(HAVE_LOGF)
399    AC_DEFINE(HAVE_MODFF)
400    AC_DEFINE(HAVE_MODFL)
401    AC_DEFINE(HAVE_POWF)
402    AC_DEFINE(HAVE_POWL)
403    AC_DEFINE(HAVE_SINF)
404    AC_DEFINE(HAVE_SINL)
405    AC_DEFINE(HAVE_SINHF)
406    AC_DEFINE(HAVE_SINHL)
407    AC_DEFINE(HAVE_SQRTF)
408    AC_DEFINE(HAVE_SQRTL)
409    AC_DEFINE(HAVE_TANF)
410    AC_DEFINE(HAVE_TANL)
411    AC_DEFINE(HAVE_TANHF)
412    AC_DEFINE(HAVE_TANHL)
413    ;;
414  *)
415    AC_MSG_ERROR([No support for this host/target combination.])
416   ;;
417esac
418])
419