xref: /netbsd-src/external/gpl3/gcc/dist/libstdc++-v3/crossconfig.m4 (revision e9e6e0f6fbc36b8de7586170291cf5fc97cab8b6)
14fee23f9Smrgdnl
24fee23f9Smrgdnl This file contains details for non-native builds.
34fee23f9Smrgdnl
44fee23f9Smrg
54fee23f9SmrgAC_DEFUN([GLIBCXX_CROSSCONFIG],[
64fee23f9Smrg# Base decisions on target environment.
74fee23f9Smrgcase "${host}" in
84fee23f9Smrg  arm*-*-symbianelf*)
94fee23f9Smrg    # This is a freestanding configuration; there is nothing to do here.
104fee23f9Smrg    ;;
114fee23f9Smrg
12a41324a9Smrg  avr*-*-*)
13a41324a9Smrg    AC_DEFINE(HAVE_ACOSF)
14a41324a9Smrg    AC_DEFINE(HAVE_ASINF)
15a41324a9Smrg    AC_DEFINE(HAVE_ATAN2F)
16a41324a9Smrg    AC_DEFINE(HAVE_ATANF)
17a41324a9Smrg    AC_DEFINE(HAVE_CEILF)
18a41324a9Smrg    AC_DEFINE(HAVE_COSF)
19a41324a9Smrg    AC_DEFINE(HAVE_COSHF)
20a41324a9Smrg    AC_DEFINE(HAVE_EXPF)
21a41324a9Smrg    AC_DEFINE(HAVE_FABSF)
22a41324a9Smrg    AC_DEFINE(HAVE_FLOORF)
23a41324a9Smrg    AC_DEFINE(HAVE_FMODF)
24a41324a9Smrg    AC_DEFINE(HAVE_FREXPF)
25a41324a9Smrg    AC_DEFINE(HAVE_SQRTF)
26a41324a9Smrg    AC_DEFINE(HAVE_HYPOTF)
27a41324a9Smrg    AC_DEFINE(HAVE_LDEXPF)
28a41324a9Smrg    AC_DEFINE(HAVE_LOG10F)
29a41324a9Smrg    AC_DEFINE(HAVE_LOGF)
30a41324a9Smrg    AC_DEFINE(HAVE_MODFF)
31a41324a9Smrg    AC_DEFINE(HAVE_POWF)
32a41324a9Smrg    AC_DEFINE(HAVE_SINF)
33a41324a9Smrg    AC_DEFINE(HAVE_SINHF)
34a41324a9Smrg    AC_DEFINE(HAVE_TANF)
35a41324a9Smrg    AC_DEFINE(HAVE_TANHF)
36a41324a9Smrg    ;;
37a41324a9Smrg
384fee23f9Smrg  mips*-sde-elf*)
394fee23f9Smrg    # These definitions are for the SDE C library rather than newlib.
404fee23f9Smrg    SECTION_FLAGS='-ffunction-sections -fdata-sections'
414fee23f9Smrg    AC_SUBST(SECTION_FLAGS)
424fee23f9Smrg    GLIBCXX_CHECK_COMPILER_FEATURES
434fee23f9Smrg    GLIBCXX_CHECK_LINKER_FEATURES
444fee23f9Smrg    GLIBCXX_CHECK_MATH_SUPPORT
454fee23f9Smrg    GLIBCXX_CHECK_STDLIB_SUPPORT
464fee23f9Smrg
474fee23f9Smrg    AC_DEFINE(HAVE_FINITE)
484fee23f9Smrg    AC_DEFINE(HAVE_HYPOT)
494fee23f9Smrg    AC_DEFINE(HAVE_ISNAN)
504fee23f9Smrg    AC_DEFINE(HAVE_ISINF)
514fee23f9Smrg
524fee23f9Smrg    AC_DEFINE(HAVE_LDEXPF)
534fee23f9Smrg    AC_DEFINE(HAVE_MODF)
544fee23f9Smrg    AC_DEFINE(HAVE_SQRTF)
554fee23f9Smrg    ;;
564fee23f9Smrg
574fee23f9Smrg  *-aix*)
584fee23f9Smrg    GLIBCXX_CHECK_LINKER_FEATURES
594fee23f9Smrg    GLIBCXX_CHECK_MATH_SUPPORT
604fee23f9Smrg    GLIBCXX_CHECK_STDLIB_SUPPORT
61654d12c0Smrg    AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
624fee23f9Smrg    AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
634fee23f9Smrg    # We don't yet support AIX's TLS ABI.
644fee23f9Smrg    #GCC_CHECK_TLS
654fee23f9Smrg    AM_ICONV
66*e9e6e0f6Smrg
67*e9e6e0f6Smrg    AC_DEFINE(HAVE_USELOCALE)
684fee23f9Smrg    ;;
694fee23f9Smrg
704fee23f9Smrg  *-darwin*)
714fee23f9Smrg    # Darwin versions vary, but the linker should work in a cross environment,
724fee23f9Smrg    # so we just check for all the features here.
734fee23f9Smrg    # Check for available headers.
744fee23f9Smrg
754fee23f9Smrg    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
764fee23f9Smrg    GLIBCXX_CHECK_MATH_SUPPORT
774fee23f9Smrg    GLIBCXX_CHECK_STDLIB_SUPPORT
78*e9e6e0f6Smrg
79*e9e6e0f6Smrg    AC_CHECK_FUNCS(uselocale)
804fee23f9Smrg    ;;
814fee23f9Smrg
824fee23f9Smrg  *djgpp)
834fee23f9Smrg    # GLIBCXX_CHECK_MATH_SUPPORT
844fee23f9Smrg    AC_DEFINE(HAVE_ISINF)
854fee23f9Smrg    AC_DEFINE(HAVE_ISNAN)
864fee23f9Smrg    AC_DEFINE(HAVE_FINITE)
874fee23f9Smrg    AC_DEFINE(HAVE_SINCOS)
884fee23f9Smrg    AC_DEFINE(HAVE_HYPOT)
894fee23f9Smrg    ;;
904fee23f9Smrg
914fee23f9Smrg  *-freebsd*)
924fee23f9Smrg    SECTION_FLAGS='-ffunction-sections -fdata-sections'
934fee23f9Smrg    AC_SUBST(SECTION_FLAGS)
944fee23f9Smrg    GLIBCXX_CHECK_LINKER_FEATURES
954fee23f9Smrg    AC_DEFINE(HAVE_SETENV)
964fee23f9Smrg    AC_DEFINE(HAVE_FINITEF)
974fee23f9Smrg    AC_DEFINE(HAVE_FINITE)
984fee23f9Smrg    AC_DEFINE(HAVE_FREXPF)
994fee23f9Smrg    AC_DEFINE(HAVE_HYPOT)
1004fee23f9Smrg    AC_DEFINE(HAVE_HYPOTF)
1014fee23f9Smrg    AC_DEFINE(HAVE_ISINF)
1024fee23f9Smrg    AC_DEFINE(HAVE_ISNAN)
1034fee23f9Smrg    AC_DEFINE(HAVE_ISNANF)
1044fee23f9Smrg
1054fee23f9Smrg    AC_DEFINE(HAVE_ACOSF)
1064fee23f9Smrg    AC_DEFINE(HAVE_ASINF)
1074fee23f9Smrg    AC_DEFINE(HAVE_ATAN2F)
1084fee23f9Smrg    AC_DEFINE(HAVE_ATANF)
1094fee23f9Smrg    AC_DEFINE(HAVE_CEILF)
1104fee23f9Smrg    AC_DEFINE(HAVE_COSF)
1114fee23f9Smrg    AC_DEFINE(HAVE_COSHF)
1124fee23f9Smrg    AC_DEFINE(HAVE_EXPF)
1134fee23f9Smrg    AC_DEFINE(HAVE_FABSF)
1144fee23f9Smrg    AC_DEFINE(HAVE_FLOORF)
1154fee23f9Smrg    AC_DEFINE(HAVE_FMODF)
1164fee23f9Smrg    AC_DEFINE(HAVE_FREXPF)
1174fee23f9Smrg    AC_DEFINE(HAVE_LDEXPF)
1184fee23f9Smrg    AC_DEFINE(HAVE_LOG10F)
1194fee23f9Smrg    AC_DEFINE(HAVE_LOGF)
1204fee23f9Smrg    AC_DEFINE(HAVE_MODFF)
1214fee23f9Smrg    AC_DEFINE(HAVE_POWF)
1224fee23f9Smrg    AC_DEFINE(HAVE_SINF)
1234fee23f9Smrg    AC_DEFINE(HAVE_SINHF)
1244fee23f9Smrg    AC_DEFINE(HAVE_SQRTF)
1254fee23f9Smrg    AC_DEFINE(HAVE_TANF)
1264fee23f9Smrg    AC_DEFINE(HAVE_TANHF)
1274fee23f9Smrg    if test x"long_double_math_on_this_cpu" = x"yes"; then
1284fee23f9Smrg      AC_DEFINE(HAVE_FINITEL)
1294fee23f9Smrg      AC_DEFINE(HAVE_ISINFL)
1304fee23f9Smrg      AC_DEFINE(HAVE_ISNANL)
1314fee23f9Smrg    fi
132a41324a9Smrg    AC_CHECK_FUNCS(__cxa_thread_atexit)
133a41324a9Smrg    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
134654d12c0Smrg    AC_CHECK_FUNCS(timespec_get)
135654d12c0Smrg    AC_CHECK_FUNCS(sockatmark)
136*e9e6e0f6Smrg    AC_CHECK_FUNCS(uselocale)
1374fee23f9Smrg    ;;
138a41324a9Smrg
139a41324a9Smrg  *-fuchsia*)
140a41324a9Smrg    SECTION_FLAGS='-ffunction-sections -fdata-sections'
141a41324a9Smrg    AC_SUBST(SECTION_FLAGS)
142a41324a9Smrg    ;;
143a41324a9Smrg
1444fee23f9Smrg  *-hpux*)
1454fee23f9Smrg    SECTION_FLAGS='-ffunction-sections -fdata-sections'
1464fee23f9Smrg    AC_SUBST(SECTION_FLAGS)
1474fee23f9Smrg    GLIBCXX_CHECK_LINKER_FEATURES
1484fee23f9Smrg
1494fee23f9Smrg    # GLIBCXX_CHECK_MATH_SUPPORT
1504fee23f9Smrg    AC_DEFINE(HAVE_ISNAN)
1514fee23f9Smrg    AC_DEFINE(HAVE_HYPOT)
1524fee23f9Smrg    AC_DEFINE(HAVE_ACOSF)
1534fee23f9Smrg    AC_DEFINE(HAVE_ASINF)
1544fee23f9Smrg    AC_DEFINE(HAVE_ATANF)
1554fee23f9Smrg    AC_DEFINE(HAVE_COSF)
1564fee23f9Smrg    AC_DEFINE(HAVE_COSHF)
1574fee23f9Smrg    AC_DEFINE(HAVE_SINF)
1584fee23f9Smrg    AC_DEFINE(HAVE_SINHF)
1594fee23f9Smrg    AC_DEFINE(HAVE_TANF)
1604fee23f9Smrg    AC_DEFINE(HAVE_TANHF)
1614fee23f9Smrg    AC_DEFINE(HAVE_EXPF)
1624fee23f9Smrg    AC_DEFINE(HAVE_ATAN2F)
1634fee23f9Smrg    AC_DEFINE(HAVE_FABSF)
1644fee23f9Smrg    AC_DEFINE(HAVE_FMODF)
1654fee23f9Smrg    AC_DEFINE(HAVE_FREXPF)
1664fee23f9Smrg    AC_DEFINE(HAVE_LOGF)
1674fee23f9Smrg    AC_DEFINE(HAVE_LOG10F)
1684fee23f9Smrg    AC_DEFINE(HAVE_MODF)
1694fee23f9Smrg    AC_DEFINE(HAVE_POWF)
1704fee23f9Smrg    AC_DEFINE(HAVE_SQRTF)
1714fee23f9Smrg
1724fee23f9Smrg    # GLIBCXX_CHECK_STDLIB_SUPPORT
1734fee23f9Smrg    AC_DEFINE(HAVE_STRTOLD)
1744fee23f9Smrg
1754fee23f9Smrg    GCC_CHECK_TLS
1764fee23f9Smrg    case "$target" in
1774fee23f9Smrg      *-hpux10*)
1784fee23f9Smrg	AC_DEFINE(HAVE_ISINF)
1794fee23f9Smrg	AC_DEFINE(HAVE_ISINFF)
1804fee23f9Smrg	AC_DEFINE(HAVE_ISNANF)
1814fee23f9Smrg	AC_DEFINE(HAVE_FINITE)
1824fee23f9Smrg	AC_DEFINE(HAVE_FINITEF)
1834fee23f9Smrg	;;
1844fee23f9Smrg    esac
1854fee23f9Smrg    ;;
1863f8cba22Smrg  *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-cygwin* | *-solaris*)
1874fee23f9Smrg    GLIBCXX_CHECK_COMPILER_FEATURES
1884fee23f9Smrg    GLIBCXX_CHECK_LINKER_FEATURES
1894fee23f9Smrg    GLIBCXX_CHECK_MATH_SUPPORT
1904fee23f9Smrg    GLIBCXX_CHECK_STDLIB_SUPPORT
191654d12c0Smrg    AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
1924fee23f9Smrg    AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
1934fee23f9Smrg    GCC_CHECK_TLS
194cdbfa754Smrg    AC_CHECK_FUNCS(__cxa_thread_atexit_impl)
195a41324a9Smrg    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
196654d12c0Smrg    AC_CHECK_FUNCS(timespec_get)
197654d12c0Smrg    AC_CHECK_FUNCS(sockatmark)
198*e9e6e0f6Smrg    AC_CHECK_FUNCS(uselocale)
1994fee23f9Smrg    AM_ICONV
2004fee23f9Smrg    ;;
2014fee23f9Smrg  *-mingw32*)
2024fee23f9Smrg    GLIBCXX_CHECK_LINKER_FEATURES
2034fee23f9Smrg    GLIBCXX_CHECK_MATH_SUPPORT
2044fee23f9Smrg    GLIBCXX_CHECK_STDLIB_SUPPORT
205a41324a9Smrg    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
206654d12c0Smrg    AC_CHECK_FUNCS(_wfopen)
207*e9e6e0f6Smrg    GCC_CHECK_TLS
2084fee23f9Smrg    ;;
209654d12c0Smrg  *-netbsd* | *-openbsd*)
2104fee23f9Smrg    SECTION_FLAGS='-ffunction-sections -fdata-sections'
2114fee23f9Smrg    AC_SUBST(SECTION_FLAGS)
2124fee23f9Smrg    GLIBCXX_CHECK_LINKER_FEATURES
2132f4e9d03Smrg
2142f4e9d03Smrg    AC_DEFINE(HAVE_ICONV)
2152f4e9d03Smrg    AC_DEFINE(HAVE_ICONV_CLOSE)
2162f4e9d03Smrg    AC_DEFINE(HAVE_ICONV_OPEN)
2172f4e9d03Smrg    AC_DEFINE(HAVE_LC_MESSAGES)
2182f4e9d03Smrg
2192f4e9d03Smrg    AC_DEFINE(HAVE_MMAP)
2202f4e9d03Smrg    AC_DEFINE(HAVE_GETPAGESIZE)
2212f4e9d03Smrg    AC_DEFINE(HAVE_SETENV)
2222f4e9d03Smrg    AC_DEFINE(HAVE_SIGSETJMP)
2232f4e9d03Smrg
2244fee23f9Smrg    AC_DEFINE(HAVE_FINITEF)
2254fee23f9Smrg    AC_DEFINE(HAVE_FINITE)
2264fee23f9Smrg    AC_DEFINE(HAVE_FREXPF)
2272f4e9d03Smrg    AC_DEFINE(HAVE_HYPOT)
2284fee23f9Smrg    AC_DEFINE(HAVE_HYPOTF)
2294fee23f9Smrg    AC_DEFINE(HAVE_ISINF)
2304fee23f9Smrg    AC_DEFINE(HAVE_ISINFF)
2314fee23f9Smrg    AC_DEFINE(HAVE_ISNAN)
2324fee23f9Smrg    AC_DEFINE(HAVE_ISNANF)
2332f4e9d03Smrg    AC_DEFINE(HAVE_ACOSF)
2342f4e9d03Smrg    AC_DEFINE(HAVE_ASINF)
2352f4e9d03Smrg    AC_DEFINE(HAVE_ATAN2F)
2362f4e9d03Smrg    AC_DEFINE(HAVE_ATANF)
2372f4e9d03Smrg    AC_DEFINE(HAVE_CEILF)
2382f4e9d03Smrg    AC_DEFINE(HAVE_COSF)
2392f4e9d03Smrg    AC_DEFINE(HAVE_COSHF)
2402f4e9d03Smrg    AC_DEFINE(HAVE_EXPF)
2412f4e9d03Smrg    AC_DEFINE(HAVE_FABSF)
2422f4e9d03Smrg    AC_DEFINE(HAVE_FLOORF)
2432f4e9d03Smrg    AC_DEFINE(HAVE_FMODF)
2442f4e9d03Smrg    AC_DEFINE(HAVE_FREXPF)
2452f4e9d03Smrg    AC_DEFINE(HAVE_LDEXPF)
2462f4e9d03Smrg    AC_DEFINE(HAVE_LOG10F)
2472f4e9d03Smrg    AC_DEFINE(HAVE_LOGF)
2482f4e9d03Smrg    AC_DEFINE(HAVE_MODF)
2492f4e9d03Smrg    AC_DEFINE(HAVE_MODFF)
2502f4e9d03Smrg    AC_DEFINE(HAVE_POWF)
2512f4e9d03Smrg    AC_DEFINE(HAVE_SINF)
2522f4e9d03Smrg    AC_DEFINE(HAVE_SINHF)
2532f4e9d03Smrg    AC_DEFINE(HAVE_SQRTF)
2542f4e9d03Smrg    AC_DEFINE(HAVE_STRTOF)
2552f4e9d03Smrg    AC_DEFINE(HAVE_STRTOLD)
2562f4e9d03Smrg    AC_DEFINE(HAVE_TANF)
2572f4e9d03Smrg    AC_DEFINE(HAVE_TANHF)
2584fee23f9Smrg    if test x"long_double_math_on_this_cpu" = x"yes"; then
2594fee23f9Smrg      AC_DEFINE(HAVE_FINITEL)
2604fee23f9Smrg      AC_DEFINE(HAVE_ISINFL)
2614fee23f9Smrg      AC_DEFINE(HAVE_ISNANL)
2624fee23f9Smrg    fi
263a41324a9Smrg    AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
264654d12c0Smrg    AC_CHECK_FUNCS(timespec_get)
265654d12c0Smrg    AC_CHECK_FUNCS(sockatmark)
2664fee23f9Smrg    ;;
2674fee23f9Smrg  *-qnx6.1* | *-qnx6.2*)
2684fee23f9Smrg    SECTION_FLAGS='-ffunction-sections -fdata-sections'
2694fee23f9Smrg    AC_SUBST(SECTION_FLAGS)
2704fee23f9Smrg    GLIBCXX_CHECK_LINKER_FEATURES
2714fee23f9Smrg    AC_DEFINE(HAVE_COSF)
2724fee23f9Smrg    AC_DEFINE(HAVE_COSL)
2734fee23f9Smrg    AC_DEFINE(HAVE_COSHF)
2744fee23f9Smrg    AC_DEFINE(HAVE_COSHL)
2754fee23f9Smrg    AC_DEFINE(HAVE_LOGF)
2764fee23f9Smrg    AC_DEFINE(HAVE_LOGL)
2774fee23f9Smrg    AC_DEFINE(HAVE_LOG10F)
2784fee23f9Smrg    AC_DEFINE(HAVE_LOG10L)
2794fee23f9Smrg    AC_DEFINE(HAVE_SINF)
2804fee23f9Smrg    AC_DEFINE(HAVE_SINL)
2814fee23f9Smrg    AC_DEFINE(HAVE_SINHF)
2824fee23f9Smrg    AC_DEFINE(HAVE_SINHL)
2834fee23f9Smrg    ;;
28423da6d05Smrg  *-rtems*)
28523da6d05Smrg    GLIBCXX_CHECK_COMPILER_FEATURES
28623da6d05Smrg    GLIBCXX_CHECK_LINKER_FEATURES
28723da6d05Smrg    GLIBCXX_CHECK_MATH_SUPPORT
28823da6d05Smrg    GLIBCXX_CHECK_STDLIB_SUPPORT
28923da6d05Smrg    ;;
2904fee23f9Smrg  *-tpf)
2914fee23f9Smrg    SECTION_FLAGS='-ffunction-sections -fdata-sections'
29223da6d05Smrg    SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS'
2934fee23f9Smrg    AC_SUBST(SECTION_FLAGS)
2944fee23f9Smrg    AC_DEFINE(HAVE_FINITE)
2954fee23f9Smrg    AC_DEFINE(HAVE_FINITEF)
2964fee23f9Smrg    AC_DEFINE(HAVE_FREXPF)
2974fee23f9Smrg    AC_DEFINE(HAVE_HYPOTF)
2984fee23f9Smrg    AC_DEFINE(HAVE_ISINF)
2994fee23f9Smrg    AC_DEFINE(HAVE_ISINFF)
3004fee23f9Smrg    AC_DEFINE(HAVE_ISNAN)
3014fee23f9Smrg    AC_DEFINE(HAVE_ISNANF)
3024fee23f9Smrg    AC_DEFINE(HAVE_SINCOS)
3034fee23f9Smrg    AC_DEFINE(HAVE_SINCOSF)
3044fee23f9Smrg    if test x"long_double_math_on_this_cpu" = x"yes"; then
3054fee23f9Smrg      AC_DEFINE(HAVE_FINITEL)
3064fee23f9Smrg      AC_DEFINE(HAVE_HYPOTL)
3074fee23f9Smrg      AC_DEFINE(HAVE_ISINFL)
3084fee23f9Smrg      AC_DEFINE(HAVE_ISNANL)
3094fee23f9Smrg    fi
3104fee23f9Smrg    ;;
31123da6d05Smrg  *-*vms*)
31223da6d05Smrg    # Check for available headers.
31323da6d05Smrg    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld
31423da6d05Smrg    GLIBCXX_CHECK_MATH_SUPPORT
31523da6d05Smrg    GLIBCXX_CHECK_STDLIB_SUPPORT
31623da6d05Smrg    ;;
317*e9e6e0f6Smrg  *-vxworks*)
3184fee23f9Smrg    AC_DEFINE(HAVE_ACOSF)
3194fee23f9Smrg    AC_DEFINE(HAVE_ASINF)
3204fee23f9Smrg    AC_DEFINE(HAVE_ATAN2F)
3214fee23f9Smrg    AC_DEFINE(HAVE_ATANF)
3224fee23f9Smrg    AC_DEFINE(HAVE_CEILF)
3234fee23f9Smrg    AC_DEFINE(HAVE_COSF)
3244fee23f9Smrg    AC_DEFINE(HAVE_COSHF)
3254fee23f9Smrg    AC_DEFINE(HAVE_EXPF)
3264fee23f9Smrg    AC_DEFINE(HAVE_FABSF)
3274fee23f9Smrg    AC_DEFINE(HAVE_FLOORF)
3284fee23f9Smrg    AC_DEFINE(HAVE_FMODF)
3294fee23f9Smrg    AC_DEFINE(HAVE_HYPOT)
3304fee23f9Smrg    AC_DEFINE(HAVE_LOG10F)
3314fee23f9Smrg    AC_DEFINE(HAVE_LOGF)
3324fee23f9Smrg    AC_DEFINE(HAVE_POWF)
3334fee23f9Smrg    AC_DEFINE(HAVE_SINF)
3344fee23f9Smrg    AC_DEFINE(HAVE_SINHF)
3354fee23f9Smrg    AC_DEFINE(HAVE_SQRTF)
3364fee23f9Smrg    AC_DEFINE(HAVE_TANF)
3374fee23f9Smrg    AC_DEFINE(HAVE_TANHF)
33843265c03Smrg
33943265c03Smrgdnl # Different versions and execution modes implement different
34043265c03Smrgdnl # subsets of these functions.  Instead of hard-coding, test for C
34143265c03Smrgdnl # declarations in headers.  The C primitives could be defined as
34243265c03Smrgdnl # macros, in which case the tests might fail, and we might have to
34343265c03Smrgdnl # switch to more elaborate tests.
34443265c03Smrg    GLIBCXX_CHECK_MATH_DECLS([
34543265c03Smrg      acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl
346*e9e6e0f6Smrg      frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl hypotl
347*e9e6e0f6Smrg      ldexpf modff hypotf frexpf])
34843265c03Smrgdnl # sincosl is the only one missing here, compared with the *l
34943265c03Smrgdnl # functions in the list guarded by
35043265c03Smrgdnl # long_double_math_on_this_cpu in configure.ac, right after
35143265c03Smrgdnl # the expansion of the present macro.
3524fee23f9Smrg    ;;
3534fee23f9Smrg  *)
3544fee23f9Smrg    AC_MSG_ERROR([No support for this host/target combination.])
3554fee23f9Smrg   ;;
3564fee23f9Smrgesac
3574fee23f9Smrg])
35843265c03Smrg
35943265c03Smrg
36043265c03Smrgdnl
36143265c03Smrgdnl Check to see if the (math function) argument passed is
36243265c03Smrgdnl declared when using the c compiler
36343265c03Smrgdnl
36443265c03Smrgdnl Define HAVE_CARGF etc if "cargf" is declared
36543265c03Smrgdnl
36643265c03Smrgdnl argument 1 is name of function to check
36743265c03Smrgdnl
36843265c03Smrgdnl ASSUMES argument is a math function
36943265c03Smrgdnl
37043265c03Smrgdnl GLIBCXX_CHECK_MATH_DECL
37143265c03SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
37243265c03Smrg  AC_CACHE_CHECK([for $1 declaration],
37343265c03Smrg    [glibcxx_cv_func_$1_use], [
37443265c03Smrg      AC_LANG_SAVE
37543265c03Smrg      AC_LANG_C
37643265c03Smrg      AC_TRY_COMPILE([
37743265c03Smrg#include <math.h>
37843265c03Smrg#ifdef HAVE_IEEEFP_H
37943265c03Smrg# include <ieeefp.h>
38043265c03Smrg#endif
38143265c03Smrg#undef $1
38243265c03Smrg], [
38343265c03Smrg  void (*f)(void) = (void (*)(void))$1;
38443265c03Smrg], [glibcxx_cv_func_$1_use=yes
38543265c03Smrg], [glibcxx_cv_func_$1_use=no])])
38643265c03Smrg  if test "x$glibcxx_cv_func_$1_use" = xyes; then
38743265c03Smrg    AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]))
38843265c03Smrg  fi
38943265c03Smrg])
39043265c03Smrg
39143265c03Smrgdnl
39243265c03Smrgdnl Check to see whether multiple math functions are
39343265c03Smrgdnl declared when using the c compiler
39443265c03Smrgdnl
39543265c03Smrgdnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl"
39643265c03Smrgdnl are declared
39743265c03Smrgdnl
39843265c03Smrgdnl argument 1 is a word list naming function to check
39943265c03Smrgdnl
40043265c03Smrgdnl ASSUMES arguments are math functions
40143265c03Smrgdnl
40243265c03Smrgdnl GLIBCXX_CHECK_MATH_DECLS
40343265c03SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [
40443265c03Smrg  m4_foreach_w([glibcxx_func], [$1], [
40543265c03Smrg    GLIBCXX_CHECK_MATH_DECL(glibcxx_func)
40643265c03Smrg  ])
40743265c03Smrg])
408