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