1dnl 2dnl This file contains details for non-native builds. 3dnl 4 5AC_DEFUN([GLIBCXX_CROSSCONFIG],[ 6# Base decisions on target environment. 7case "${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 339dnl # Different versions and execution modes implement different 340dnl # subsets of these functions. Instead of hard-coding, test for C 341dnl # declarations in headers. The C primitives could be defined as 342dnl # macros, in which case the tests might fail, and we might have to 343dnl # 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]) 348dnl # sincosl is the only one missing here, compared with the *l 349dnl # functions in the list guarded by 350dnl # long_double_math_on_this_cpu in configure.ac, right after 351dnl # the expansion of the present macro. 352 ;; 353 *) 354 AC_MSG_ERROR([No support for this host/target combination.]) 355 ;; 356esac 357]) 358 359 360dnl 361dnl Check to see if the (math function) argument passed is 362dnl declared when using the c compiler 363dnl 364dnl Define HAVE_CARGF etc if "cargf" is declared 365dnl 366dnl argument 1 is name of function to check 367dnl 368dnl ASSUMES argument is a math function 369dnl 370dnl GLIBCXX_CHECK_MATH_DECL 371AC_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 391dnl 392dnl Check to see whether multiple math functions are 393dnl declared when using the c compiler 394dnl 395dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl" 396dnl are declared 397dnl 398dnl argument 1 is a word list naming function to check 399dnl 400dnl ASSUMES arguments are math functions 401dnl 402dnl GLIBCXX_CHECK_MATH_DECLS 403AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [ 404 m4_foreach_w([glibcxx_func], [$1], [ 405 GLIBCXX_CHECK_MATH_DECL(glibcxx_func) 406 ]) 407]) 408