libstdc++: Add separate autoconf macro for std::float_t and std::double_t [PR109818]
This should make it possible to use openlibm with djgpp (and other targets with missing C99 <math.h> functions). The <math.h> from openlibm provides all the functions, but not the float_t and double_t typedefs. By separating the autoconf checks for the functionsand the typedefs, we don't disable support for all the functions just because those typedefs are not present. libstdc++-v3/ChangeLog: PR libstdc++/109818 * acinclude.m4 (GLIBCXX_ENABLE_C99): Add separate check for float_t and double_t and define HAVE_C99_FLT_EVAL_TYPES. * config.h.in: Regenerate. * configure: Regenerate. * include/c_global/cmath (float_t, double_t): Guard using new _GLIBCXX_HAVE_C99_FLT_EVAL_TYPES macro.
This commit is contained in:
parent
1f378f6dd3
commit
49f59826c6
4 changed files with 62 additions and 6 deletions
|
@ -1273,13 +1273,28 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
|
|||
in <cmath> in namespace std for C++11.])
|
||||
fi
|
||||
|
||||
# Check for the existence of <math.h> functions.
|
||||
AC_CACHE_CHECK([for ISO C99 function support for C++11 in <math.h>],
|
||||
glibcxx_cv_c99_math_funcs, [
|
||||
# Check for the existence of <math.h> typedefs.
|
||||
AC_CACHE_CHECK([for ISO C99 float types for C++11 in <math.h>],
|
||||
glibcxx_cv_c99_flt_eval_types, [
|
||||
AC_TRY_COMPILE([#include <math.h>],
|
||||
[// Types
|
||||
typedef double_t my_double_t;
|
||||
typedef float_t my_float_t;
|
||||
],
|
||||
[glibcxx_cv_c99_flt_eval_types=yes],
|
||||
[glibcxx_cv_c99_flt_eval_types=no])
|
||||
])
|
||||
if test x"$glibcxx_cv_c99_flt_eval_types" = x"yes"; then
|
||||
AC_DEFINE(HAVE_C99_FLT_EVAL_TYPES, 1,
|
||||
[Define if C99 float_t and double_t in <math.h> should be
|
||||
imported in <cmath> in namespace std for C++11.])
|
||||
fi
|
||||
|
||||
# Check for the existence of <math.h> functions.
|
||||
AC_CACHE_CHECK([for ISO C99 function support for C++11 in <math.h>],
|
||||
glibcxx_cv_c99_math_funcs, [
|
||||
AC_TRY_COMPILE([#include <math.h>],
|
||||
[
|
||||
// Hyperbolic
|
||||
acosh(0.0);
|
||||
acoshf(0.0f);
|
||||
|
|
|
@ -42,6 +42,10 @@
|
|||
/* Define to 1 if you have the `at_quick_exit' function. */
|
||||
#undef HAVE_AT_QUICK_EXIT
|
||||
|
||||
/* Define if C99 float_t and double_t in <math.h> should be imported in
|
||||
<cmath> in namespace std for C++11. */
|
||||
#undef HAVE_C99_FLT_EVAL_TYPES
|
||||
|
||||
/* Define to 1 if the target assembler supports thread-local storage. */
|
||||
#undef HAVE_CC_TLS
|
||||
|
||||
|
|
41
libstdc++-v3/configure
vendored
41
libstdc++-v3/configure
vendored
|
@ -18275,6 +18275,43 @@ $as_echo "#define _GLIBCXX11_USE_C99_MATH 1" >>confdefs.h
|
|||
|
||||
fi
|
||||
|
||||
# Check for the existence of <math.h> typedefs.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 float types for C++11 in <math.h>" >&5
|
||||
$as_echo_n "checking for ISO C99 float types for C++11 in <math.h>... " >&6; }
|
||||
if ${glibcxx_cv_c99_flt_eval_types+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <math.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
// Types
|
||||
typedef double_t my_double_t;
|
||||
typedef float_t my_float_t;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"; then :
|
||||
glibcxx_cv_c99_flt_eval_types=yes
|
||||
else
|
||||
glibcxx_cv_c99_flt_eval_types=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_flt_eval_types" >&5
|
||||
$as_echo "$glibcxx_cv_c99_flt_eval_types" >&6; }
|
||||
if test x"$glibcxx_cv_c99_flt_eval_types" = x"yes"; then
|
||||
|
||||
$as_echo "#define HAVE_C99_FLT_EVAL_TYPES 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
# Check for the existence of <math.h> functions.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 function support for C++11 in <math.h>" >&5
|
||||
$as_echo_n "checking for ISO C99 function support for C++11 in <math.h>... " >&6; }
|
||||
|
@ -18288,9 +18325,7 @@ else
|
|||
int
|
||||
main ()
|
||||
{
|
||||
// Types
|
||||
typedef double_t my_double_t;
|
||||
typedef float_t my_float_t;
|
||||
|
||||
// Hyperbolic
|
||||
acosh(0.0);
|
||||
acoshf(0.0f);
|
||||
|
|
|
@ -1877,9 +1877,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
#undef truncf
|
||||
#undef truncl
|
||||
|
||||
#ifdef _GLIBCXX_HAVE_C99_FLT_EVAL_TYPES
|
||||
// types
|
||||
using ::double_t;
|
||||
using ::float_t;
|
||||
#endif
|
||||
|
||||
// functions
|
||||
using ::acosh;
|
||||
|
|
Loading…
Add table
Reference in a new issue