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 ;; 177 *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-cygwin* | *-solaris*) 178 GLIBCXX_CHECK_COMPILER_FEATURES 179 GLIBCXX_CHECK_LINKER_FEATURES 180 GLIBCXX_CHECK_MATH_SUPPORT 181 GLIBCXX_CHECK_STDLIB_SUPPORT 182 AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM) 183 AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1) 184 GCC_CHECK_TLS 185 AC_CHECK_FUNCS(__cxa_thread_atexit_impl) 186 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) 187 AC_CHECK_FUNCS(timespec_get) 188 AC_CHECK_FUNCS(sockatmark) 189 AC_CHECK_FUNCS(uselocale) 190 AC_CHECK_FUNCS(secure_getenv) 191 AM_ICONV 192 ;; 193 *-mingw32*) 194 GLIBCXX_CHECK_LINKER_FEATURES 195 GLIBCXX_CHECK_MATH_SUPPORT 196 GLIBCXX_CHECK_STDLIB_SUPPORT 197 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) 198 AC_CHECK_FUNCS(_wfopen) 199 GCC_CHECK_TLS 200 ;; 201 *-netbsd* | *-openbsd*) 202 SECTION_FLAGS='-ffunction-sections -fdata-sections' 203 AC_SUBST(SECTION_FLAGS) 204 GLIBCXX_CHECK_LINKER_FEATURES 205 206 AC_DEFINE(HAVE_ICONV) 207 AC_DEFINE(HAVE_ICONV_CLOSE) 208 AC_DEFINE(HAVE_ICONV_OPEN) 209 AC_DEFINE(HAVE_LC_MESSAGES) 210 211 AC_DEFINE(HAVE_MMAP) 212 AC_DEFINE(HAVE_GETPAGESIZE) 213 AC_DEFINE(HAVE_SETENV) 214 AC_DEFINE(HAVE_SIGSETJMP) 215 216 AC_DEFINE(HAVE_FINITEF) 217 AC_DEFINE(HAVE_FINITE) 218 AC_DEFINE(HAVE_FREXPF) 219 AC_DEFINE(HAVE_HYPOT) 220 AC_DEFINE(HAVE_HYPOTF) 221 AC_DEFINE(HAVE_ISINF) 222 AC_DEFINE(HAVE_ISINFF) 223 AC_DEFINE(HAVE_ISNAN) 224 AC_DEFINE(HAVE_ISNANF) 225 AC_DEFINE(HAVE_ACOSF) 226 AC_DEFINE(HAVE_ASINF) 227 AC_DEFINE(HAVE_ATAN2F) 228 AC_DEFINE(HAVE_ATANF) 229 AC_DEFINE(HAVE_CEILF) 230 AC_DEFINE(HAVE_COSF) 231 AC_DEFINE(HAVE_COSHF) 232 AC_DEFINE(HAVE_EXPF) 233 AC_DEFINE(HAVE_FABSF) 234 AC_DEFINE(HAVE_FLOORF) 235 AC_DEFINE(HAVE_FMODF) 236 AC_DEFINE(HAVE_FREXPF) 237 AC_DEFINE(HAVE_LDEXPF) 238 AC_DEFINE(HAVE_LOG10F) 239 AC_DEFINE(HAVE_LOGF) 240 AC_DEFINE(HAVE_MODF) 241 AC_DEFINE(HAVE_MODFF) 242 AC_DEFINE(HAVE_POWF) 243 AC_DEFINE(HAVE_SINF) 244 AC_DEFINE(HAVE_SINHF) 245 AC_DEFINE(HAVE_SQRTF) 246 AC_DEFINE(HAVE_STRTOF) 247 AC_DEFINE(HAVE_STRTOLD) 248 AC_DEFINE(HAVE_TANF) 249 AC_DEFINE(HAVE_TANHF) 250 if test x"long_double_math_on_this_cpu" = x"yes"; then 251 AC_DEFINE(HAVE_FINITEL) 252 AC_DEFINE(HAVE_ISINFL) 253 AC_DEFINE(HAVE_ISNANL) 254 fi 255 AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) 256 AC_CHECK_FUNCS(timespec_get) 257 AC_CHECK_FUNCS(sockatmark) 258 ;; 259 *-qnx6.1* | *-qnx6.2*) 260 SECTION_FLAGS='-ffunction-sections -fdata-sections' 261 AC_SUBST(SECTION_FLAGS) 262 GLIBCXX_CHECK_LINKER_FEATURES 263 AC_DEFINE(HAVE_COSF) 264 AC_DEFINE(HAVE_COSL) 265 AC_DEFINE(HAVE_COSHF) 266 AC_DEFINE(HAVE_COSHL) 267 AC_DEFINE(HAVE_LOGF) 268 AC_DEFINE(HAVE_LOGL) 269 AC_DEFINE(HAVE_LOG10F) 270 AC_DEFINE(HAVE_LOG10L) 271 AC_DEFINE(HAVE_SINF) 272 AC_DEFINE(HAVE_SINL) 273 AC_DEFINE(HAVE_SINHF) 274 AC_DEFINE(HAVE_SINHL) 275 ;; 276 *-tpf) 277 SECTION_FLAGS='-ffunction-sections -fdata-sections' 278 SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS' 279 AC_SUBST(SECTION_FLAGS) 280 AC_DEFINE(HAVE_FINITE) 281 AC_DEFINE(HAVE_FINITEF) 282 AC_DEFINE(HAVE_FREXPF) 283 AC_DEFINE(HAVE_HYPOTF) 284 AC_DEFINE(HAVE_ISINF) 285 AC_DEFINE(HAVE_ISINFF) 286 AC_DEFINE(HAVE_ISNAN) 287 AC_DEFINE(HAVE_ISNANF) 288 AC_DEFINE(HAVE_SINCOS) 289 AC_DEFINE(HAVE_SINCOSF) 290 if test x"long_double_math_on_this_cpu" = x"yes"; then 291 AC_DEFINE(HAVE_FINITEL) 292 AC_DEFINE(HAVE_HYPOTL) 293 AC_DEFINE(HAVE_ISINFL) 294 AC_DEFINE(HAVE_ISNANL) 295 fi 296 ;; 297 *-*vms*) 298 # Check for available headers. 299 # Don't call GLIBCXX_CHECK_LINKER_FEATURES, VMS doesn't have a GNU ld 300 GLIBCXX_CHECK_MATH_SUPPORT 301 GLIBCXX_CHECK_STDLIB_SUPPORT 302 ;; 303 *-vxworks*) 304 AC_DEFINE(HAVE_ACOSF) 305 AC_DEFINE(HAVE_ASINF) 306 AC_DEFINE(HAVE_ATAN2F) 307 AC_DEFINE(HAVE_ATANF) 308 AC_DEFINE(HAVE_CEILF) 309 AC_DEFINE(HAVE_COSF) 310 AC_DEFINE(HAVE_COSHF) 311 AC_DEFINE(HAVE_EXPF) 312 AC_DEFINE(HAVE_FABSF) 313 AC_DEFINE(HAVE_FLOORF) 314 AC_DEFINE(HAVE_FMODF) 315 AC_DEFINE(HAVE_HYPOT) 316 AC_DEFINE(HAVE_LOG10F) 317 AC_DEFINE(HAVE_LOGF) 318 AC_DEFINE(HAVE_POWF) 319 AC_DEFINE(HAVE_SINF) 320 AC_DEFINE(HAVE_SINHF) 321 AC_DEFINE(HAVE_SQRTF) 322 AC_DEFINE(HAVE_TANF) 323 AC_DEFINE(HAVE_TANHF) 324 325 dnl # Different versions and execution modes implement different 326 dnl # subsets of these functions. Instead of hard-coding, test for C 327 dnl # declarations in headers. The C primitives could be defined as 328 dnl # macros, in which case the tests might fail, and we might have to 329 dnl # switch to more elaborate tests. 330 GLIBCXX_CHECK_MATH_DECLS([ 331 acosl asinl atan2l atanl ceill cosl coshl expl fabsl floorl fmodl 332 frexpl ldexpl log10l logl modfl powl sinl sinhl sqrtl tanl tanhl hypotl 333 ldexpf modff hypotf frexpf]) 334 dnl # sincosl is the only one missing here, compared with the *l 335 dnl # functions in the list guarded by 336 dnl # long_double_math_on_this_cpu in configure.ac, right after 337 dnl # the expansion of the present macro. 338 ;; 339 *) 340 AC_MSG_ERROR([No support for this host/target combination.]) 341 ;; 342 esac 343 ]) 344 345 346 dnl 347 dnl Check to see if the (math function) argument passed is 348 dnl declared when using the c compiler 349 dnl 350 dnl Define HAVE_CARGF etc if "cargf" is declared 351 dnl 352 dnl argument 1 is name of function to check 353 dnl 354 dnl ASSUMES argument is a math function 355 dnl 356 dnl GLIBCXX_CHECK_MATH_DECL 357 AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [ 358 AC_CACHE_CHECK([for $1 declaration], 359 [glibcxx_cv_func_$1_use], [ 360 AC_LANG_SAVE 361 AC_LANG_C 362 AC_TRY_COMPILE([ 363 #include <math.h> 364 #ifdef HAVE_IEEEFP_H 365 # include <ieeefp.h> 366 #endif 367 #undef $1 368 ], [ 369 void (*f)(void) = (void (*)(void))$1; 370 ], [glibcxx_cv_func_$1_use=yes 371 ], [glibcxx_cv_func_$1_use=no])]) 372 if test "x$glibcxx_cv_func_$1_use" = xyes; then 373 AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) 374 fi 375 ]) 376 377 dnl 378 dnl Check to see whether multiple math functions are 379 dnl declared when using the c compiler 380 dnl 381 dnl Define HAVE_CARGF HAVE_POWL etc if "cargf" and "powl" 382 dnl are declared 383 dnl 384 dnl argument 1 is a word list naming function to check 385 dnl 386 dnl ASSUMES arguments are math functions 387 dnl 388 dnl GLIBCXX_CHECK_MATH_DECLS 389 AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS], [ 390 m4_foreach_w([glibcxx_func], [$1], [ 391 GLIBCXX_CHECK_MATH_DECL(glibcxx_func) 392 ]) 393 ]) 394