changeset 39368:138b53d2c233

random: Fix compilation error on Android. * m4/random.m4 (gl_FUNC_RANDOM): Use AC_LINK_IFELSE instead of AC_CHECK_FUNC.
author Bruno Haible <bruno@clisp.org>
date Sun, 13 May 2018 15:49:40 +0200
parents 9a307dd072b7
children b224f0eb9bbd
files ChangeLog m4/random.m4
diffstat 2 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun May 13 15:31:48 2018 +0200
+++ b/ChangeLog	Sun May 13 15:49:40 2018 +0200
@@ -1,3 +1,9 @@
+2018-05-13  Bruno Haible  <bruno@clisp.org>
+
+	random: Fix compilation error on Android.
+	* m4/random.m4 (gl_FUNC_RANDOM): Use AC_LINK_IFELSE instead of
+	AC_CHECK_FUNC.
+
 2018-05-13  Bruno Haible  <bruno@clisp.org>
 
 	grantpt: Fix compilation error on Android.
--- a/m4/random.m4	Sun May 13 15:31:48 2018 +0200
+++ b/m4/random.m4	Sun May 13 15:49:40 2018 +0200
@@ -1,4 +1,4 @@
-# random.m4 serial 2
+# random.m4 serial 3
 dnl Copyright (C) 2012-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -8,8 +8,18 @@
 [
   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
 
-  AC_CHECK_FUNCS([random])
-  if test $ac_cv_func_random = no; then
+  dnl We can't use AC_CHECK_FUNC here, because random() is defined as a
+  dnl static inline function when compiling for Android 4.4 or older.
+  AC_CACHE_CHECK([for random], [gl_cv_func_random],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <stdlib.h>]],
+          [[return random() == 0;]])
+       ],
+       [gl_cv_func_random=yes],
+       [gl_cv_func_random=no])
+    ])
+  if test $gl_cv_func_random = no; then
     HAVE_RANDOM=0
   fi