2
0
mirror of https://sourceware.org/git/binutils-gdb.git synced 2024-12-21 04:42:53 +08:00
binutils-gdb/config/math.m4
H.J. Lu 87c66b2e70 Sync config and libiberty with GCC
config/

2020-04-29  H.J. Lu  <hongjiu.lu@intel.com>

	Sync with GCC
	2020-04-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/94739
	* cet.m4 (GCC_CET_HOST_FLAGS): Add -fcf-protection=none to
	-Wl,-z,ibt,-z,shstk.  Check whether -fcf-protection=none
	-Wl,-z,ibt,-z,shstk works first.

	2020-04-25  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/94739
	* cet.m4 (GCC_CET_HOST_FLAGS): New.

	2020-04-22  Jakub Jelinek  <jakub@redhat.com>

	PR libfortran/94694
	PR libfortran/94586
	* math.m4 (GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1,
	GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2): New.

libiberty/

2020-04-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/94739
	* configure: Regenerated.
2020-04-29 14:25:36 -07:00

115 lines
3.0 KiB
Plaintext

dnl GCC_CHECK_LIBM
dnl
dnl Check whether -lm is available. This is a pre-requisite for
dnl GCC_CHECK_MATH_FUNC so that it will link with -lm.
AC_DEFUN([GCC_CHECK_LIBM],
[AC_CHECK_LIB([m],[sin])])
dnl GCC_CHECK_MATH_HEADERS
dnl
dnl Check for math.h and complex.h. This is a pre-requisite for
dnl GCC_CHECK_MATH_FUNC so that it includes the right headers.
dnl (Some systems, such as AIX or OpenVMS may define macro for math
dnl functions).
AC_DEFUN([GCC_CHECK_MATH_HEADERS],
[AC_CHECK_HEADERS_ONCE(math.h complex.h)])
dnl GCC_CHECK_MATH_FUNC([name])
dnl
dnl Check whether math function NAME is available on the system (by compiling
dnl and linking a C program) and run define HAVE_name on success.
dnl
dnl Note that OpenVMS system insists on including complex.h before math.h
AC_DEFUN([GCC_CHECK_MATH_FUNC],
[
AC_REQUIRE([GCC_CHECK_LIBM])
AC_REQUIRE([GCC_CHECK_MATH_HEADERS])
AC_CACHE_CHECK([for $1], [gcc_cv_math_func_$1],
[AC_LINK_IFELSE([AC_LANG_SOURCE([
#ifdef HAVE_COMPLEX_H
#include <complex.h>
#endif
#ifdef HAVE_MATH_H
#include <math.h>
#endif
int (*ptr)() = (int (*)())$1;
int
main ()
{
return 0;
}
])],
[gcc_cv_math_func_$1=yes],
[gcc_cv_math_func_$1=no])])
if test $gcc_cv_math_func_$1 = yes; then
AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1),[1],
[Define to 1 if you have the `$1' function.])
fi
])
dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1([name], [type])
dnl
dnl Check if math function NAME fallback for function with single
dnl TYPE argument and TYPE result can be implemented using
dnl __builtin_NAME expanded inline without needing unavailable math
dnl library function.
AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1],
[
AC_REQUIRE([GCC_CHECK_LIBM])
if test $gcc_cv_math_func_$1 = no; then
AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1],
[AC_LINK_IFELSE([AC_LANG_SOURCE([
$2
$1_fallback ($2 x)
{
return __builtin_$1 (x);
}
int
main ()
{
return 0;
}
])],
[gcc_cv_math_inline_builtin_$1=yes],
[gcc_cv_math_inline_builtin_$1=no])])
if test $gcc_cv_math_inline_builtin_$1 = yes; then
AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1],
[Define to 1 if `__builtin_$1' is expanded inline.])
fi
fi])
dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2([name], [type])
dnl
dnl Check if math function NAME fallback for function with two
dnl TYPE arguments and TYPE result can be implemented using
dnl __builtin_NAME expanded inline without needing unavailable math
dnl library function.
AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2],
[
AC_REQUIRE([GCC_CHECK_LIBM])
if test $gcc_cv_math_func_$1 = no; then
AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1],
[AC_LINK_IFELSE([AC_LANG_SOURCE([
$2
$1_fallback ($2 x, $2 y)
{
return __builtin_$1 (x, y);
}
int
main ()
{
return 0;
}
])],
[gcc_cv_math_inline_builtin_$1=yes],
[gcc_cv_math_inline_builtin_$1=no])])
if test $gcc_cv_math_inline_builtin_$1 = yes; then
AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1],
[Define to 1 if `__builtin_$1' is expanded inline.])
fi
fi])