| sinclude(./aclocal.m4)dnl Autoconf lossage |
| GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. |
| # Local configure fragment for sysdeps/unix/sysv/linux/mips. |
| |
| AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if (_MIPS_SIM != _ABIO32) |
| #error Not O32 ABI |
| #endif])], |
| [libc_mips_abi=o32], |
| [AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if (_MIPS_SIM != _ABIN32) |
| #error Not N32 ABI |
| #endif])], |
| [libc_mips_abi=n32], |
| [AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if (_MIPS_SIM != _ABI64) |
| #error Not 64 ABI |
| #endif])], |
| [libc_mips_abi=n64], |
| [])])]) |
| |
| if test -z "$libc_mips_abi"; then |
| AC_MSG_ERROR([could not determine what ABI the compiler is using]) |
| fi |
| |
| AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if !defined(__mips_soft_float) |
| #error Not soft ABI |
| #endif])], |
| [libc_mips_float=soft], |
| [AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if !defined(__mips_hard_float) |
| #error Not hard ABI |
| #endif])], |
| [libc_mips_float=hard], |
| [])]) |
| |
| if test -z "$libc_mips_float"; then |
| AC_MSG_ERROR([could not determine if compiler is using hard or soft floating point ABI]) |
| fi |
| |
| libc_mips_o32_fp= |
| libc_cv_mips_fp64= |
| libc_cv_mips_modd_spreg= |
| |
| if test x"$libc_mips_abi" = xo32 -a x"$libc_mips_float" = xhard; then |
| AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if !defined(__mips_fpr) |
| #error Missing FPR sizes |
| #endif])], |
| [AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if (__mips_fpr != 32) |
| #error Not FP32 |
| #endif])], |
| [libc_mips_o32_fp=32], |
| [AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if (__mips_fpr != 0) || !defined(_MIPS_SPFPSET) || (_MIPS_SPFPSET != 16) |
| #error Not FPXX (without odd single-precision registers) |
| #endif])], |
| [libc_mips_o32_fp=xx], |
| [AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if (__mips_fpr != 0) |
| #error Not FPXX (with odd single precision registers) |
| #endif])], |
| [libc_mips_o32_fp=xxo], |
| [AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if (__mips_fpr != 64) || !defined(_MIPS_SPFPSET) || (_MIPS_SPFPSET != 16) |
| #error Not FP64A |
| #endif])], |
| [libc_mips_o32_fp=64a], |
| [AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #if (__mips_fpr != 64) |
| #error Not FP64 |
| #endif])], |
| [libc_mips_o32_fp=64], |
| [])])])])])], |
| []) |
| |
| LIBC_TRY_CC_OPTION([-mfp64], [libc_cv_mips_fp64=yes], [libc_cv_mips_fp64=no]) |
| LIBC_TRY_CC_OPTION([-Werror -modd-spreg], [libc_cv_mips_modd_spreg=yes], [libc_cv_mips_modd_spreg=no]) |
| fi |
| LIBC_CONFIG_VAR([o32-fpabi],[${libc_mips_o32_fp}]) |
| LIBC_CONFIG_VAR([has-mpf64],[${libc_cv_mips_fp64}]) |
| LIBC_CONFIG_VAR([has-modd-spreg],[${libc_cv_mips_modd_spreg}]) |
| |
| AC_COMPILE_IFELSE( |
| [AC_LANG_PROGRAM([ |
| #include <linux/prctl.h> |
| #if !defined(PR_GET_FP_MODE) || !defined(PR_SET_FP_MODE) |
| #error New prctl support for setting FP modes not found |
| #endif])], |
| [libc_mips_mode_switch=yes], |
| [libc_mips_mode_switch=no]) |
| LIBC_CONFIG_VAR([mips-mode-switch],[${libc_mips_mode_switch}]) |
| |
| AC_CACHE_CHECK([whether the compiler is using the 2008 NaN encoding], |
| libc_cv_mips_nan2008, [AC_EGREP_CPP(yes, [dnl |
| #ifdef __mips_nan2008 |
| yes |
| #endif], libc_cv_mips_nan2008=yes, libc_cv_mips_nan2008=no)]) |
| |
| libc_mips_nan= |
| if test x"$libc_cv_mips_nan2008" = xyes; then |
| libc_mips_nan=_2008 |
| fi |
| |
| LIBC_CONFIG_VAR([default-abi], |
| [${libc_mips_abi}_${libc_mips_float}${libc_mips_nan}]) |
| |
| case $machine in |
| mips/mips64/n64/*) |
| LIBC_SLIBDIR_RTLDDIR([lib64], [lib64]) |
| ;; |
| mips/mips64/n32/*) |
| LIBC_SLIBDIR_RTLDDIR([lib32], [lib32]) |
| ;; |
| esac |
| |
| libc_cv_gcc_unwind_find_fde=yes |
| |
| if test -z "$arch_minimum_kernel"; then |
| if test x$libc_cv_mips_nan2008 = xyes; then |
| arch_minimum_kernel=4.5.0 |
| fi |
| fi |