xref: /netbsd-src/external/gpl3/gcc/dist/libstdc++-v3/linkage.m4 (revision 48fb7bfab72acd4281a53bbee5ccf3f809019e75)
14fee23f9Smrgdnl
24fee23f9Smrgdnl This file contains macros for testing linkage.
34fee23f9Smrgdnl
44fee23f9Smrg
54fee23f9Smrgdnl
64fee23f9Smrgdnl Check to see if the (math function) argument passed is
74fee23f9Smrgdnl declared when using the c++ compiler
84fee23f9Smrgdnl ASSUMES argument is a math function with ONE parameter
94fee23f9Smrgdnl
104fee23f9Smrgdnl GLIBCXX_CHECK_MATH_DECL_1
114fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [
124fee23f9Smrg  AC_MSG_CHECKING([for $1 declaration])
134fee23f9Smrg  if test x${glibcxx_cv_func_$1_use+set} != xset; then
144fee23f9Smrg    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
154fee23f9Smrg      AC_LANG_SAVE
164fee23f9Smrg      AC_LANG_CPLUSPLUS
174fee23f9Smrg      AC_TRY_COMPILE([#include <math.h>
184fee23f9Smrg		      #ifdef HAVE_IEEEFP_H
194fee23f9Smrg		      #include <ieeefp.h>
204fee23f9Smrg		      #endif
214fee23f9Smrg		     ],
224fee23f9Smrg                     [ $1(0);],
234fee23f9Smrg                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
244fee23f9Smrg      AC_LANG_RESTORE
254fee23f9Smrg    ])
264fee23f9Smrg  fi
274fee23f9Smrg  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
284fee23f9Smrg])
294fee23f9Smrg
304fee23f9Smrg
314fee23f9Smrgdnl
324fee23f9Smrgdnl Define autoheader template for using the underscore functions
334fee23f9Smrgdnl For each parameter, create a macro where if func doesn't exist,
344fee23f9Smrgdnl but _func does, then it will "#define func _func".
354fee23f9Smrgdnl
364fee23f9Smrgdnl GLIBCXX_MAYBE_UNDERSCORED_FUNCS
374fee23f9SmrgAC_DEFUN([GLIBCXX_MAYBE_UNDERSCORED_FUNCS],
384fee23f9Smrg[AC_FOREACH([glibcxx_ufunc], [$1],
394fee23f9Smrg  [AH_VERBATIM(_[]glibcxx_ufunc,
404fee23f9Smrg[#if defined (]AS_TR_CPP(HAVE__[]glibcxx_ufunc)[) && ! defined (]AS_TR_CPP(HAVE_[]glibcxx_ufunc)[)
414fee23f9Smrg# define ]AS_TR_CPP(HAVE_[]glibcxx_ufunc)[ 1
424fee23f9Smrg# define ]glibcxx_ufunc[ _]glibcxx_ufunc[
434fee23f9Smrg#endif])])
444fee23f9Smrg])
454fee23f9Smrg
464fee23f9Smrg
474fee23f9Smrgdnl
484fee23f9Smrgdnl Check to see if the (math function) argument passed is
494fee23f9Smrgdnl 1) declared when using the c++ compiler
504fee23f9Smrgdnl 2) has "C" linkage
514fee23f9Smrgdnl 3) if not, see if 1) and 2) for argument prepended with '_'
524fee23f9Smrgdnl
534fee23f9Smrgdnl Define HAVE_CARGF etc if "cargf" is declared and links
544fee23f9Smrgdnl
554fee23f9Smrgdnl argument 1 is name of function to check
564fee23f9Smrgdnl
574fee23f9Smrgdnl ASSUMES argument is a math function with ONE parameter
584fee23f9Smrgdnl
594fee23f9Smrgdnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1
604fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1], [
614fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_1($1)
624fee23f9Smrg  if test x$glibcxx_cv_func_$1_use = x"yes"; then
634fee23f9Smrg    AC_CHECK_FUNCS($1)
644fee23f9Smrg  else
654fee23f9Smrg    GLIBCXX_CHECK_MATH_DECL_1(_$1)
664fee23f9Smrg    if test x$glibcxx_cv_func__$1_use = x"yes"; then
674fee23f9Smrg      AC_CHECK_FUNCS(_$1)
684fee23f9Smrg    fi
694fee23f9Smrg  fi
704fee23f9Smrg  GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)
714fee23f9Smrg])
724fee23f9Smrg
734fee23f9Smrg
744fee23f9Smrgdnl
754fee23f9Smrgdnl Like GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
764fee23f9Smrgdnl of functions at once.  It's an all-or-nothing check -- either
774fee23f9Smrgdnl HAVE_XYZ is defined for each of the functions, or for none of them.
784fee23f9Smrgdnl Doing it this way saves significant configure time.
794fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [
804fee23f9Smrg  define([funclist],patsubst($3,\(\w+\)\(\W*\),\1 ))dnl
814fee23f9Smrg  AC_MSG_CHECKING([for $1 functions])
824fee23f9Smrg  AC_CACHE_VAL(glibcxx_cv_func_$2_use, [
834fee23f9Smrg    AC_LANG_SAVE
844fee23f9Smrg    AC_LANG_CPLUSPLUS
854fee23f9Smrg    AC_TRY_COMPILE([#include <math.h>],
864fee23f9Smrg                   patsubst(funclist,[\w+],[\& (0);]),
874fee23f9Smrg                   [glibcxx_cv_func_$2_use=yes],
884fee23f9Smrg                   [glibcxx_cv_func_$2_use=no])
894fee23f9Smrg    AC_LANG_RESTORE])
904fee23f9Smrg  AC_MSG_RESULT($glibcxx_cv_func_$2_use)
914fee23f9Smrg  if test x$glibcxx_cv_func_$2_use = x"yes"; then
924fee23f9Smrg    AC_CHECK_FUNCS(funclist)
934fee23f9Smrg  else
944fee23f9Smrg    AC_MSG_CHECKING([for _$1 functions])
954fee23f9Smrg    AC_CACHE_VAL(glibcxx_cv_func__$2_use, [
964fee23f9Smrg      AC_LANG_SAVE
974fee23f9Smrg      AC_LANG_CPLUSPLUS
984fee23f9Smrg      AC_TRY_COMPILE([#include <math.h>],
994fee23f9Smrg                     patsubst(funclist,[\w+],[_\& (0);]),
1004fee23f9Smrg                     [glibcxx_cv_func__$2_use=yes],
1014fee23f9Smrg                     [glibcxx_cv_func__$2_use=no])
1024fee23f9Smrg      AC_LANG_RESTORE])
1034fee23f9Smrg    AC_MSG_RESULT($glibcxx_cv_func__$2_use)
1044fee23f9Smrg    if test x$glibcxx_cv_func__$2_use = x"yes"; then
1054fee23f9Smrg      AC_CHECK_FUNCS(patsubst(funclist,[\w+],[_\&]))
1064fee23f9Smrg    fi
1074fee23f9Smrg  fi
1084fee23f9Smrg  GLIBCXX_MAYBE_UNDERSCORED_FUNCS(funclist)
1094fee23f9Smrg  undefine([funclist])
1104fee23f9Smrg])
1114fee23f9Smrg
1124fee23f9Smrgdnl
1134fee23f9Smrgdnl Check to see if the (math function) argument passed is
1144fee23f9Smrgdnl declared when using the c++ compiler
1154fee23f9Smrgdnl ASSUMES argument is a math function with TWO parameters
1164fee23f9Smrgdnl
1174fee23f9Smrgdnl GLIBCXX_CHECK_MATH_DECL_2
1184fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [
1194fee23f9Smrg  AC_MSG_CHECKING([for $1 declaration])
1204fee23f9Smrg  if test x${glibcxx_cv_func_$1_use+set} != xset; then
1214fee23f9Smrg    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
1224fee23f9Smrg      AC_LANG_SAVE
1234fee23f9Smrg      AC_LANG_CPLUSPLUS
1244fee23f9Smrg      AC_TRY_COMPILE([#include <math.h>],
1254fee23f9Smrg                     [ $1(0, 0);],
1264fee23f9Smrg                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
1274fee23f9Smrg      AC_LANG_RESTORE
1284fee23f9Smrg    ])
1294fee23f9Smrg  fi
1304fee23f9Smrg  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
1314fee23f9Smrg])
1324fee23f9Smrg
1334fee23f9Smrgdnl
1344fee23f9Smrgdnl Check to see if the (math function) argument passed is
1354fee23f9Smrgdnl 1) declared when using the c++ compiler
1364fee23f9Smrgdnl 2) has "C" linkage
1374fee23f9Smrgdnl
1384fee23f9Smrgdnl Define HAVE_CARGF etc if "cargf" is declared and links
1394fee23f9Smrgdnl
1404fee23f9Smrgdnl argument 1 is name of function to check
1414fee23f9Smrgdnl
1424fee23f9Smrgdnl ASSUMES argument is a math function with TWO parameters
1434fee23f9Smrgdnl
1444fee23f9Smrgdnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2
1454fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2], [
1464fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_2($1)
1474fee23f9Smrg  if test x$glibcxx_cv_func_$1_use = x"yes"; then
1484fee23f9Smrg    AC_CHECK_FUNCS($1)
1494fee23f9Smrg  else
1504fee23f9Smrg    GLIBCXX_CHECK_MATH_DECL_2(_$1)
1514fee23f9Smrg    if test x$glibcxx_cv_func__$1_use = x"yes"; then
1524fee23f9Smrg      AC_CHECK_FUNCS(_$1)
1534fee23f9Smrg    fi
1544fee23f9Smrg  fi
1554fee23f9Smrg  GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)
1564fee23f9Smrg])
1574fee23f9Smrg
1584fee23f9Smrg
1594fee23f9Smrgdnl
1604fee23f9Smrgdnl Check to see if the (math function) argument passed is
1614fee23f9Smrgdnl declared when using the c++ compiler
1624fee23f9Smrgdnl ASSUMES argument is a math function with THREE parameters
1634fee23f9Smrgdnl
1644fee23f9Smrgdnl GLIBCXX_CHECK_MATH_DECL_3
1654fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [
1664fee23f9Smrg  AC_MSG_CHECKING([for $1 declaration])
1674fee23f9Smrg  if test x${glibcxx_cv_func_$1_use+set} != xset; then
1684fee23f9Smrg    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
1694fee23f9Smrg      AC_LANG_SAVE
1704fee23f9Smrg      AC_LANG_CPLUSPLUS
1714fee23f9Smrg      AC_TRY_COMPILE([#include <math.h>],
1724fee23f9Smrg                     [ $1(0, 0, 0);],
1734fee23f9Smrg                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
1744fee23f9Smrg      AC_LANG_RESTORE
1754fee23f9Smrg    ])
1764fee23f9Smrg  fi
1774fee23f9Smrg  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
1784fee23f9Smrg])
1794fee23f9Smrg
1804fee23f9Smrgdnl
1814fee23f9Smrgdnl Check to see if the (math function) argument passed is
1824fee23f9Smrgdnl 1) declared when using the c++ compiler
1834fee23f9Smrgdnl 2) has "C" linkage
1844fee23f9Smrgdnl
1854fee23f9Smrgdnl Define HAVE_CARGF etc if "cargf" is declared and links
1864fee23f9Smrgdnl
1874fee23f9Smrgdnl argument 1 is name of function to check
1884fee23f9Smrgdnl
1894fee23f9Smrgdnl ASSUMES argument is a math function with THREE parameters
1904fee23f9Smrgdnl
1914fee23f9Smrgdnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3
1924fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3], [
1934fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_3($1)
1944fee23f9Smrg  if test x$glibcxx_cv_func_$1_use = x"yes"; then
1954fee23f9Smrg    AC_CHECK_FUNCS($1)
1964fee23f9Smrg  else
1974fee23f9Smrg    GLIBCXX_CHECK_MATH_DECL_3(_$1)
1984fee23f9Smrg    if test x$glibcxx_cv_func__$1_use = x"yes"; then
1994fee23f9Smrg      AC_CHECK_FUNCS(_$1)
2004fee23f9Smrg    fi
2014fee23f9Smrg  fi
2024fee23f9Smrg  GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)
2034fee23f9Smrg])
2044fee23f9Smrg
2054fee23f9Smrg
2064fee23f9Smrgdnl
2074fee23f9Smrgdnl Check to see if the (stdlib function) argument passed is
2084fee23f9Smrgdnl 1) declared when using the c++ compiler
2094fee23f9Smrgdnl 2) has "C" linkage
2104fee23f9Smrgdnl
2114fee23f9Smrgdnl argument 1 is name of function to check
2124fee23f9Smrgdnl
2134fee23f9Smrgdnl ASSUMES argument is a stdlib function without parameters
2144fee23f9Smrgdnl
2154fee23f9Smrgdnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0
2164fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0], [
2174fee23f9Smrg  AC_MSG_CHECKING([for $1 declaration])
2184fee23f9Smrg  if test x${glibcxx_cv_func_$1_use+set} != xset; then
2194fee23f9Smrg    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
2204fee23f9Smrg      AC_LANG_SAVE
2214fee23f9Smrg      AC_LANG_CPLUSPLUS
2224fee23f9Smrg      AC_TRY_COMPILE([#include <stdlib.h>],
2234fee23f9Smrg                     [ $1();],
2244fee23f9Smrg                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
2254fee23f9Smrg      AC_LANG_RESTORE
2264fee23f9Smrg    ])
2274fee23f9Smrg  fi
2284fee23f9Smrg  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
2294fee23f9Smrg  if test x$glibcxx_cv_func_$1_use = x"yes"; then
2304fee23f9Smrg    AC_CHECK_FUNCS($1)
2314fee23f9Smrg  fi
2324fee23f9Smrg])
2334fee23f9Smrg
2344fee23f9Smrg
2354fee23f9Smrgdnl
2364fee23f9Smrgdnl Check to see if the (stdlib function) argument passed is
2374fee23f9Smrgdnl 1) declared when using the c++ compiler
2384fee23f9Smrgdnl 2) has "C" linkage
2394fee23f9Smrgdnl
2404fee23f9Smrgdnl argument 1 is name of function to check
2414fee23f9Smrgdnl
242*48fb7bfaSmrgdnl ASSUMES argument is a stdlib function with ONE parameter
243*48fb7bfaSmrgdnl
244*48fb7bfaSmrgdnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1
245*48fb7bfaSmrgAC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1], [
246*48fb7bfaSmrg  AC_MSG_CHECKING([for $1 declaration])
247*48fb7bfaSmrg  if test x${glibcxx_cv_func_$1_use+set} != xset; then
248*48fb7bfaSmrg    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
249*48fb7bfaSmrg      AC_LANG_SAVE
250*48fb7bfaSmrg      AC_LANG_CPLUSPLUS
251*48fb7bfaSmrg      AC_TRY_COMPILE([#include <stdlib.h>],
252*48fb7bfaSmrg                     [ $1(0);],
253*48fb7bfaSmrg                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
254*48fb7bfaSmrg      AC_LANG_RESTORE
255*48fb7bfaSmrg    ])
256*48fb7bfaSmrg  fi
257*48fb7bfaSmrg  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
258*48fb7bfaSmrg  if test x$glibcxx_cv_func_$1_use = x"yes"; then
259*48fb7bfaSmrg    AC_CHECK_FUNCS($1)
260*48fb7bfaSmrg  fi
261*48fb7bfaSmrg])
262*48fb7bfaSmrg
263*48fb7bfaSmrg
264*48fb7bfaSmrgdnl
265*48fb7bfaSmrgdnl Check to see if the (stdlib function) argument passed is
266*48fb7bfaSmrgdnl 1) declared when using the c++ compiler
267*48fb7bfaSmrgdnl 2) has "C" linkage
268*48fb7bfaSmrgdnl
269*48fb7bfaSmrgdnl argument 1 is name of function to check
270*48fb7bfaSmrgdnl
2714fee23f9Smrgdnl ASSUMES argument is a stdlib function with TWO parameters
2724fee23f9Smrgdnl
2734fee23f9Smrgdnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2
2744fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [
2754fee23f9Smrg  AC_MSG_CHECKING([for $1 declaration])
2764fee23f9Smrg  if test x${glibcxx_cv_func_$1_use+set} != xset; then
2774fee23f9Smrg    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
2784fee23f9Smrg      AC_LANG_SAVE
2794fee23f9Smrg      AC_LANG_CPLUSPLUS
2804fee23f9Smrg      AC_TRY_COMPILE([#include <stdlib.h>],
2814fee23f9Smrg                     [ $1(0, 0);],
2824fee23f9Smrg                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
2834fee23f9Smrg      AC_LANG_RESTORE
2844fee23f9Smrg    ])
2854fee23f9Smrg  fi
2864fee23f9Smrg  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
2874fee23f9Smrg  if test x$glibcxx_cv_func_$1_use = x"yes"; then
2884fee23f9Smrg    AC_CHECK_FUNCS($1)
2894fee23f9Smrg  fi
2904fee23f9Smrg  GLIBCXX_MAYBE_UNDERSCORED_FUNCS($1)
2914fee23f9Smrg])
2924fee23f9Smrg
2934fee23f9Smrg
2944fee23f9Smrgdnl
2954fee23f9Smrgdnl Check to see if the (stdlib function) argument passed is
2964fee23f9Smrgdnl 1) declared when using the c++ compiler
2974fee23f9Smrgdnl 2) has "C" linkage
2984fee23f9Smrgdnl
2994fee23f9Smrgdnl argument 1 is name of function to check
3004fee23f9Smrgdnl
3014fee23f9Smrgdnl ASSUMES argument is a stdlib function with THREE parameters
3024fee23f9Smrgdnl
3034fee23f9Smrgdnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3
3044fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [
3054fee23f9Smrg  AC_MSG_CHECKING([for $1 declaration])
3064fee23f9Smrg  if test x${glibcxx_cv_func_$1_use+set} != xset; then
3074fee23f9Smrg    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
3084fee23f9Smrg      AC_LANG_SAVE
3094fee23f9Smrg      AC_LANG_CPLUSPLUS
3104fee23f9Smrg      AC_TRY_COMPILE([#include <stdlib.h>],
3114fee23f9Smrg                     [ $1(0, 0, 0);],
3124fee23f9Smrg                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
3134fee23f9Smrg      AC_LANG_RESTORE
3144fee23f9Smrg    ])
3154fee23f9Smrg  fi
3164fee23f9Smrg  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
3174fee23f9Smrg  if test x$glibcxx_cv_func_$1_use = x"yes"; then
3184fee23f9Smrg    AC_CHECK_FUNCS($1)
3194fee23f9Smrg  fi
3204fee23f9Smrg])
3214fee23f9Smrg
3224fee23f9Smrgdnl
3234fee23f9Smrgdnl Check to see what the underlying c library is like
3244fee23f9Smrgdnl These checks need to do two things:
3254fee23f9Smrgdnl 1) make sure the name is declared when using the c++ compiler
3264fee23f9Smrgdnl 2) make sure the name has "C" linkage
3274fee23f9Smrgdnl This might seem like overkill but experience has shown that it's not...
3284fee23f9Smrgdnl
3294fee23f9Smrgdnl Define HAVE_STRTOLD if "strtold" is declared and links
3304fee23f9Smrgdnl Define HAVE_STRTOF if "strtof" is declared and links
3314fee23f9Smrgdnl
3324fee23f9Smrgdnl GLIBCXX_CHECK_STDLIB_SUPPORT
3334fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_STDLIB_SUPPORT], [
3344fee23f9Smrg  ac_test_CXXFLAGS="${CXXFLAGS+set}"
3354fee23f9Smrg  ac_save_CXXFLAGS="$CXXFLAGS"
3364fee23f9Smrg  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
3374fee23f9Smrg
338*48fb7bfaSmrg  GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1(at_quick_exit)
339*48fb7bfaSmrg  GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1(quick_exit)
3404fee23f9Smrg  GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
3414fee23f9Smrg  GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
3424fee23f9Smrg
3434fee23f9Smrg  CXXFLAGS="$ac_save_CXXFLAGS"
3444fee23f9Smrg])
3454fee23f9Smrg
3464fee23f9Smrgdnl
3474fee23f9Smrgdnl Check to see what the underlying c library or math library is like.
3484fee23f9Smrgdnl These checks need to do two things:
3494fee23f9Smrgdnl 1) make sure the name is declared when using the c++ compiler
3504fee23f9Smrgdnl 2) make sure the name has "C" linkage
3514fee23f9Smrgdnl This might seem like overkill but experience has shown that it's not...
3524fee23f9Smrgdnl
3534fee23f9Smrgdnl Define HAVE_CARGF etc if "cargf" is found.
3544fee23f9Smrgdnl
3554fee23f9Smrgdnl GLIBCXX_CHECK_MATH_SUPPORT
3564fee23f9SmrgAC_DEFUN([GLIBCXX_CHECK_MATH_SUPPORT], [
3574fee23f9Smrg  ac_test_CXXFLAGS="${CXXFLAGS+set}"
3584fee23f9Smrg  ac_save_CXXFLAGS="$CXXFLAGS"
3594fee23f9Smrg  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
3604fee23f9Smrg
3614fee23f9Smrg  dnl Check libm
3624fee23f9Smrg  AC_CHECK_LIB(m, sin, libm="-lm")
3634fee23f9Smrg  ac_save_LIBS="$LIBS"
3644fee23f9Smrg  LIBS="$LIBS $libm"
3654fee23f9Smrg
3664fee23f9Smrg  dnl Check to see if certain C math functions exist.
3674fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
3684fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
3694fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
3704fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
3714fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
3724fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
3734fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
3744fee23f9Smrg
3754fee23f9Smrg  dnl Check to see if basic C math functions have float versions.
3764fee23f9Smrg  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
3774fee23f9Smrg                                          float_trig,
3784fee23f9Smrg                                          acosf asinf atanf \
3794fee23f9Smrg                                          cosf sinf tanf \
3804fee23f9Smrg                                          coshf sinhf tanhf)
3814fee23f9Smrg  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
3824fee23f9Smrg                                          float_round,
3834fee23f9Smrg                                          ceilf floorf)
3844fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
3854fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
3864fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
3874fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
3884fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
3894fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
3904fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
3914fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
3924fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
3934fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
3944fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
3954fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
3964fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modf)
3974fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
3984fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
3994fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
4004fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
4014fee23f9Smrg
4024fee23f9Smrg  dnl Check to see if basic C math functions have long double versions.
4034fee23f9Smrg  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
4044fee23f9Smrg                                          long_double_trig,
4054fee23f9Smrg                                          acosl asinl atanl \
4064fee23f9Smrg                                          cosl sinl tanl \
4074fee23f9Smrg                                          coshl sinhl tanhl)
4084fee23f9Smrg  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
4094fee23f9Smrg                                          long_double_round,
4104fee23f9Smrg                                          ceill floorl)
4114fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
4124fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
4134fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
4144fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
4154fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
4164fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
4174fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
4184fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
4194fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
4204fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
4214fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
4224fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
4234fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
4244fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
4254fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
4264fee23f9Smrg  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
4274fee23f9Smrg
4284fee23f9Smrg  LIBS="$ac_save_LIBS"
4294fee23f9Smrg  CXXFLAGS="$ac_save_CXXFLAGS"
4304fee23f9Smrg])
431