]> Savannah Git Hosting - gnulib.git/commitdiff
c-strtod: Fix configure test for Android.
authorBruno Haible <bruno@clisp.org>
Sun, 13 May 2018 14:03:03 +0000 (16:03 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 13 May 2018 14:35:49 +0000 (16:35 +0200)
* m4/c-strtod.m4 (gl_C_STRTOD): Use AC_LINK_IFELSE instead of
AC_CHECK_FUNC.

ChangeLog
m4/c-strtod.m4

index 908d4ea4dde5c37d508bdc41ca9d768e0a97b355..bb1f4c29736e489dffbacda7564612a13d10d961 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-05-13  Bruno Haible  <bruno@clisp.org>
+
+       c-strtod: Fix configure test for Android.
+       * m4/c-strtod.m4 (gl_C_STRTOD): Use AC_LINK_IFELSE instead of
+       AC_CHECK_FUNC.
+
 2018-05-13  Bruno Haible  <bruno@clisp.org>
 
        random: Fix compilation error on Android.
index ccff0e6e8a28aa927b6919bd393c66c14fc0499d..9282cee58e974d83e1638e9e70120b4e67d521fe 100644 (file)
@@ -1,4 +1,4 @@
-# c-strtod.m4 serial 15
+# c-strtod.m4 serial 16
 
 # Copyright (C) 2004-2006, 2009-2018 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
@@ -37,7 +37,34 @@ dnl Prerequisites of lib/c-strtod.c.
 AC_DEFUN([gl_C_STRTOD],
 [
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-  AC_CHECK_FUNCS([strtod_l])
+
+  AC_CHECK_HEADERS_ONCE([xlocale.h])
+  dnl We can't use AC_CHECK_FUNC here, because strtod_l() is defined as a
+  dnl static inline function when compiling for Android 7.1 or older.
+  AC_CACHE_CHECK([for strtod_l], [gl_cv_func_strtod_l],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <stdlib.h>
+            #include <locale.h>
+            #if HAVE_XLOCALE_H
+            # include <xlocale.h>
+            #endif
+            locale_t loc;
+          ]],
+          [[char *end;
+            return strtod_l("0",&end,loc) < 0.0;
+          ]])
+       ],
+       [gl_cv_func_strtod_l=yes],
+       [gl_cv_func_strtod_l=no])
+    ])
+  if test $gl_cv_func_strtod_l = yes; then
+    HAVE_STRTOD_L=1
+  else
+    HAVE_STRTOD_L=0
+  fi
+  AC_DEFINE_UNQUOTED([HAVE_STRTOD_L], [$HAVE_STRTOD_L],
+    [Define to 1 if the system has the 'strtod_l' function.])
 ])
 
 dnl Prerequisites of lib/c-strtold.c.