[PATCH] newlib: libm: switch to autoconf long double macro

Mike Frysinger <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Now that we require a recent version of autoconf, we can rely on this
macro working.  We shift the call in configure.ac down a little to
help keep the generated diff minimal -- there should be no functional
difference otherwise.  This is because the autoconf macros will call
a bunch of standard toolchain macros first, and arguably the current
code is incorrect in how it does its testing.
---
 newlib/libm/configure    | 102 ++++++++++++++++++++++-----------------
 newlib/libm/configure.ac |  23 ++-------
 2 files changed, 62 insertions(+), 63 deletions(-)

diff --git a/newlib/libm/configure b/newlib/libm/configure
index 4dde4f7f83fa..4820ad28b715 100755
--- a/newlib/libm/configure
+++ b/newlib/libm/configure
@@ -635,6 +635,8 @@ am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
 LIBM_MACHINE_LIB
+HAVE_LONG_DOUBLE_FALSE
+HAVE_LONG_DOUBLE_TRUE
 subdirs
 CPP
 OTOOL64
@@ -739,8 +741,6 @@ build
 newlib_basedir
 MAY_SUPPLY_SYSCALLS_FALSE
 MAY_SUPPLY_SYSCALLS_TRUE
-HAVE_LONG_DOUBLE_FALSE
-HAVE_LONG_DOUBLE_TRUE
 NEWLIB_HW_FP_FALSE
 NEWLIB_HW_FP_TRUE
 target_alias
@@ -2194,41 +2194,6 @@ else
 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_n "(cached) " >&6
-else
-  cat > conftest.c <<EOF
-int main() {
-long double x = 0.0L;
-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
-else
-  acnewlib_cv_type_long_double=no
-fi
-rm -f conftest*
-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
-  HAVE_LONG_DOUBLE_TRUE=
-  HAVE_LONG_DOUBLE_FALSE='#'
-else
-  HAVE_LONG_DOUBLE_TRUE='#'
-  HAVE_LONG_DOUBLE_FALSE=
-fi
-
-
 ac_aux_dir=
 for ac_dir in ../.. "$srcdir"/../..; do
   if test -f "$ac_dir/install-sh"; then
@@ -11655,7 +11620,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11658 "configure"
+#line 11623 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11761,7 +11726,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11764 "configure"
+#line 11729 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12005,6 +11970,57 @@ fi
 subdirs="$subdirs machine"
 
 
+
+  { $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
+  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;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_type_long_double=yes
+else
+  ac_cv_type_long_double=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+fi
+{ $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
+  HAVE_LONG_DOUBLE_TRUE='#'
+  HAVE_LONG_DOUBLE_FALSE=
+fi
+
+
 LIBM_MACHINE_LIB=
 if test -n "${libm_machine_dir}"; then
   if test "${use_libtool}" = "yes"; then
@@ -12167,10 +12183,6 @@ if test -z "${NEWLIB_HW_FP_TRUE}" && test -z "${NEWLIB_HW_FP_FALSE}"; then
   as_fn_error $? "conditional \"NEWLIB_HW_FP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${HAVE_LONG_DOUBLE_TRUE}" && test -z "${HAVE_LONG_DOUBLE_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_LONG_DOUBLE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${MAY_SUPPLY_SYSCALLS_TRUE}" && test -z "${MAY_SUPPLY_SYSCALLS_FALSE}"; then
   as_fn_error $? "conditional \"MAY_SUPPLY_SYSCALLS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -12231,6 +12243,10 @@ if test -z "${USE_LIBTOOL_TRUE}" && test -z "${USE_LIBTOOL_FALSE}"; then
   as_fn_error $? "conditional \"USE_LIBTOOL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${HAVE_LONG_DOUBLE_TRUE}" && test -z "${HAVE_LONG_DOUBLE_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_LONG_DOUBLE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
diff --git a/newlib/libm/configure.ac b/newlib/libm/configure.ac
index c1b4dbb382c3..8887c49d21c8 100644
--- a/newlib/libm/configure.ac
+++ b/newlib/libm/configure.ac
@@ -13,26 +13,6 @@ AC_ARG_ENABLE(newlib_hw_fp,
  esac],[newlib_hw_fp=false])
 AM_CONDITIONAL(NEWLIB_HW_FP, test x$newlib_hw_fp = xtrue)
 
-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")
-
 dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake. 
 AC_CONFIG_AUX_DIR(../..)
 
@@ -50,6 +30,9 @@ fi
 
 AC_CONFIG_SUBDIRS(machine)
 
+AC_TYPE_LONG_DOUBLE
+AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
+
 LIBM_MACHINE_LIB=
 if test -n "${libm_machine_dir}"; then
   if test "${use_libtool}" = "yes"; then
-- 
2.33.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.