Commit 69a2d125 by Eric Botcazou Committed by Eric Botcazou

configure.ac: Check for trunc and truncf in libm.

	* configure.ac: Check for trunc and truncf in libm.
	* configure: Regenerate.
	* config.h.in: Likewise.
	* intrinsics/c99_functions.c (trunc, truncf): New functions.
	* c99_protos.h (trunc, truncf): Declare them.

From-SVN: r100040
parent 542b52dd
2005-05-21 Eric Botcazou <ebotcazou@libertysurf.fr>
* configure.ac: Check for trunc and truncf in libm.
* configure: Regenerate.
* config.h.in: Likewise.
* intrinsics/c99_functions.c (trunc, truncf): New functions.
* c99_protos.h (trunc, truncf): Declare them.
2005-05-18 Thomas Koenig <Thomas.Koenig@online.de> 2005-05-18 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/21127 PR libfortran/21127
......
...@@ -113,6 +113,14 @@ extern float tanf(float); ...@@ -113,6 +113,14 @@ extern float tanf(float);
extern float tanhf(float); extern float tanhf(float);
#endif #endif
#ifndef HAVE_TRUNC
extern double trunc(double x);
#endif
#ifndef HAVE_TRUNCF
extern float truncf(float x);
#endif
#ifndef HAVE_NEXTAFTERF #ifndef HAVE_NEXTAFTERF
extern float nextafterf(float, float); extern float nextafterf(float, float);
#endif #endif
......
...@@ -264,6 +264,12 @@ ...@@ -264,6 +264,12 @@
/* Define to 1 if you have the <time.h> header file. */ /* Define to 1 if you have the <time.h> header file. */
#undef HAVE_TIME_H #undef HAVE_TIME_H
/* libm includes trunc */
#undef HAVE_TRUNC
/* libm includes truncf */
#undef HAVE_TRUNCF
/* Define to 1 if you have the <unistd.h> header file. */ /* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H #undef HAVE_UNISTD_H
......
...@@ -2937,7 +2937,7 @@ if test "x$GCC" = "xyes"; then ...@@ -2937,7 +2937,7 @@ if test "x$GCC" = "xyes"; then
AM_FCFLAGS="-Wall" AM_FCFLAGS="-Wall"
## We like to use C99 routines when available. This makes sure that ## We like to use C99 routines when available. This makes sure that
## __STDC_VERSION__ is set such that libc includes make them available. ## __STDC_VERSION__ is set such that libc includes make them available.
AM_CFLAGS="-std=gnu99 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wextra -Wwrite-strings" AM_CFLAGS="-std=gnu99 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wextra -Wwrite-strings"
fi fi
...@@ -9570,6 +9570,150 @@ _ACEOF ...@@ -9570,6 +9570,150 @@ _ACEOF
fi fi
echo "$as_me:$LINENO: checking for trunc in -lm" >&5
echo $ECHO_N "checking for trunc in -lm... $ECHO_C" >&6
if test "${ac_cv_lib_m_trunc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char trunc ();
int
main ()
{
trunc ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_m_trunc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_m_trunc=no
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_m_trunc" >&5
echo "${ECHO_T}$ac_cv_lib_m_trunc" >&6
if test $ac_cv_lib_m_trunc = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TRUNC 1
_ACEOF
fi
echo "$as_me:$LINENO: checking for truncf in -lm" >&5
echo $ECHO_N "checking for truncf in -lm... $ECHO_C" >&6
if test "${ac_cv_lib_m_truncf+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char truncf ();
int
main ()
{
truncf ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_m_truncf=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_m_truncf=no
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_m_truncf" >&5
echo "${ECHO_T}$ac_cv_lib_m_truncf" >&6
if test $ac_cv_lib_m_truncf = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TRUNCF 1
_ACEOF
fi
echo "$as_me:$LINENO: checking for erf in -lm" >&5 echo "$as_me:$LINENO: checking for erf in -lm" >&5
echo $ECHO_N "checking for erf in -lm... $ECHO_C" >&6 echo $ECHO_N "checking for erf in -lm... $ECHO_C" >&6
if test "${ac_cv_lib_m_erf+set}" = set; then if test "${ac_cv_lib_m_erf+set}" = set; then
......
...@@ -206,6 +206,8 @@ AC_CHECK_LIB([m],[sinhf],[AC_DEFINE([HAVE_SINHF],[1],[libm includes sinhf])]) ...@@ -206,6 +206,8 @@ AC_CHECK_LIB([m],[sinhf],[AC_DEFINE([HAVE_SINHF],[1],[libm includes sinhf])])
AC_CHECK_LIB([m],[sqrtf],[AC_DEFINE([HAVE_SQRTF],[1],[libm includes sqrtf])]) AC_CHECK_LIB([m],[sqrtf],[AC_DEFINE([HAVE_SQRTF],[1],[libm includes sqrtf])])
AC_CHECK_LIB([m],[tanf],[AC_DEFINE([HAVE_TANF],[1],[libm includes tanf])]) AC_CHECK_LIB([m],[tanf],[AC_DEFINE([HAVE_TANF],[1],[libm includes tanf])])
AC_CHECK_LIB([m],[tanhf],[AC_DEFINE([HAVE_TANHF],[1],[libm includes tanhf])]) AC_CHECK_LIB([m],[tanhf],[AC_DEFINE([HAVE_TANHF],[1],[libm includes tanhf])])
AC_CHECK_LIB([m],[trunc],[AC_DEFINE([HAVE_TRUNC],[1],[libm includes trunc])])
AC_CHECK_LIB([m],[truncf],[AC_DEFINE([HAVE_TRUNCF],[1],[libm includes truncf])])
AC_CHECK_LIB([m],[erf],[AC_DEFINE([HAVE_ERF],[1],[libm includes erf])]) AC_CHECK_LIB([m],[erf],[AC_DEFINE([HAVE_ERF],[1],[libm includes erf])])
AC_CHECK_LIB([m],[erfc],[AC_DEFINE([HAVE_ERFC],[1],[libm includes erfc])]) AC_CHECK_LIB([m],[erfc],[AC_DEFINE([HAVE_ERFC],[1],[libm includes erfc])])
AC_CHECK_LIB([m],[erfcf],[AC_DEFINE([HAVE_ERFCF],[1],[libm includes erfcf])]) AC_CHECK_LIB([m],[erfcf],[AC_DEFINE([HAVE_ERFCF],[1],[libm includes erfcf])])
......
...@@ -202,6 +202,28 @@ tanhf(float x) ...@@ -202,6 +202,28 @@ tanhf(float x)
} }
#endif #endif
#ifndef HAVE_TRUNC
double
trunc(double x)
{
if (!isfinite (x))
return x;
if (x < 0.0)
return - floor (-x);
else
return floor (x);
}
#endif
#ifndef HAVE_TRUNCF
float
truncf(float x)
{
return (float) trunc (x);
}
#endif
#ifndef HAVE_NEXTAFTERF #ifndef HAVE_NEXTAFTERF
/* This is a portable implementation of nextafterf that is intended to be /* This is a portable implementation of nextafterf that is intended to be
independent of the floating point format or its in memory representation. independent of the floating point format or its in memory representation.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment