123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 |
- 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)
- ;;
- *-rtems*)
- GLIBCXX_CHECK_COMPILER_FEATURES
- GLIBCXX_CHECK_LINKER_FEATURES
- GLIBCXX_CHECK_MATH_SUPPORT
- GLIBCXX_CHECK_STDLIB_SUPPORT
- ;;
- *-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)
- ])
- ])
|