>From da1c4df8732c2805a10ce6534d310642418c21ae Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 13 May 2018 16:03:03 +0200 Subject: [PATCH 3/9] c-strtod: Fix configure test for Android. * m4/c-strtod.m4 (gl_C_STRTOD): Use AC_LINK_IFELSE instead of AC_CHECK_FUNC. --- ChangeLog | 6 ++++++ m4/c-strtod.m4 | 31 +++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 908d4ea..bb1f4c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2018-05-13 Bruno Haible + 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 + random: Fix compilation error on Android. * m4/random.m4 (gl_FUNC_RANDOM): Use AC_LINK_IFELSE instead of AC_CHECK_FUNC. diff --git a/m4/c-strtod.m4 b/m4/c-strtod.m4 index ccff0e6..9282cee 100644 --- a/m4/c-strtod.m4 +++ b/m4/c-strtod.m4 @@ -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 + #include + #if HAVE_XLOCALE_H + # include + #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. -- 2.7.4