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 case "$target" in *-hpux10*) AC_DEFINE(HAVE_ISINF) AC_DEFINE(HAVE_ISINFF) AC_DEFINE(HAVE_ISNANF) AC_DEFINE(HAVE_FINITE) AC_DEFINE(HAVE_FINITEF) ;; esac ;; *-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 #ifdef HAVE_IEEEFP_H # include #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) ]) ])