| dnl |
| dnl This file contains details for non-native builds. |
| dnl |
| |
| AC_DEFUN([GLIBCXX_CROSSCONFIG],[ |
| # Base decisions on target environment. |
| case "${host}" in |
| arm*-*-symbianelf*) |
| # This is a freestanding configuration; there is nothing to do here. |
| ;; |
| |
| avr*-*-*) |
| AC_DEFINE(HAVE_ACOSF) |
| AC_DEFINE(HAVE_ASINF) |
| AC_DEFINE(HAVE_ATAN2F) |
| AC_DEFINE(HAVE_ATANF) |
| AC_DEFINE(HAVE_CEILF) |
| AC_DEFINE(HAVE_COSF) |
| AC_DEFINE(HAVE_COSHF) |
| AC_DEFINE(HAVE_EXPF) |
| AC_DEFINE(HAVE_FABSF) |
| AC_DEFINE(HAVE_FLOORF) |
| AC_DEFINE(HAVE_FMODF) |
| AC_DEFINE(HAVE_FREXPF) |
| AC_DEFINE(HAVE_SQRTF) |
| AC_DEFINE(HAVE_HYPOTF) |
| AC_DEFINE(HAVE_LDEXPF) |
| AC_DEFINE(HAVE_LOG10F) |
| AC_DEFINE(HAVE_LOGF) |
| AC_DEFINE(HAVE_MODFF) |
| AC_DEFINE(HAVE_POWF) |
| AC_DEFINE(HAVE_SINF) |
| AC_DEFINE(HAVE_SINHF) |
| AC_DEFINE(HAVE_TANF) |
| AC_DEFINE(HAVE_TANHF) |
| ;; |
| |
| mips*-sde-elf*) |
| # These definitions are for the SDE C library rather than newlib. |
| SECTION_FLAGS='-ffunction-sections -fdata-sections' |
| AC_SUBST(SECTION_FLAGS) |
| GLIBCXX_CHECK_COMPILER_FEATURES |
| GLIBCXX_CHECK_LINKER_FEATURES |
| GLIBCXX_CHECK_MATH_SUPPORT |
| GLIBCXX_CHECK_STDLIB_SUPPORT |
| |
| AC_DEFINE(HAVE_FINITE) |
| AC_DEFINE(HAVE_HYPOT) |
| AC_DEFINE(HAVE_ISNAN) |
| AC_DEFINE(HAVE_ISINF) |
| |
| AC_DEFINE(HAVE_LDEXPF) |
| AC_DEFINE(HAVE_MODF) |
| AC_DEFINE(HAVE_SQRTF) |
| ;; |
| |
| *-aix*) |
| GLIBCXX_CHECK_LINKER_FEATURES |
| GLIBCXX_CHECK_MATH_SUPPORT |
| GLIBCXX_CHECK_STDLIB_SUPPORT |
| AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM) |
| AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1) |
| # We don't yet support AIX's TLS ABI. |
| #GCC_CHECK_TLS |
| AM_ICONV |
| |
| AC_DEFINE(HAVE_USELOCALE) |
| ;; |
| |
| *-darwin*) |
| # Darwin versions vary, but the linker should work in a cross environment, |
| # so we just check for all the features here. |
| # Check for available headers. |
| |
| # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld |
| GLIBCXX_CHECK_MATH_SUPPORT |
| GLIBCXX_CHECK_STDLIB_SUPPORT |
| |
| AC_CHECK_FUNCS(uselocale) |
| ;; |
| |
| *djgpp) |
| # GLIBCXX_CHECK_MATH_SUPPORT |
| AC_DEFINE(HAVE_ISINF) |
| AC_DEFINE(HAVE_ISNAN) |
| AC_DEFINE(HAVE_FINITE) |
| AC_DEFINE(HAVE_SINCOS) |
| AC_DEFINE(HAVE_HYPOT) |
| ;; |
| |
| *-freebsd*) |
| SECTION_FLAGS='-ffunction-sections -fdata-sections' |
| AC_SUBST(SECTION_FLAGS) |
| GLIBCXX_CHECK_LINKER_FEATURES |
| AC_DEFINE(HAVE_SETENV) |
| AC_DEFINE(HAVE_FINITEF) |
| AC_DEFINE(HAVE_FINITE) |
| AC_DEFINE(HAVE_FREXPF) |
| AC_DEFINE(HAVE_HYPOT) |
| AC_DEFINE(HAVE_HYPOTF) |
| AC_DEFINE(HAVE_ISINF) |
| AC_DEFINE(HAVE_ISNAN) |
| AC_DEFINE(HAVE_ISNANF) |
| |
| AC_DEFINE(HAVE_ACOSF) |
| AC_DEFINE(HAVE_ASINF) |
| AC_DEFINE(HAVE_ATAN2F) |
| AC_DEFINE(HAVE_ATANF) |
| AC_DEFINE(HAVE_CEILF) |
| AC_DEFINE(HAVE_COSF) |
| AC_DEFINE(HAVE_COSHF) |
| AC_DEFINE(HAVE_EXPF) |
| AC_DEFINE(HAVE_FABSF) |
| AC_DEFINE(HAVE_FLOORF) |
| AC_DEFINE(HAVE_FMODF) |
| AC_DEFINE(HAVE_FREXPF) |
| AC_DEFINE(HAVE_LDEXPF) |
| AC_DEFINE(HAVE_LOG10F) |
| AC_DEFINE(HAVE_LOGF) |
| AC_DEFINE(HAVE_MODFF) |
| AC_DEFINE(HAVE_POWF) |
| AC_DEFINE(HAVE_SINF) |
| AC_DEFINE(HAVE_SINHF) |
| AC_DEFINE(HAVE_SQRTF) |
| AC_DEFINE(HAVE_TANF) |
| AC_DEFINE(HAVE_TANHF) |
| if test x"long_double_math_on_this_cpu" = x"yes"; then |
| AC_DEFINE(HAVE_FINITEL) |
| AC_DEFINE(HAVE_ISINFL) |
| AC_DEFINE(HAVE_ISNANL) |
| fi |
| AC_CHECK_FUNCS(__cxa_thread_atexit) |
| AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) |
| AC_CHECK_FUNCS(timespec_get) |
| AC_CHECK_FUNCS(sockatmark) |
| AC_CHECK_FUNCS(uselocale) |
| ;; |
| |
| *-fuchsia*) |
| SECTION_FLAGS='-ffunction-sections -fdata-sections' |
| AC_SUBST(SECTION_FLAGS) |
| ;; |
| |
| *-hpux*) |
| SECTION_FLAGS='-ffunction-sections -fdata-sections' |
| AC_SUBST(SECTION_FLAGS) |
| GLIBCXX_CHECK_LINKER_FEATURES |
| |
| # GLIBCXX_CHECK_MATH_SUPPORT |
| AC_DEFINE(HAVE_ISNAN) |
| AC_DEFINE(HAVE_HYPOT) |
| AC_DEFINE(HAVE_ACOSF) |
| AC_DEFINE(HAVE_ASINF) |
| AC_DEFINE(HAVE_ATANF) |
| AC_DEFINE(HAVE_COSF) |
| AC_DEFINE(HAVE_COSHF) |
| AC_DEFINE(HAVE_SINF) |
| AC_DEFINE(HAVE_SINHF) |
| AC_DEFINE(HAVE_TANF) |
| AC_DEFINE(HAVE_TANHF) |
| AC_DEFINE(HAVE_EXPF) |
| AC_DEFINE(HAVE_ATAN2F) |
| AC_DEFINE(HAVE_FABSF) |
| AC_DEFINE(HAVE_FMODF) |
| AC_DEFINE(HAVE_FREXPF) |
| AC_DEFINE(HAVE_LOGF) |
| AC_DEFINE(HAVE_LOG10F) |
| AC_DEFINE(HAVE_MODF) |
| AC_DEFINE(HAVE_POWF) |
| AC_DEFINE(HAVE_SQRTF) |
| |
| # GLIBCXX_CHECK_STDLIB_SUPPORT |
| AC_DEFINE(HAVE_STRTOLD) |
| |
| GCC_CHECK_TLS |
| ;; |
| *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-cygwin* | *-solaris*) |
| GLIBCXX_CHECK_COMPILER_FEATURES |
| GLIBCXX_CHECK_LINKER_FEATURES |
| GLIBCXX_CHECK_MATH_SUPPORT |
| GLIBCXX_CHECK_STDLIB_SUPPORT |
| AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM) |
| AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1) |
| GCC_CHECK_TLS |
| AC_CHECK_FUNCS(__cxa_thread_atexit_impl) |
| AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) |
| AC_CHECK_FUNCS(timespec_get) |
| AC_CHECK_FUNCS(sockatmark) |
| AC_CHECK_FUNCS(uselocale) |
| AM_ICONV |
| ;; |
| *-mingw32*) |
| GLIBCXX_CHECK_LINKER_FEATURES |
| GLIBCXX_CHECK_MATH_SUPPORT |
| GLIBCXX_CHECK_STDLIB_SUPPORT |
| AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) |
| AC_CHECK_FUNCS(_wfopen) |
| GCC_CHECK_TLS |
| ;; |
| *-netbsd* | *-openbsd*) |
| SECTION_FLAGS='-ffunction-sections -fdata-sections' |
| AC_SUBST(SECTION_FLAGS) |
| GLIBCXX_CHECK_LINKER_FEATURES |
| AC_DEFINE(HAVE_FINITEF) |
| AC_DEFINE(HAVE_FINITE) |
| AC_DEFINE(HAVE_FREXPF) |
| AC_DEFINE(HAVE_HYPOTF) |
| AC_DEFINE(HAVE_ISINF) |
| AC_DEFINE(HAVE_ISINFF) |
| AC_DEFINE(HAVE_ISNAN) |
| AC_DEFINE(HAVE_ISNANF) |
| if test x"long_double_math_on_this_cpu" = x"yes"; then |
| AC_DEFINE(HAVE_FINITEL) |
| AC_DEFINE(HAVE_ISINFL) |
| AC_DEFINE(HAVE_ISNANL) |
| fi |
| AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) |
| AC_CHECK_FUNCS(timespec_get) |
| AC_CHECK_FUNCS(sockatmark) |
| ;; |
| *-qnx6.1* | *-qnx6.2*) |
| SECTION_FLAGS='-ffunction-sections -fdata-sections' |
| AC_SUBST(SECTION_FLAGS) |
| GLIBCXX_CHECK_LINKER_FEATURES |
| AC_DEFINE(HAVE_COSF) |
| AC_DEFINE(HAVE_COSL) |
| AC_DEFINE(HAVE_COSHF) |
| AC_DEFINE(HAVE_COSHL) |
| AC_DEFINE(HAVE_LOGF) |
| AC_DEFINE(HAVE_LOGL) |
| AC_DEFINE(HAVE_LOG10F) |
| AC_DEFINE(HAVE_LOG10L) |
| AC_DEFINE(HAVE_SINF) |
| AC_DEFINE(HAVE_SINL) |
| AC_DEFINE(HAVE_SINHF) |
| AC_DEFINE(HAVE_SINHL) |
| ;; |
| *-tpf) |
| SECTION_FLAGS='-ffunction-sections -fdata-sections' |
| SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS' |
| AC_SUBST(SECTION_FLAGS) |
| AC_DEFINE(HAVE_FINITE) |
| AC_DEFINE(HAVE_FINITEF) |
| AC_DEFINE(HAVE_FREXPF) |
| AC_DEFINE(HAVE_HYPOTF) |
| AC_DEFINE(HAVE_ISINF) |
| AC_DEFINE(HAVE_ISINFF) |
| AC_DEFINE(HAVE_ISNAN) |
| AC_DEFINE(HAVE_ISNANF) |
| AC_DEFINE(HAVE_SINCOS) |
| AC_DEFINE(HAVE_SINCOSF) |
| if test x"long_double_math_on_this_cpu" = x"yes"; then |
| AC_DEFINE(HAVE_FINITEL) |
| AC_DEFINE(HAVE_HYPOTL) |
| AC_DEFINE(HAVE_ISINFL) |
| AC_DEFINE(HAVE_ISNANL) |
| fi |
| ;; |
| *-*vms*) |
| # Check for available headers. |
| # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld |
| GLIBCXX_CHECK_MATH_SUPPORT |
| GLIBCXX_CHECK_STDLIB_SUPPORT |
| ;; |
| *-vxworks*) |
| AC_DEFINE(HAVE_ACOSF) |
| AC_DEFINE(HAVE_ASINF) |
| AC_DEFINE(HAVE_ATAN2F) |
| AC_DEFINE(HAVE_ATANF) |
| AC_DEFINE(HAVE_CEILF) |
| AC_DEFINE(HAVE_COSF) |
| AC_DEFINE(HAVE_COSHF) |
| AC_DEFINE(HAVE_EXPF) |
| AC_DEFINE(HAVE_FABSF) |
| AC_DEFINE(HAVE_FLOORF) |
| AC_DEFINE(HAVE_FMODF) |
| AC_DEFINE(HAVE_HYPOT) |
| AC_DEFINE(HAVE_LOG10F) |
| AC_DEFINE(HAVE_LOGF) |
| AC_DEFINE(HAVE_POWF) |
| AC_DEFINE(HAVE_SINF) |
| AC_DEFINE(HAVE_SINHF) |
| AC_DEFINE(HAVE_SQRTF) |
| AC_DEFINE(HAVE_TANF) |
| AC_DEFINE(HAVE_TANHF) |
| |
| dnl # Different versions and execution modes implement different |
| dnl # subsets of these functions. Instead of hard-coding, test for C |
| dnl # declarations in headers. The C primitives could be defined as |
| dnl # macros, in which case the tests might fail, and we might have to |
| dnl # switch to more elaborate tests. |
| GLIBCXX_CHECK_MATH_DECLS([ |
| acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl |
| frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl hypotl |
| ldexpf modff hypotf frexpf]) |
| dnl # sincosl is the only one missing here, compared with the *l |
| dnl # functions in the list guarded by |
| dnl # long_double_math_on_this_cpu in configure.ac, right after |
| dnl # the expansion of the present macro. |
| ;; |
| *) |
| AC_MSG_ERROR([No support for this host/target combination.]) |
| ;; |
| esac |
| ]) |
| |
| |
| dnl |
| dnl Check to see if the (math function) argument passed is |
| dnl declared when using the c compiler |
| dnl |
| dnl Define HAVE_CARGF etc if "cargf" is declared |
| dnl |
| dnl argument 1 is name of function to check |
| dnl |
| dnl ASSUMES argument is a math function |
| dnl |
| dnl GLIBCXX_CHECK_MATH_DECL |
| AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [ |
| AC_CACHE_CHECK([for $1 declaration], |
| [glibcxx_cv_func_$1_use], [ |
| AC_LANG_SAVE |
| AC_LANG_C |
| AC_TRY_COMPILE([ |
| #include <math.h> |
| #ifdef HAVE_IEEEFP_H |
| # include <ieeefp.h> |
| #endif |
| #undef $1 |
| ], [ |
| void (*f)(void) = (void (*)(void))$1; |
| ], [glibcxx_cv_func_$1_use=yes |
| ], [glibcxx_cv_func_$1_use=no])]) |
| if test "x$glibcxx_cv_func_$1_use" = xyes; then |
| AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) |
| fi |
| ]) |
| |
| dnl |
| dnl Check to see whether multiple math functions are |
| dnl declared when using the c compiler |
| dnl |
| dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl" |
| dnl are declared |
| dnl |
| dnl argument 1 is a word list naming function to check |
| dnl |
| dnl ASSUMES arguments are math functions |
| dnl |
| dnl GLIBCXX_CHECK_MATH_DECLS |
| AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [ |
| m4_foreach_w([glibcxx_func], [$1], [ |
| GLIBCXX_CHECK_MATH_DECL(glibcxx_func) |
| ]) |
| ]) |