]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
sysdeps: powerpc: restore -mlong-double-128 check
authorSam James <sam@gentoo.org>
Tue, 1 Apr 2025 20:56:52 +0000 (21:56 +0100)
committerSam James <sam@gentoo.org>
Wed, 2 Apr 2025 13:57:40 +0000 (14:57 +0100)
We mistakenly dropped the check in 27b96e069aad17cefea9437542180bff448ac3a0;
there's some other checks which we *can* drop, but let's worry about that
later.

Fixes the build on ppc64le where GCC is configured with --with-long-double-format=ieee.

Reviewed-by: Andreas Schwab <schwab@suse.de>
sysdeps/unix/sysv/linux/powerpc/configure
sysdeps/unix/sysv/linux/powerpc/configure.ac

index 6fa7589530058512c5dd00a9a3de0fe799e14b8e..61ae675c1a94891c427c6edfe3558dd32adc840b 100644 (file)
@@ -1,6 +1,89 @@
 # This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/unix/sysv/linux/powerpc/.
 
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format" >&5
+printf %s "checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format... " >&6; }
+if test ${libc_cv_mlong_double_128ibm+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mlong-double-128"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <float.h>
+int
+main (void)
+{
+
+#if LDBL_MANT_DIG != 106
+# error "compiler doesn't implement IBM extended format of long double"
+#endif
+long double foobar (long double x) { return x; }
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  libc_cv_mlong_double_128ibm=yes
+else case e in #(
+  e) libc_cv_mlong_double_128ibm=no ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+CFLAGS="$save_CFLAGS" ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mlong_double_128ibm" >&5
+printf "%s\n" "$libc_cv_mlong_double_128ibm" >&6; }
+
+if test "$libc_cv_mlong_double_128ibm" = no; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS supports -mabi=ibmlongdouble" >&5
+printf %s "checking whether $CC $CFLAGS supports -mabi=ibmlongdouble... " >&6; }
+if test ${libc_cv_mabi_ibmlongdouble+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e)   save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <float.h>
+int
+main (void)
+{
+
+#if LDBL_MANT_DIG != 106
+# error "compiler doesn't implement IBM extended format of long double"
+#endif
+long double foobar (long double x) { return x; }
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  libc_cv_mabi_ibmlongdouble=yes
+else case e in #(
+  e) libc_cv_mabi_ibmlongdouble=no ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+  CFLAGS="$save_CFLAGS" ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mabi_ibmlongdouble" >&5
+printf "%s\n" "$libc_cv_mabi_ibmlongdouble" >&6; }
+
+  if test "$libc_cv_mabi_ibmlongdouble" = yes; then
+    CFLAGS="$CFLAGS -mabi=ibmlongdouble"
+  else
+    as_fn_error $? "this configuration requires -mlong-double-128 IBM extended format support" "$LINENO" 5
+  fi
+fi
+
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for linker that supports --no-tls-get-addr-optimize" >&5
 printf %s "checking for linker that supports --no-tls-get-addr-optimize... " >&6; }
 libc_linker_feature=no
index bcf0c624425d6eb95f62d44eb32fba473be13a0c..8d2ec60f68accbc692cc84eff55b1188443af5a3 100644 (file)
@@ -2,6 +2,40 @@ 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/powerpc/.
 
+AC_CACHE_CHECK(whether $CC $CFLAGS -mlong-double-128 uses IBM extended format,
+              libc_cv_mlong_double_128ibm, [dnl
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mlong-double-128"
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <float.h>]], [[
+#if LDBL_MANT_DIG != 106
+# error "compiler doesn't implement IBM extended format of long double"
+#endif
+long double foobar (long double x) { return x; }]])],
+              libc_cv_mlong_double_128ibm=yes,
+              libc_cv_mlong_double_128ibm=no)
+CFLAGS="$save_CFLAGS"])
+
+if test "$libc_cv_mlong_double_128ibm" = no; then
+  AC_CACHE_CHECK(whether $CC $CFLAGS supports -mabi=ibmlongdouble,
+                libc_cv_mabi_ibmlongdouble, [dnl
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble"
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <float.h>]], [[
+#if LDBL_MANT_DIG != 106
+# error "compiler doesn't implement IBM extended format of long double"
+#endif
+long double foobar (long double x) { return x; }]])],
+                libc_cv_mabi_ibmlongdouble=yes,
+                libc_cv_mabi_ibmlongdouble=no)
+  CFLAGS="$save_CFLAGS"])
+
+  if test "$libc_cv_mabi_ibmlongdouble" = yes; then
+    CFLAGS="$CFLAGS -mabi=ibmlongdouble"
+  else
+    AC_MSG_ERROR([this configuration requires -mlong-double-128 IBM extended format support])
+  fi
+fi
+
 LIBC_LINKER_FEATURE([--no-tls-get-addr-optimize], [-Wl,--no-tls-get-addr-optimize],
                     [libc_cv_tls_get_addr_optimize=yes], [libc_cv_tls_get_addr_optimize=no])
 LIBC_CONFIG_VAR([have-tls-get-addr-optimize], [$libc_cv_tls_get_addr_optimize])