public inbox for newlib-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] newlib: switch to autoconf long double macro
@ 2022-01-21 12:08 Michael Frysinger
  0 siblings, 0 replies; only message in thread
From: Michael Frysinger @ 2022-01-21 12:08 UTC (permalink / raw)
  To: newlib-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=55e09d5e8c1e9cd7d54952af706341ae45a67e3a

commit 55e09d5e8c1e9cd7d54952af706341ae45a67e3a
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Thu Jan 20 22:47:47 2022 -0500

    newlib: switch to autoconf long double macro
    
    Now that we require a recent version of autoconf, we can rely on this
    macro working.  This change was already made to libm, but these other
    dirs were missed as I didn't notice it being duplicated in 3 places.

Diff:
---
 newlib/configure         | 68 +++++++++++++++++++++++++++---------------------
 newlib/configure.ac      | 35 +++----------------------
 newlib/libc/configure    | 58 ++++++++++++++++++++++++++---------------
 newlib/libc/configure.ac | 21 ++-------------
 newlib/newlib.hin        |  3 +++
 5 files changed, 84 insertions(+), 101 deletions(-)

diff --git a/newlib/configure b/newlib/configure
index 879392da8..2d015dbb6 100755
--- a/newlib/configure
+++ b/newlib/configure
@@ -13315,46 +13315,54 @@ $as_echo "#define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1" >>confdefs.h
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether long double type exists" >&5
-$as_echo_n "checking whether long double type exists... " >&6; }
-if ${acnewlib_cv_type_long_double+:} false; then :
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
+$as_echo_n "checking for long double... " >&6; }
+if ${ac_cv_type_long_double+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat > conftest.c <<EOF
-/* Check two ways:  float.h defines and direct type declaration.  */
-#include <float.h>
-#if defined(LDBL_MANT_DIG)
-  #define _HAVE_LONG_DOUBLE
- #else
-  #error "LDBL != DBL"
-#endif
-long double test() {
-long double ld = 0.0L;
-return ld;
+  if test "$GCC" = yes; then
+       ac_cv_type_long_double=yes
+     else
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* The Stardent Vistra knows sizeof (long double), but does
+		 not support it.  */
+	      long double foo = 0.0L;
+int
+main ()
+{
+static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
+	      sizeof (double) <= sizeof (long double))];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
 }
-EOF
-if { ac_try='${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
-							1>&5'
-  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }
-then
-  acnewlib_cv_type_long_double=yes;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_type_long_double=yes
 else
-  acnewlib_cv_type_long_double=no;
+  ac_cv_type_long_double=no
 fi
-rm -f conftest*
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_type_long_double" >&5
-$as_echo "$acnewlib_cv_type_long_double" >&6; }
-if test $acnewlib_cv_type_long_double = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
+$as_echo "$ac_cv_type_long_double" >&6; }
+  if test $ac_cv_type_long_double = yes; then
+
+$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
+
+  fi
+
+if test $ac_cv_type_long_double = yes; then
 
 $as_echo "#define _HAVE_LONG_DOUBLE 1" >>confdefs.h
 
 fi
- if test x"$acnewlib_cv_type_long_double" = x"yes"; then
+ if test x"$ac_cv_type_long_double" = x"yes"; then
   HAVE_LONG_DOUBLE_TRUE=
   HAVE_LONG_DOUBLE_FALSE='#'
 else
diff --git a/newlib/configure.ac b/newlib/configure.ac
index b4d11f5e3..c54d2047a 100644
--- a/newlib/configure.ac
+++ b/newlib/configure.ac
@@ -687,39 +687,12 @@ if test $libc_cv_cc_loop_to_function = yes; then
 fi
 AC_SUBST(libc_cv_cc_loop_to_function)
 
-dnl Autoconf 2.59 doesn't support the AC_TYPE_LONG_DOUBLE macro. Instead of:
-dnl   AC_TYPE_LONG_DOUBLE
-dnl   AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
-dnl we specify our own long double test.
-dnl Additionally, ac_cv_objext is broken so that AC_COMPILE_IFELSE cannot be
-dnl used, so use AC_TRY_COMMAND instead.
-AC_CACHE_CHECK(whether long double type exists,
-	       acnewlib_cv_type_long_double, [dnl
-cat > conftest.c <<EOF
-/* Check two ways:  float.h defines and direct type declaration.  */
-#include <float.h>
-#if defined(LDBL_MANT_DIG)
-  #define _HAVE_LONG_DOUBLE
- #else
-  #error "LDBL != DBL"
-#endif
-long double test() {
-long double ld = 0.0L;
-return ld;
-}
-EOF
-if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
-							1>&AS_MESSAGE_LOG_FD])
-then
-  acnewlib_cv_type_long_double=yes;
-else
-  acnewlib_cv_type_long_double=no;
-fi
-rm -f conftest*])
-if test $acnewlib_cv_type_long_double = yes; then
+AC_TYPE_LONG_DOUBLE
+dnl Export the setting for our installed headers to check.
+if test $ac_cv_type_long_double = yes; then
   AC_DEFINE(_HAVE_LONG_DOUBLE, 1, [Define if the platform supports long double type.])
 fi
-AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$acnewlib_cv_type_long_double" = x"yes")
+AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
 
 AC_CACHE_CHECK(whether long double equals double,
 	       newlib_cv_ldbl_eq_dbl, [dnl
diff --git a/newlib/libc/configure b/newlib/libc/configure
index 38eaf7a65..1afafab77 100755
--- a/newlib/libc/configure
+++ b/newlib/libc/configure
@@ -12229,33 +12229,49 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking long double support" >&5
-$as_echo_n "checking Checking long double support... " >&6; }
-if ${acnewlib_cv_type_long_double+:} false; then :
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
+$as_echo_n "checking for long double... " >&6; }
+if ${ac_cv_type_long_double+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat > conftest.c <<EOF
-int main() {
-long double x = 0.0L;
-return 0;
+  if test "$GCC" = yes; then
+       ac_cv_type_long_double=yes
+     else
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* The Stardent Vistra knows sizeof (long double), but does
+		 not support it.  */
+	      long double foo = 0.0L;
+int
+main ()
+{
+static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
+	      sizeof (double) <= sizeof (long double))];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
 }
-EOF
-if { ac_try='${CC} $CFLAGS $CPPFLAGS -c conftest.c 1>&5'
-  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }
-then
-  acnewlib_cv_type_long_double=yes
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_type_long_double=yes
 else
-  acnewlib_cv_type_long_double=no
+  ac_cv_type_long_double=no
 fi
-rm -f conftest*
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_type_long_double" >&5
-$as_echo "$acnewlib_cv_type_long_double" >&6; }
- if test x"$acnewlib_cv_type_long_double" = x"yes"; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
+$as_echo "$ac_cv_type_long_double" >&6; }
+  if test $ac_cv_type_long_double = yes; then
+
+$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
+
+  fi
+
+ if test x"$ac_cv_type_long_double" = x"yes"; then
   HAVE_LONG_DOUBLE_TRUE=
   HAVE_LONG_DOUBLE_FALSE='#'
 else
diff --git a/newlib/libc/configure.ac b/newlib/libc/configure.ac
index 29a839623..c23282d08 100644
--- a/newlib/libc/configure.ac
+++ b/newlib/libc/configure.ac
@@ -184,25 +184,8 @@ fi
 AC_SUBST(LIBC_SYS_LIB)
 AC_SUBST(sys_dir)
 
-dnl Autoconf 2.59 doesn't support the AC_TYPE_LONG_DOUBLE macro. Instead of:
-dnl   AC_TYPE_LONG_DOUBLE
-dnl   AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
-dnl we specify our own long double test.
-AC_CACHE_CHECK([Checking long double support], [acnewlib_cv_type_long_double],[dnl
-cat > conftest.c <<EOF
-int main() {
-long double x = 0.0L;
-return 0;
-}
-EOF
-if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c conftest.c 1>&AS_MESSAGE_LOG_FD])
-then
-  acnewlib_cv_type_long_double=yes
-else
-  acnewlib_cv_type_long_double=no
-fi
-rm -f conftest*])
-AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$acnewlib_cv_type_long_double" = x"yes")
+AC_TYPE_LONG_DOUBLE
+AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
 
 dnl iconv library will be compiled if --enable-newlib-iconv option is enabled
 AM_CONDITIONAL(ENABLE_NEWLIB_ICONV, test x${newlib_iconv} != x)
diff --git a/newlib/newlib.hin b/newlib/newlib.hin
index 69a7cb7a7..feeb409bb 100644
--- a/newlib/newlib.hin
+++ b/newlib/newlib.hin
@@ -14,6 +14,9 @@
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
+/* Define to 1 if the system has the type `long double'. */
+#undef HAVE_LONG_DOUBLE
+
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-01-21 12:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-21 12:08 [newlib-cygwin] newlib: switch to autoconf long double macro Michael Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).