Home | History | Annotate | Line # | Download | only in libstdc++-v3
      1 dnl
      2 dnl This file contains details for non-native builds.
      3 dnl
      4 
      5 AC_DEFUN([GLIBCXX_CROSSCONFIG],[
      6 # Base decisions on target environment.
      7 case "${host}" in
      8   arm*-*-symbianelf*)
      9     # This is a freestanding configuration; there is nothing to do here.
     10     ;;
     11 
     12   avr*-*-*)
     13     AC_DEFINE(HAVE_ACOSF)
     14     AC_DEFINE(HAVE_ASINF)
     15     AC_DEFINE(HAVE_ATAN2F)
     16     AC_DEFINE(HAVE_ATANF)
     17     AC_DEFINE(HAVE_CEILF)
     18     AC_DEFINE(HAVE_COSF)
     19     AC_DEFINE(HAVE_COSHF)
     20     AC_DEFINE(HAVE_EXPF)
     21     AC_DEFINE(HAVE_FABSF)
     22     AC_DEFINE(HAVE_FLOORF)
     23     AC_DEFINE(HAVE_FMODF)
     24     AC_DEFINE(HAVE_FREXPF)
     25     AC_DEFINE(HAVE_SQRTF)
     26     AC_DEFINE(HAVE_HYPOTF)
     27     AC_DEFINE(HAVE_LDEXPF)
     28     AC_DEFINE(HAVE_LOG10F)
     29     AC_DEFINE(HAVE_LOGF)
     30     AC_DEFINE(HAVE_MODFF)
     31     AC_DEFINE(HAVE_POWF)
     32     AC_DEFINE(HAVE_SINF)
     33     AC_DEFINE(HAVE_SINHF)
     34     AC_DEFINE(HAVE_TANF)
     35     AC_DEFINE(HAVE_TANHF)
     36     ;;
     37 
     38   mips*-sde-elf*)
     39     # These definitions are for the SDE C library rather than newlib.
     40     SECTION_FLAGS='-ffunction-sections -fdata-sections'
     41     AC_SUBST(SECTION_FLAGS)
     42     GLIBCXX_CHECK_COMPILER_FEATURES
     43     GLIBCXX_CHECK_LINKER_FEATURES
     44     GLIBCXX_CHECK_MATH_SUPPORT
     45     GLIBCXX_CHECK_STDLIB_SUPPORT
     46 
     47     AC_DEFINE(HAVE_FINITE)
     48     AC_DEFINE(HAVE_HYPOT)
     49     AC_DEFINE(HAVE_ISNAN)
     50     AC_DEFINE(HAVE_ISINF)
     51 
     52     AC_DEFINE(HAVE_LDEXPF)
     53     AC_DEFINE(HAVE_MODF)
     54     AC_DEFINE(HAVE_SQRTF)
     55     ;;
     56 
     57   *-aix*)
     58     GLIBCXX_CHECK_LINKER_FEATURES
     59     GLIBCXX_CHECK_MATH_SUPPORT
     60     GLIBCXX_CHECK_STDLIB_SUPPORT
     61     AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
     62     AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
     63     # We don't yet support AIX's TLS ABI.
     64     #GCC_CHECK_TLS
     65     AM_ICONV
     66 
     67     AC_DEFINE(HAVE_USELOCALE)
     68     ;;
     69 
     70   *-darwin*)
     71     # Darwin versions vary, but the linker should work in a cross environment,
     72     # so we just check for all the features here.
     73     # Check for available headers.
     74 
     75     # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
     76     GLIBCXX_CHECK_MATH_SUPPORT
     77     GLIBCXX_CHECK_STDLIB_SUPPORT
     78 
     79     AC_CHECK_FUNCS(uselocale)
     80     ;;
     81 
     82   *djgpp)
     83     # GLIBCXX_CHECK_MATH_SUPPORT
     84     AC_DEFINE(HAVE_ISINF)
     85     AC_DEFINE(HAVE_ISNAN)
     86     AC_DEFINE(HAVE_FINITE)
     87     AC_DEFINE(HAVE_SINCOS)
     88     AC_DEFINE(HAVE_HYPOT)
     89     ;;
     90 
     91   *-freebsd*)
     92     SECTION_FLAGS='-ffunction-sections -fdata-sections'
     93     AC_SUBST(SECTION_FLAGS) 
     94     GLIBCXX_CHECK_LINKER_FEATURES
     95     AC_DEFINE(HAVE_SETENV)
     96     AC_DEFINE(HAVE_FINITEF)
     97     AC_DEFINE(HAVE_FINITE)
     98     AC_DEFINE(HAVE_FREXPF)
     99     AC_DEFINE(HAVE_HYPOT)
    100     AC_DEFINE(HAVE_HYPOTF)
    101     AC_DEFINE(HAVE_ISINF)
    102     AC_DEFINE(HAVE_ISNAN)
    103     AC_DEFINE(HAVE_ISNANF)
    104 
    105     AC_DEFINE(HAVE_ACOSF)
    106     AC_DEFINE(HAVE_ASINF)
    107     AC_DEFINE(HAVE_ATAN2F)
    108     AC_DEFINE(HAVE_ATANF)
    109     AC_DEFINE(HAVE_CEILF)
    110     AC_DEFINE(HAVE_COSF)
    111     AC_DEFINE(HAVE_COSHF)
    112     AC_DEFINE(HAVE_EXPF)
    113     AC_DEFINE(HAVE_FABSF)
    114     AC_DEFINE(HAVE_FLOORF)
    115     AC_DEFINE(HAVE_FMODF)
    116     AC_DEFINE(HAVE_FREXPF)
    117     AC_DEFINE(HAVE_LDEXPF)
    118     AC_DEFINE(HAVE_LOG10F)
    119     AC_DEFINE(HAVE_LOGF)
    120     AC_DEFINE(HAVE_MODFF)
    121     AC_DEFINE(HAVE_POWF)
    122     AC_DEFINE(HAVE_SINF)
    123     AC_DEFINE(HAVE_SINHF)
    124     AC_DEFINE(HAVE_SQRTF)
    125     AC_DEFINE(HAVE_TANF)
    126     AC_DEFINE(HAVE_TANHF)
    127     if test x"long_double_math_on_this_cpu" = x"yes"; then
    128       AC_DEFINE(HAVE_FINITEL)
    129       AC_DEFINE(HAVE_ISINFL)
    130       AC_DEFINE(HAVE_ISNANL)
    131     fi
    132     AC_CHECK_FUNCS(__cxa_thread_atexit)
    133     AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
    134     AC_CHECK_FUNCS(timespec_get)
    135     AC_CHECK_FUNCS(sockatmark)
    136     AC_CHECK_FUNCS(uselocale)
    137     ;;
    138 
    139   *-fuchsia*)
    140     SECTION_FLAGS='-ffunction-sections -fdata-sections'
    141     AC_SUBST(SECTION_FLAGS)
    142     ;;
    143 
    144   *-hpux*)
    145     SECTION_FLAGS='-ffunction-sections -fdata-sections'
    146     AC_SUBST(SECTION_FLAGS)
    147     GLIBCXX_CHECK_LINKER_FEATURES
    148 
    149     # GLIBCXX_CHECK_MATH_SUPPORT
    150     AC_DEFINE(HAVE_ISNAN)
    151     AC_DEFINE(HAVE_HYPOT)
    152     AC_DEFINE(HAVE_ACOSF)
    153     AC_DEFINE(HAVE_ASINF)
    154     AC_DEFINE(HAVE_ATANF)
    155     AC_DEFINE(HAVE_COSF)
    156     AC_DEFINE(HAVE_COSHF)
    157     AC_DEFINE(HAVE_SINF)
    158     AC_DEFINE(HAVE_SINHF)
    159     AC_DEFINE(HAVE_TANF)
    160     AC_DEFINE(HAVE_TANHF)
    161     AC_DEFINE(HAVE_EXPF)
    162     AC_DEFINE(HAVE_ATAN2F)
    163     AC_DEFINE(HAVE_FABSF)
    164     AC_DEFINE(HAVE_FMODF)
    165     AC_DEFINE(HAVE_FREXPF)
    166     AC_DEFINE(HAVE_LOGF)
    167     AC_DEFINE(HAVE_LOG10F)
    168     AC_DEFINE(HAVE_MODF)
    169     AC_DEFINE(HAVE_POWF)
    170     AC_DEFINE(HAVE_SQRTF)
    171 
    172     # GLIBCXX_CHECK_STDLIB_SUPPORT
    173     AC_DEFINE(HAVE_STRTOLD)
    174 
    175     GCC_CHECK_TLS
    176     case "$target" in
    177       *-hpux10*)
    178 	AC_DEFINE(HAVE_ISINF)
    179 	AC_DEFINE(HAVE_ISINFF)
    180 	AC_DEFINE(HAVE_ISNANF)
    181 	AC_DEFINE(HAVE_FINITE)
    182 	AC_DEFINE(HAVE_FINITEF)
    183 	;;
    184     esac
    185     ;;
    186   *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-cygwin* | *-solaris*)
    187     GLIBCXX_CHECK_COMPILER_FEATURES
    188     GLIBCXX_CHECK_LINKER_FEATURES
    189     GLIBCXX_CHECK_MATH_SUPPORT
    190     GLIBCXX_CHECK_STDLIB_SUPPORT
    191     AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM)
    192     AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
    193     GCC_CHECK_TLS
    194     AC_CHECK_FUNCS(__cxa_thread_atexit_impl)
    195     AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
    196     AC_CHECK_FUNCS(timespec_get)
    197     AC_CHECK_FUNCS(sockatmark)
    198     AC_CHECK_FUNCS(uselocale)
    199     AM_ICONV
    200     ;;
    201   *-mingw32*)
    202     GLIBCXX_CHECK_LINKER_FEATURES
    203     GLIBCXX_CHECK_MATH_SUPPORT
    204     GLIBCXX_CHECK_STDLIB_SUPPORT
    205     AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
    206     AC_CHECK_FUNCS(_wfopen)
    207     GCC_CHECK_TLS
    208     ;;
    209   *-netbsd* | *-openbsd*)
    210     SECTION_FLAGS='-ffunction-sections -fdata-sections'
    211     AC_SUBST(SECTION_FLAGS) 
    212     GLIBCXX_CHECK_LINKER_FEATURES
    213 
    214     AC_DEFINE(HAVE_ICONV)
    215     AC_DEFINE(HAVE_ICONV_CLOSE)
    216     AC_DEFINE(HAVE_ICONV_OPEN)
    217     AC_DEFINE(HAVE_LC_MESSAGES)
    218 
    219     AC_DEFINE(HAVE_MMAP)
    220     AC_DEFINE(HAVE_GETPAGESIZE)
    221     AC_DEFINE(HAVE_SETENV)
    222     AC_DEFINE(HAVE_SIGSETJMP)
    223 
    224     AC_DEFINE(HAVE_FINITEF)
    225     AC_DEFINE(HAVE_FINITE)
    226     AC_DEFINE(HAVE_FREXPF)
    227     AC_DEFINE(HAVE_HYPOT)
    228     AC_DEFINE(HAVE_HYPOTF)
    229     AC_DEFINE(HAVE_ISINF)
    230     AC_DEFINE(HAVE_ISINFF)
    231     AC_DEFINE(HAVE_ISNAN)
    232     AC_DEFINE(HAVE_ISNANF)
    233     AC_DEFINE(HAVE_ACOSF)
    234     AC_DEFINE(HAVE_ASINF)
    235     AC_DEFINE(HAVE_ATAN2F)
    236     AC_DEFINE(HAVE_ATANF)
    237     AC_DEFINE(HAVE_CEILF)
    238     AC_DEFINE(HAVE_COSF)
    239     AC_DEFINE(HAVE_COSHF)
    240     AC_DEFINE(HAVE_EXPF)
    241     AC_DEFINE(HAVE_FABSF)
    242     AC_DEFINE(HAVE_FLOORF)
    243     AC_DEFINE(HAVE_FMODF)
    244     AC_DEFINE(HAVE_FREXPF)
    245     AC_DEFINE(HAVE_LDEXPF)
    246     AC_DEFINE(HAVE_LOG10F)
    247     AC_DEFINE(HAVE_LOGF)
    248     AC_DEFINE(HAVE_MODF)
    249     AC_DEFINE(HAVE_MODFF)
    250     AC_DEFINE(HAVE_POWF)
    251     AC_DEFINE(HAVE_SINF)
    252     AC_DEFINE(HAVE_SINHF)
    253     AC_DEFINE(HAVE_SQRTF)
    254     AC_DEFINE(HAVE_STRTOF)
    255     AC_DEFINE(HAVE_STRTOLD)
    256     AC_DEFINE(HAVE_TANF)
    257     AC_DEFINE(HAVE_TANHF)
    258     if test x"long_double_math_on_this_cpu" = x"yes"; then
    259       AC_DEFINE(HAVE_FINITEL)
    260       AC_DEFINE(HAVE_ISINFL)
    261       AC_DEFINE(HAVE_ISNANL)
    262     fi
    263     AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
    264     AC_CHECK_FUNCS(timespec_get)
    265     AC_CHECK_FUNCS(sockatmark)
    266     ;;
    267   *-qnx6.1* | *-qnx6.2*)
    268     SECTION_FLAGS='-ffunction-sections -fdata-sections'
    269     AC_SUBST(SECTION_FLAGS) 
    270     GLIBCXX_CHECK_LINKER_FEATURES
    271     AC_DEFINE(HAVE_COSF)
    272     AC_DEFINE(HAVE_COSL)
    273     AC_DEFINE(HAVE_COSHF)
    274     AC_DEFINE(HAVE_COSHL)
    275     AC_DEFINE(HAVE_LOGF)
    276     AC_DEFINE(HAVE_LOGL)
    277     AC_DEFINE(HAVE_LOG10F)
    278     AC_DEFINE(HAVE_LOG10L)
    279     AC_DEFINE(HAVE_SINF)
    280     AC_DEFINE(HAVE_SINL)
    281     AC_DEFINE(HAVE_SINHF)
    282     AC_DEFINE(HAVE_SINHL)
    283     ;;
    284   *-rtems*)
    285     GLIBCXX_CHECK_COMPILER_FEATURES
    286     GLIBCXX_CHECK_LINKER_FEATURES
    287     GLIBCXX_CHECK_MATH_SUPPORT
    288     GLIBCXX_CHECK_STDLIB_SUPPORT
    289     ;;
    290   *-tpf)
    291     SECTION_FLAGS='-ffunction-sections -fdata-sections'
    292     SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS'
    293     AC_SUBST(SECTION_FLAGS)
    294     AC_DEFINE(HAVE_FINITE)
    295     AC_DEFINE(HAVE_FINITEF)
    296     AC_DEFINE(HAVE_FREXPF)
    297     AC_DEFINE(HAVE_HYPOTF)
    298     AC_DEFINE(HAVE_ISINF)
    299     AC_DEFINE(HAVE_ISINFF)
    300     AC_DEFINE(HAVE_ISNAN)
    301     AC_DEFINE(HAVE_ISNANF)
    302     AC_DEFINE(HAVE_SINCOS)
    303     AC_DEFINE(HAVE_SINCOSF)
    304     if test x"long_double_math_on_this_cpu" = x"yes"; then
    305       AC_DEFINE(HAVE_FINITEL)
    306       AC_DEFINE(HAVE_HYPOTL)
    307       AC_DEFINE(HAVE_ISINFL)
    308       AC_DEFINE(HAVE_ISNANL)
    309     fi
    310     ;;
    311   *-*vms*)
    312     # Check for available headers.
    313     # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld
    314     GLIBCXX_CHECK_MATH_SUPPORT
    315     GLIBCXX_CHECK_STDLIB_SUPPORT
    316     ;;
    317   *-vxworks*)
    318     AC_DEFINE(HAVE_ACOSF)
    319     AC_DEFINE(HAVE_ASINF)
    320     AC_DEFINE(HAVE_ATAN2F)
    321     AC_DEFINE(HAVE_ATANF)
    322     AC_DEFINE(HAVE_CEILF)
    323     AC_DEFINE(HAVE_COSF)
    324     AC_DEFINE(HAVE_COSHF)
    325     AC_DEFINE(HAVE_EXPF)
    326     AC_DEFINE(HAVE_FABSF)
    327     AC_DEFINE(HAVE_FLOORF)
    328     AC_DEFINE(HAVE_FMODF)
    329     AC_DEFINE(HAVE_HYPOT)
    330     AC_DEFINE(HAVE_LOG10F)
    331     AC_DEFINE(HAVE_LOGF)
    332     AC_DEFINE(HAVE_POWF)
    333     AC_DEFINE(HAVE_SINF)
    334     AC_DEFINE(HAVE_SINHF)
    335     AC_DEFINE(HAVE_SQRTF)
    336     AC_DEFINE(HAVE_TANF)
    337     AC_DEFINE(HAVE_TANHF)
    338 
    339 dnl # Different versions and execution modes implement different
    340 dnl # subsets of these functions.  Instead of hard-coding, test for C
    341 dnl # declarations in headers.  The C primitives could be defined as
    342 dnl # macros, in which case the tests might fail, and we might have to
    343 dnl # switch to more elaborate tests.
    344     GLIBCXX_CHECK_MATH_DECLS([
    345       acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl
    346       frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl hypotl
    347       ldexpf modff hypotf frexpf])
    348 dnl # sincosl is the only one missing here, compared with the *l
    349 dnl # functions in the list guarded by
    350 dnl # long_double_math_on_this_cpu in configure.ac, right after
    351 dnl # the expansion of the present macro.
    352     ;;
    353   *)
    354     AC_MSG_ERROR([No support for this host/target combination.])
    355    ;;
    356 esac
    357 ])
    358 
    359 
    360 dnl
    361 dnl Check to see if the (math function) argument passed is
    362 dnl declared when using the c compiler
    363 dnl
    364 dnl Define HAVE_CARGF etc if "cargf" is declared
    365 dnl
    366 dnl argument 1 is name of function to check
    367 dnl
    368 dnl ASSUMES argument is a math function
    369 dnl
    370 dnl GLIBCXX_CHECK_MATH_DECL
    371 AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
    372   AC_CACHE_CHECK([for $1 declaration],
    373     [glibcxx_cv_func_$1_use], [
    374       AC_LANG_SAVE
    375       AC_LANG_C
    376       AC_TRY_COMPILE([
    377 #include <math.h>
    378 #ifdef HAVE_IEEEFP_H
    379 # include <ieeefp.h>
    380 #endif
    381 #undef $1
    382 ], [
    383   void (*f)(void) = (void (*)(void))$1;
    384 ], [glibcxx_cv_func_$1_use=yes
    385 ], [glibcxx_cv_func_$1_use=no])])
    386   if test "x$glibcxx_cv_func_$1_use" = xyes; then
    387     AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]))
    388   fi
    389 ])
    390 
    391 dnl
    392 dnl Check to see whether multiple math functions are
    393 dnl declared when using the c compiler
    394 dnl
    395 dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl"
    396 dnl are declared
    397 dnl
    398 dnl argument 1 is a word list naming function to check
    399 dnl
    400 dnl ASSUMES arguments are math functions
    401 dnl
    402 dnl GLIBCXX_CHECK_MATH_DECLS
    403 AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [
    404   m4_foreach_w([glibcxx_func], [$1], [
    405     GLIBCXX_CHECK_MATH_DECL(glibcxx_func)
    406   ])
    407 ])
    408