dnldnl This file contains macros for testing linkage.dnldnldnl Check to see if the (math function) argument passed isdnl declared when using the c++ compilerdnl ASSUMES argument is a math function with ONE parameterdnldnl GLIBCXX_CHECK_MATH_DECL_1AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [AC_MSG_CHECKING([for $1 declaration])if test x${glibcxx_cv_func_$1_use+set} != xset; thenAC_CACHE_VAL(glibcxx_cv_func_$1_use, [AC_LANG_SAVEAC_LANG_CPLUSPLUSAC_TRY_COMPILE([#include <math.h>#ifdef HAVE_IEEEFP_H#include <ieeefp.h>#endif],[ $1(0);],[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])AC_LANG_RESTORE])fiAC_MSG_RESULT($glibcxx_cv_func_$1_use)])dnldnl Define autoheader template for using the underscore functionsdnl For each parameter, create a macro where if func doesn't exist,dnl but _func does, then it will "#define func _func".dnldnl GLIBCXX_MAYBE_UNDERSCORED_FUNCSAC_DEFUN([GLIBCXX_MAYBE_UNDERSCORED_FUNCS],[AC_FOREACH([glibcxx_ufunc], [$1],[AH_VERBATIM(_[]glibcxx_ufunc,[#if defined (]AS_TR_CPP(HAVE__[]glibcxx_ufunc)[) && ! defined (]AS_TR_CPP(HAVE_[]glibcxx_ufunc)[)# define ]AS_TR_CPP(HAVE_[]glibcxx_ufunc)[ 1# define ]glibcxx_ufunc[ _]glibcxx_ufunc[#endif])])])dnldnl Check to see if the (math function) argument passed isdnl 1) declared when using the c++ compilerdnl 2) has "C" linkagednl 3) if not, see if 1) and 2) for argument prepended with '_'dnldnl Define HAVE_CARGF etc if "cargf" is declared and linksdnldnl argument 1 is name of function to checkdnldnl ASSUMES argument is a math function with ONE parameterdnldnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1], [GLIBCXX_CHECK_MATH_DECL_1($1)if test x$glibcxx_cv_func_$1_use = x"yes"; thenAC_CHECK_FUNCS($1)elseGLIBCXX_CHECK_MATH_DECL_1(_$1)if test x$glibcxx_cv_func__$1_use = x"yes"; thenAC_CHECK_FUNCS(_$1)fifiGLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)])dnldnl Like GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch ofdnl of functions at once. It's an all-or-nothing check -- eitherdnl HAVE_XYZ is defined for each of the functions, or for none of them.dnl Doing it this way saves significant configure time.AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [define([funclist],patsubst($3,\(\w+\)\(\W*\),\1 ))dnlAC_MSG_CHECKING([for $1 functions])AC_CACHE_VAL(glibcxx_cv_func_$2_use, [AC_LANG_SAVEAC_LANG_CPLUSPLUSAC_TRY_COMPILE([#include <math.h>],patsubst(funclist,[\w+],[\& (0);]),[glibcxx_cv_func_$2_use=yes],[glibcxx_cv_func_$2_use=no])AC_LANG_RESTORE])AC_MSG_RESULT($glibcxx_cv_func_$2_use)if test x$glibcxx_cv_func_$2_use = x"yes"; thenAC_CHECK_FUNCS(funclist)elseAC_MSG_CHECKING([for _$1 functions])AC_CACHE_VAL(glibcxx_cv_func__$2_use, [AC_LANG_SAVEAC_LANG_CPLUSPLUSAC_TRY_COMPILE([#include <math.h>],patsubst(funclist,[\w+],[_\& (0);]),[glibcxx_cv_func__$2_use=yes],[glibcxx_cv_func__$2_use=no])AC_LANG_RESTORE])AC_MSG_RESULT($glibcxx_cv_func__$2_use)if test x$glibcxx_cv_func__$2_use = x"yes"; thenAC_CHECK_FUNCS(patsubst(funclist,[\w+],[_\&]))fifiGLIBCXX_MAYBE_UNDERSCORED_FUNCS(funclist)undefine([funclist])])dnldnl Check to see if the (math function) argument passed isdnl declared when using the c++ compilerdnl ASSUMES argument is a math function with TWO parametersdnldnl GLIBCXX_CHECK_MATH_DECL_2AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [AC_MSG_CHECKING([for $1 declaration])if test x${glibcxx_cv_func_$1_use+set} != xset; thenAC_CACHE_VAL(glibcxx_cv_func_$1_use, [AC_LANG_SAVEAC_LANG_CPLUSPLUSAC_TRY_COMPILE([#include <math.h>],[ $1(0, 0);],[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])AC_LANG_RESTORE])fiAC_MSG_RESULT($glibcxx_cv_func_$1_use)])dnldnl Check to see if the (math function) argument passed isdnl 1) declared when using the c++ compilerdnl 2) has "C" linkagednldnl Define HAVE_CARGF etc if "cargf" is declared and linksdnldnl argument 1 is name of function to checkdnldnl ASSUMES argument is a math function with TWO parametersdnldnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2], [GLIBCXX_CHECK_MATH_DECL_2($1)if test x$glibcxx_cv_func_$1_use = x"yes"; thenAC_CHECK_FUNCS($1)elseGLIBCXX_CHECK_MATH_DECL_2(_$1)if test x$glibcxx_cv_func__$1_use = x"yes"; thenAC_CHECK_FUNCS(_$1)fifiGLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)])dnldnl Check to see if the (math function) argument passed isdnl declared when using the c++ compilerdnl ASSUMES argument is a math function with THREE parametersdnldnl GLIBCXX_CHECK_MATH_DECL_3AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [AC_MSG_CHECKING([for $1 declaration])if test x${glibcxx_cv_func_$1_use+set} != xset; thenAC_CACHE_VAL(glibcxx_cv_func_$1_use, [AC_LANG_SAVEAC_LANG_CPLUSPLUSAC_TRY_COMPILE([#include <math.h>],[ $1(0, 0, 0);],[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])AC_LANG_RESTORE])fiAC_MSG_RESULT($glibcxx_cv_func_$1_use)])dnldnl Check to see if the (math function) argument passed isdnl 1) declared when using the c++ compilerdnl 2) has "C" linkagednldnl Define HAVE_CARGF etc if "cargf" is declared and linksdnldnl argument 1 is name of function to checkdnldnl ASSUMES argument is a math function with THREE parametersdnldnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3], [GLIBCXX_CHECK_MATH_DECL_3($1)if test x$glibcxx_cv_func_$1_use = x"yes"; thenAC_CHECK_FUNCS($1)elseGLIBCXX_CHECK_MATH_DECL_3(_$1)if test x$glibcxx_cv_func__$1_use = x"yes"; thenAC_CHECK_FUNCS(_$1)fifiGLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)])dnldnl Check to see if the (stdlib function) argument passed isdnl 1) declared when using the c++ compilerdnl 2) has "C" linkagednldnl argument 1 is name of function to checkdnldnl ASSUMES argument is a stdlib function without parametersdnldnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0], [AC_MSG_CHECKING([for $1 declaration])if test x${glibcxx_cv_func_$1_use+set} != xset; thenAC_CACHE_VAL(glibcxx_cv_func_$1_use, [AC_LANG_SAVEAC_LANG_CPLUSPLUSAC_TRY_COMPILE([#include <stdlib.h>],[ $1();],[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])AC_LANG_RESTORE])fiAC_MSG_RESULT($glibcxx_cv_func_$1_use)if test x$glibcxx_cv_func_$1_use = x"yes"; thenAC_CHECK_FUNCS($1)fi])dnldnl Check to see if the (stdlib function) argument passed isdnl 1) declared when using the c++ compilerdnl 2) has "C" linkagednldnl argument 1 is name of function to checkdnldnl ASSUMES argument is a stdlib function with TWO parametersdnldnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [AC_MSG_CHECKING([for $1 declaration])if test x${glibcxx_cv_func_$1_use+set} != xset; thenAC_CACHE_VAL(glibcxx_cv_func_$1_use, [AC_LANG_SAVEAC_LANG_CPLUSPLUSAC_TRY_COMPILE([#include <stdlib.h>],[ $1(0, 0);],[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])AC_LANG_RESTORE])fiAC_MSG_RESULT($glibcxx_cv_func_$1_use)if test x$glibcxx_cv_func_$1_use = x"yes"; thenAC_CHECK_FUNCS($1)fiGLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)])dnldnl Check to see if the (stdlib function) argument passed isdnl 1) declared when using the c++ compilerdnl 2) has "C" linkagednldnl argument 1 is name of function to checkdnldnl ASSUMES argument is a stdlib function with THREE parametersdnldnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [AC_MSG_CHECKING([for $1 declaration])if test x${glibcxx_cv_func_$1_use+set} != xset; thenAC_CACHE_VAL(glibcxx_cv_func_$1_use, [AC_LANG_SAVEAC_LANG_CPLUSPLUSAC_TRY_COMPILE([#include <stdlib.h>],[ $1(0, 0, 0);],[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])AC_LANG_RESTORE])fiAC_MSG_RESULT($glibcxx_cv_func_$1_use)if test x$glibcxx_cv_func_$1_use = x"yes"; thenAC_CHECK_FUNCS($1)fi])dnldnl Check to see what the underlying c library is likednl These checks need to do two things:dnl 1) make sure the name is declared when using the c++ compilerdnl 2) make sure the name has "C" linkagednl This might seem like overkill but experience has shown that it's not...dnldnl Define HAVE_STRTOLD if "strtold" is declared and linksdnl Define HAVE_STRTOF if "strtof" is declared and linksdnldnl GLIBCXX_CHECK_STDLIB_SUPPORTAC_DEFUN([GLIBCXX_CHECK_STDLIB_SUPPORT], [ac_test_CXXFLAGS="${CXXFLAGS+set}"ac_save_CXXFLAGS="$CXXFLAGS"CXXFLAGS='-fno-builtin -D_GNU_SOURCE'GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)CXXFLAGS="$ac_save_CXXFLAGS"])dnldnl Check to see what the underlying c library or math library is like.dnl These checks need to do two things:dnl 1) make sure the name is declared when using the c++ compilerdnl 2) make sure the name has "C" linkagednl This might seem like overkill but experience has shown that it's not...dnldnl Define HAVE_CARGF etc if "cargf" is found.dnldnl GLIBCXX_CHECK_MATH_SUPPORTAC_DEFUN([GLIBCXX_CHECK_MATH_SUPPORT], [ac_test_CXXFLAGS="${CXXFLAGS+set}"ac_save_CXXFLAGS="$CXXFLAGS"CXXFLAGS='-fno-builtin -D_GNU_SOURCE'dnl Check libmAC_CHECK_LIB(m, sin, libm="-lm")ac_save_LIBS="$LIBS"LIBS="$LIBS $libm"dnl Check to see if certain C math functions exist.GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finite)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)dnl Check to see if basic C math functions have float versions.GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,float_trig,acosf asinf atanf \cosf sinf tanf \coshf sinhf tanhf)GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,float_round,ceilf floorf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modff)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)dnl Check to see if basic C math functions have long double versions.GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,long_double_trig,acosl asinl atanl \cosl sinl tanl \coshl sinhl tanhl)GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,long_double_round,ceill floorl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)LIBS="$ac_save_LIBS"CXXFLAGS="$ac_save_CXXFLAGS"])