1132720Skandnl 2132720Skandnl This file contains macros for testing linkage. 3132720Skandnl 4132720Skan 5132720Skandnl 6132720Skandnl Check to see if the (math function) argument passed is 7132720Skandnl declared when using the c++ compiler 8132720Skandnl ASSUMES argument is a math function with ONE parameter 9132720Skandnl 10132720Skandnl GLIBCXX_CHECK_MATH_DECL_1 11132720SkanAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [ 12132720Skan AC_MSG_CHECKING([for $1 declaration]) 13132720Skan if test x${glibcxx_cv_func_$1_use+set} != xset; then 14132720Skan AC_CACHE_VAL(glibcxx_cv_func_$1_use, [ 15132720Skan AC_LANG_SAVE 16132720Skan AC_LANG_CPLUSPLUS 17132720Skan AC_TRY_COMPILE([#include <math.h> 18132720Skan #ifdef HAVE_IEEEFP_H 19132720Skan #include <ieeefp.h> 20132720Skan #endif 21132720Skan ], 22132720Skan [ $1(0);], 23132720Skan [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no]) 24132720Skan AC_LANG_RESTORE 25132720Skan ]) 26132720Skan fi 27132720Skan AC_MSG_RESULT($glibcxx_cv_func_$1_use) 28132720Skan]) 29132720Skan 30169691Skan 31169691Skandnl 32169691Skandnl Define autoheader template for using the underscore functions 33169691Skandnl For each parameter, create a macro where if func doesn't exist, 34169691Skandnl but _func does, then it will "#define func _func". 35132720Skandnl 36169691Skandnl GLIBCXX_MAYBE_UNDERSCORED_FUNCS 37169691SkanAC_DEFUN([GLIBCXX_MAYBE_UNDERSCORED_FUNCS], 38169691Skan[AC_FOREACH([glibcxx_ufunc], [$1], 39169691Skan [AH_VERBATIM(_[]glibcxx_ufunc, 40169691Skan[#if defined (]AS_TR_CPP(HAVE__[]glibcxx_ufunc)[) && ! defined (]AS_TR_CPP(HAVE_[]glibcxx_ufunc)[) 41169691Skan# define ]AS_TR_CPP(HAVE_[]glibcxx_ufunc)[ 1 42169691Skan# define ]glibcxx_ufunc[ _]glibcxx_ufunc[ 43169691Skan#endif])]) 44169691Skan]) 45169691Skan 46169691Skan 47169691Skandnl 48132720Skandnl Check to see if the (math function) argument passed is 49132720Skandnl 1) declared when using the c++ compiler 50132720Skandnl 2) has "C" linkage 51132720Skandnl 3) if not, see if 1) and 2) for argument prepended with '_' 52132720Skandnl 53132720Skandnl Define HAVE_CARGF etc if "cargf" is declared and links 54132720Skandnl 55132720Skandnl argument 1 is name of function to check 56132720Skandnl 57132720Skandnl ASSUMES argument is a math function with ONE parameter 58132720Skandnl 59132720Skandnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1 60132720SkanAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1], [ 61132720Skan GLIBCXX_CHECK_MATH_DECL_1($1) 62132720Skan if test x$glibcxx_cv_func_$1_use = x"yes"; then 63132720Skan AC_CHECK_FUNCS($1) 64132720Skan else 65132720Skan GLIBCXX_CHECK_MATH_DECL_1(_$1) 66132720Skan if test x$glibcxx_cv_func__$1_use = x"yes"; then 67132720Skan AC_CHECK_FUNCS(_$1) 68132720Skan fi 69132720Skan fi 70169691Skan GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1) 71132720Skan]) 72132720Skan 73132720Skan 74132720Skandnl 75132720Skandnl Like GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of 76132720Skandnl of functions at once. It's an all-or-nothing check -- either 77132720Skandnl HAVE_XYZ is defined for each of the functions, or for none of them. 78132720Skandnl Doing it this way saves significant configure time. 79132720SkanAC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [ 80169691Skan define([funclist],patsubst($3,\(\w+\)\(\W*\),\1 ))dnl 81132720Skan AC_MSG_CHECKING([for $1 functions]) 82132720Skan AC_CACHE_VAL(glibcxx_cv_func_$2_use, [ 83132720Skan AC_LANG_SAVE 84132720Skan AC_LANG_CPLUSPLUS 85132720Skan AC_TRY_COMPILE([#include <math.h>], 86169691Skan patsubst(funclist,[\w+],[\& (0);]), 87132720Skan [glibcxx_cv_func_$2_use=yes], 88132720Skan [glibcxx_cv_func_$2_use=no]) 89132720Skan AC_LANG_RESTORE]) 90132720Skan AC_MSG_RESULT($glibcxx_cv_func_$2_use) 91132720Skan if test x$glibcxx_cv_func_$2_use = x"yes"; then 92169691Skan AC_CHECK_FUNCS(funclist) 93169691Skan else 94169691Skan AC_MSG_CHECKING([for _$1 functions]) 95169691Skan AC_CACHE_VAL(glibcxx_cv_func__$2_use, [ 96169691Skan AC_LANG_SAVE 97169691Skan AC_LANG_CPLUSPLUS 98169691Skan AC_TRY_COMPILE([#include <math.h>], 99169691Skan patsubst(funclist,[\w+],[_\& (0);]), 100169691Skan [glibcxx_cv_func__$2_use=yes], 101169691Skan [glibcxx_cv_func__$2_use=no]) 102169691Skan AC_LANG_RESTORE]) 103169691Skan AC_MSG_RESULT($glibcxx_cv_func__$2_use) 104169691Skan if test x$glibcxx_cv_func__$2_use = x"yes"; then 105169691Skan AC_CHECK_FUNCS(patsubst(funclist,[\w+],[_\&])) 106169691Skan fi 107132720Skan fi 108169691Skan GLIBCXX_MAYBE_UNDERSCORED_FUNCS(funclist) 109169691Skan undefine([funclist]) 110132720Skan]) 111132720Skan 112132720Skandnl 113132720Skandnl Check to see if the (math function) argument passed is 114132720Skandnl declared when using the c++ compiler 115132720Skandnl ASSUMES argument is a math function with TWO parameters 116132720Skandnl 117132720Skandnl GLIBCXX_CHECK_MATH_DECL_2 118132720SkanAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [ 119132720Skan AC_MSG_CHECKING([for $1 declaration]) 120132720Skan if test x${glibcxx_cv_func_$1_use+set} != xset; then 121132720Skan AC_CACHE_VAL(glibcxx_cv_func_$1_use, [ 122132720Skan AC_LANG_SAVE 123132720Skan AC_LANG_CPLUSPLUS 124132720Skan AC_TRY_COMPILE([#include <math.h>], 125132720Skan [ $1(0, 0);], 126132720Skan [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no]) 127132720Skan AC_LANG_RESTORE 128132720Skan ]) 129132720Skan fi 130132720Skan AC_MSG_RESULT($glibcxx_cv_func_$1_use) 131132720Skan]) 132132720Skan 133132720Skandnl 134132720Skandnl Check to see if the (math function) argument passed is 135132720Skandnl 1) declared when using the c++ compiler 136132720Skandnl 2) has "C" linkage 137132720Skandnl 138132720Skandnl Define HAVE_CARGF etc if "cargf" is declared and links 139132720Skandnl 140132720Skandnl argument 1 is name of function to check 141132720Skandnl 142132720Skandnl ASSUMES argument is a math function with TWO parameters 143132720Skandnl 144132720Skandnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2 145132720SkanAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2], [ 146132720Skan GLIBCXX_CHECK_MATH_DECL_2($1) 147132720Skan if test x$glibcxx_cv_func_$1_use = x"yes"; then 148132720Skan AC_CHECK_FUNCS($1) 149132720Skan else 150132720Skan GLIBCXX_CHECK_MATH_DECL_2(_$1) 151132720Skan if test x$glibcxx_cv_func__$1_use = x"yes"; then 152132720Skan AC_CHECK_FUNCS(_$1) 153132720Skan fi 154132720Skan fi 155169691Skan GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1) 156132720Skan]) 157132720Skan 158132720Skan 159132720Skandnl 160132720Skandnl Check to see if the (math function) argument passed is 161132720Skandnl declared when using the c++ compiler 162132720Skandnl ASSUMES argument is a math function with THREE parameters 163132720Skandnl 164132720Skandnl GLIBCXX_CHECK_MATH_DECL_3 165132720SkanAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [ 166132720Skan AC_MSG_CHECKING([for $1 declaration]) 167132720Skan if test x${glibcxx_cv_func_$1_use+set} != xset; then 168132720Skan AC_CACHE_VAL(glibcxx_cv_func_$1_use, [ 169132720Skan AC_LANG_SAVE 170132720Skan AC_LANG_CPLUSPLUS 171132720Skan AC_TRY_COMPILE([#include <math.h>], 172132720Skan [ $1(0, 0, 0);], 173132720Skan [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no]) 174132720Skan AC_LANG_RESTORE 175132720Skan ]) 176132720Skan fi 177132720Skan AC_MSG_RESULT($glibcxx_cv_func_$1_use) 178132720Skan]) 179132720Skan 180132720Skandnl 181132720Skandnl Check to see if the (math function) argument passed is 182132720Skandnl 1) declared when using the c++ compiler 183132720Skandnl 2) has "C" linkage 184132720Skandnl 185132720Skandnl Define HAVE_CARGF etc if "cargf" is declared and links 186132720Skandnl 187132720Skandnl argument 1 is name of function to check 188132720Skandnl 189132720Skandnl ASSUMES argument is a math function with THREE parameters 190132720Skandnl 191132720Skandnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3 192132720SkanAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3], [ 193132720Skan GLIBCXX_CHECK_MATH_DECL_3($1) 194132720Skan if test x$glibcxx_cv_func_$1_use = x"yes"; then 195132720Skan AC_CHECK_FUNCS($1) 196132720Skan else 197132720Skan GLIBCXX_CHECK_MATH_DECL_3(_$1) 198132720Skan if test x$glibcxx_cv_func__$1_use = x"yes"; then 199132720Skan AC_CHECK_FUNCS(_$1) 200132720Skan fi 201132720Skan fi 202169691Skan GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1) 203132720Skan]) 204132720Skan 205132720Skan 206132720Skandnl 207132720Skandnl Check to see if the (stdlib function) argument passed is 208132720Skandnl 1) declared when using the c++ compiler 209132720Skandnl 2) has "C" linkage 210132720Skandnl 211132720Skandnl argument 1 is name of function to check 212132720Skandnl 213132720Skandnl ASSUMES argument is a stdlib function without parameters 214132720Skandnl 215132720Skandnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0 216132720SkanAC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0], [ 217132720Skan AC_MSG_CHECKING([for $1 declaration]) 218132720Skan if test x${glibcxx_cv_func_$1_use+set} != xset; then 219132720Skan AC_CACHE_VAL(glibcxx_cv_func_$1_use, [ 220132720Skan AC_LANG_SAVE 221132720Skan AC_LANG_CPLUSPLUS 222132720Skan AC_TRY_COMPILE([#include <stdlib.h>], 223132720Skan [ $1();], 224132720Skan [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no]) 225132720Skan AC_LANG_RESTORE 226132720Skan ]) 227132720Skan fi 228132720Skan AC_MSG_RESULT($glibcxx_cv_func_$1_use) 229132720Skan if test x$glibcxx_cv_func_$1_use = x"yes"; then 230132720Skan AC_CHECK_FUNCS($1) 231132720Skan fi 232132720Skan]) 233132720Skan 234132720Skan 235132720Skandnl 236132720Skandnl Check to see if the (stdlib function) argument passed is 237132720Skandnl 1) declared when using the c++ compiler 238132720Skandnl 2) has "C" linkage 239132720Skandnl 240132720Skandnl argument 1 is name of function to check 241132720Skandnl 242146897Skandnl ASSUMES argument is a stdlib function with TWO parameters 243132720Skandnl 244132720Skandnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2 245132720SkanAC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [ 246132720Skan AC_MSG_CHECKING([for $1 declaration]) 247132720Skan if test x${glibcxx_cv_func_$1_use+set} != xset; then 248132720Skan AC_CACHE_VAL(glibcxx_cv_func_$1_use, [ 249132720Skan AC_LANG_SAVE 250132720Skan AC_LANG_CPLUSPLUS 251132720Skan AC_TRY_COMPILE([#include <stdlib.h>], 252132720Skan [ $1(0, 0);], 253132720Skan [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no]) 254132720Skan AC_LANG_RESTORE 255132720Skan ]) 256132720Skan fi 257132720Skan AC_MSG_RESULT($glibcxx_cv_func_$1_use) 258132720Skan if test x$glibcxx_cv_func_$1_use = x"yes"; then 259132720Skan AC_CHECK_FUNCS($1) 260132720Skan fi 261169691Skan GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1) 262132720Skan]) 263132720Skan 264132720Skan 265132720Skandnl 266132720Skandnl Check to see if the (stdlib function) argument passed is 267132720Skandnl 1) declared when using the c++ compiler 268132720Skandnl 2) has "C" linkage 269132720Skandnl 270132720Skandnl argument 1 is name of function to check 271132720Skandnl 272146897Skandnl ASSUMES argument is a stdlib function with THREE parameters 273132720Skandnl 274132720Skandnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3 275132720SkanAC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [ 276132720Skan AC_MSG_CHECKING([for $1 declaration]) 277132720Skan if test x${glibcxx_cv_func_$1_use+set} != xset; then 278132720Skan AC_CACHE_VAL(glibcxx_cv_func_$1_use, [ 279132720Skan AC_LANG_SAVE 280132720Skan AC_LANG_CPLUSPLUS 281132720Skan AC_TRY_COMPILE([#include <stdlib.h>], 282132720Skan [ $1(0, 0, 0);], 283132720Skan [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no]) 284132720Skan AC_LANG_RESTORE 285132720Skan ]) 286132720Skan fi 287132720Skan AC_MSG_RESULT($glibcxx_cv_func_$1_use) 288132720Skan if test x$glibcxx_cv_func_$1_use = x"yes"; then 289132720Skan AC_CHECK_FUNCS($1) 290132720Skan fi 291132720Skan]) 292132720Skan 293132720Skandnl 294132720Skandnl Because the builtins are picky picky picky about the arguments they take, 295132720Skandnl do an explict linkage tests here. 296132720Skandnl Check to see if the (math function) argument passed is 297132720Skandnl 1) declared when using the c++ compiler 298132720Skandnl 2) has "C" linkage 299132720Skandnl 300132720Skandnl Define HAVE_CARGF etc if "cargf" is declared and links 301132720Skandnl 302132720Skandnl argument 1 is name of function to check 303132720Skandnl 304132720Skandnl ASSUMES argument is a math function with ONE parameter 305132720Skandnl 306132720Skandnl GLIBCXX_CHECK_BUILTIN_MATH_DECL_LINKAGE_1 307132720SkanAC_DEFUN([GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1], [ 308132720Skan AC_MSG_CHECKING([for $1 declaration]) 309132720Skan if test x${glibcxx_cv_func_$1_use+set} != xset; then 310132720Skan AC_CACHE_VAL(glibcxx_cv_func_$1_use, [ 311132720Skan AC_LANG_SAVE 312132720Skan AC_LANG_CPLUSPLUS 313132720Skan AC_TRY_COMPILE([#include <math.h>], 314132720Skan [ $1(0);], 315132720Skan [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no]) 316132720Skan AC_LANG_RESTORE 317132720Skan ]) 318132720Skan fi 319132720Skan AC_MSG_RESULT($glibcxx_cv_func_$1_use) 320132720Skan if test x$glibcxx_cv_func_$1_use = x"yes"; then 321132720Skan AC_MSG_CHECKING([for $1 linkage]) 322132720Skan if test x${glibcxx_cv_func_$1_link+set} != xset; then 323132720Skan AC_CACHE_VAL(glibcxx_cv_func_$1_link, [ 324132720Skan AC_TRY_LINK([#include <math.h>], 325132720Skan [ $1(0);], 326132720Skan [glibcxx_cv_func_$1_link=yes], [glibcxx_cv_func_$1_link=no]) 327132720Skan ]) 328132720Skan fi 329132720Skan AC_MSG_RESULT($glibcxx_cv_func_$1_link) 330169691Skan define([NAME], [translit([$1],[abcdefghijklmnopqrstuvwxyz], 331169691Skan [ABCDEFGHIJKLMNOPQRSTUVWXYZ])]) 332132720Skan if test x$glibcxx_cv_func_$1_link = x"yes"; then 333169691Skan AC_DEFINE([HAVE_]NAME, 1, [Define if the compiler/host combination has $1.]) 334132720Skan fi 335169691Skan undefine([NAME]) 336132720Skan fi 337132720Skan]) 338132720Skan 339132720Skan 340132720Skandnl 341132720Skandnl Check to see what builtin math functions are supported 342132720Skandnl 343132720Skandnl check for __builtin_abs 344132720Skandnl check for __builtin_fabsf 345132720Skandnl check for __builtin_fabs 346132720Skandnl check for __builtin_fabl 347132720Skandnl check for __builtin_labs 348132720Skandnl check for __builtin_sqrtf 349132720Skandnl check for __builtin_sqrtl 350132720Skandnl check for __builtin_sqrt 351132720Skandnl check for __builtin_sinf 352132720Skandnl check for __builtin_sin 353132720Skandnl check for __builtin_sinl 354132720Skandnl check for __builtin_cosf 355132720Skandnl check for __builtin_cos 356132720Skandnl check for __builtin_cosl 357132720Skandnl 358132720Skandnl GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT 359132720SkanAC_DEFUN([GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT], [ 360132720Skan dnl Test for builtin math functions. 361132720Skan dnl These are made in gcc/c-common.c 362132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs) 363132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf) 364132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs) 365132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl) 366132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs) 367132720Skan 368132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf) 369132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt) 370132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl) 371132720Skan 372132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf) 373132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin) 374132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl) 375132720Skan 376132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf) 377132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos) 378132720Skan GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl) 379132720Skan]) 380132720Skan 381132720Skandnl 382132720Skandnl Check to see what the underlying c library is like 383132720Skandnl These checks need to do two things: 384132720Skandnl 1) make sure the name is declared when using the c++ compiler 385132720Skandnl 2) make sure the name has "C" linkage 386132720Skandnl This might seem like overkill but experience has shown that it's not... 387132720Skandnl 388132720Skandnl Define HAVE_STRTOLD if "strtold" is declared and links 389132720Skandnl Define HAVE_STRTOF if "strtof" is declared and links 390132720Skandnl 391132720Skandnl GLIBCXX_CHECK_STDLIB_SUPPORT 392132720SkanAC_DEFUN([GLIBCXX_CHECK_STDLIB_SUPPORT], [ 393132720Skan ac_test_CXXFLAGS="${CXXFLAGS+set}" 394132720Skan ac_save_CXXFLAGS="$CXXFLAGS" 395132720Skan CXXFLAGS='-fno-builtin -D_GNU_SOURCE' 396132720Skan 397132720Skan GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold) 398132720Skan GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof) 399132720Skan 400132720Skan CXXFLAGS="$ac_save_CXXFLAGS" 401132720Skan]) 402132720Skan 403132720Skandnl 404132720Skandnl Check to see what the underlying c library or math library is like. 405132720Skandnl These checks need to do two things: 406132720Skandnl 1) make sure the name is declared when using the c++ compiler 407132720Skandnl 2) make sure the name has "C" linkage 408132720Skandnl This might seem like overkill but experience has shown that it's not... 409132720Skandnl 410132720Skandnl Define HAVE_CARGF etc if "cargf" is found. 411132720Skandnl 412132720Skandnl GLIBCXX_CHECK_MATH_SUPPORT 413132720SkanAC_DEFUN([GLIBCXX_CHECK_MATH_SUPPORT], [ 414132720Skan ac_test_CXXFLAGS="${CXXFLAGS+set}" 415132720Skan ac_save_CXXFLAGS="$CXXFLAGS" 416132720Skan CXXFLAGS='-fno-builtin -D_GNU_SOURCE' 417132720Skan 418132720Skan dnl Check libm 419132720Skan AC_CHECK_LIB(m, sin, libm="-lm") 420132720Skan ac_save_LIBS="$LIBS" 421132720Skan LIBS="$LIBS $libm" 422132720Skan 423132720Skan dnl Check to see if certain C math functions exist. 424132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinf) 425132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnan) 426132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finite) 427132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(copysign) 428132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincos) 429132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass) 430132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass) 431132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypot) 432132720Skan 433132720Skan dnl Check to see if basic C math functions have float versions. 434132720Skan GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig, 435132720Skan float_trig, 436132720Skan acosf asinf atanf \ 437132720Skan cosf sinf tanf \ 438132720Skan coshf sinhf tanhf) 439132720Skan GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float round, 440132720Skan float_round, 441132720Skan ceilf floorf) 442132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expf) 443132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf) 444132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinff) 445132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f) 446132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf) 447132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf) 448132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf) 449132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf) 450132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf) 451132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logf) 452132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10f) 453132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modff) 454169691Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modf) 455132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powf) 456132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf) 457132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf) 458132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitef) 459132720Skan 460132720Skan dnl Check to see if basic C math functions have long double versions. 461132720Skan GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig, 462132720Skan long_double_trig, 463132720Skan acosl asinl atanl \ 464132720Skan cosl sinl tanl \ 465132720Skan coshl sinhl tanhl) 466132720Skan GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round, 467132720Skan long_double_round, 468132720Skan ceill floorl) 469132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl) 470132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl) 471132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl) 472132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l) 473132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expl) 474132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl) 475132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl) 476132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl) 477132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl) 478132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl) 479132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logl) 480132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10l) 481132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modfl) 482132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powl) 483132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl) 484132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl) 485132720Skan GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitel) 486132720Skan 487132720Skan LIBS="$ac_save_LIBS" 488132720Skan CXXFLAGS="$ac_save_CXXFLAGS" 489132720Skan]) 490132720Skan 491132720Skan 492132720Skandnl 493132720Skandnl Check to see if there is native support for complex 494132720Skandnl 495132720Skandnl Don't compile bits in math/* if native support exits. 496132720Skandnl 497132720Skandnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found. 498132720Skandnl 499132720Skandnl GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT 500132720SkanAC_DEFUN([GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT], [ 501132720Skan dnl Check for complex versions of math functions of platform. This will 502132720Skan dnl always pass if libm is available, and fail if it isn't. If it is 503132720Skan dnl available, we assume we'll need it later, so add it to LIBS. 504132720Skan AC_CHECK_LIB(m, main) 505132720Skan AC_REPLACE_MATHFUNCS(copysignf) 506132720Skan 507132720Skan dnl For __signbit to signbit conversions. 508132720Skan dnl Not sure why this is done, as these will be macros mostly. 509132720Skan dnl Should probably coordinate this with std_cmath.h. 510132720Skan AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"]) 511132720Skan 512132720Skan AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"]) 513132720Skan 514132720Skan dnl Compile the long double complex functions only if the function 515132720Skan dnl provides the non-complex long double functions that are needed. 516132720Skan dnl Currently this includes copysignl, which should be 517132720Skan dnl cached from the GLIBCXX_CHECK_MATH_SUPPORT macro, above. 518132720Skan if test x$ac_cv_func_copysignl = x"yes"; then 519132720Skan AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"]) 520132720Skan fi 521132720Skan 522132720Skan # Used in libmath/Makefile.am. 523132720Skan if test -n "$LIBMATHOBJS"; then 524132720Skan need_libmath=yes 525132720Skan fi 526132720Skan AC_SUBST(LIBMATHOBJS) 527132720Skan]) 528132720Skan 529132720Skan 530132720Skan# Check for functions in math library. 531132720Skan# Ulrich Drepper <drepper@cygnus.com>, 1998. 532132720Skan# 533132720Skan# This file can be copied and used freely without restrictions. It can 534132720Skan# be used in projects which are not available under the GNU Public License 535132720Skan# but which still want to provide support for the GNU gettext functionality. 536132720Skan# Please note that the actual code is *not* freely available. 537132720Skan# 538132720Skan# serial 1 539132720Skan# 540132720Skandnl AC_REPLACE_MATHFUNCS(FUNCTION...) 541132720SkanAC_DEFUN([AC_REPLACE_MATHFUNCS], 542132720Skan[AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])]) 543