diff options
Diffstat (limited to 'gnulib-m4/random.m4')
-rw-r--r-- | gnulib-m4/random.m4 | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/gnulib-m4/random.m4 b/gnulib-m4/random.m4 new file mode 100644 index 00000000..911c5d0e --- /dev/null +++ b/gnulib-m4/random.m4 @@ -0,0 +1,79 @@ +# random.m4 serial 8 +dnl Copyright (C) 2012-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_RANDOM], +[ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + 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]) + ]) + gl_CHECK_FUNCS_ANDROID([initstate], [[#include <stdlib.h>]]) + gl_CHECK_FUNCS_ANDROID([setstate], [[#include <stdlib.h>]]) + if test $gl_cv_func_random = no; then + HAVE_RANDOM=0 + HAVE_INITSTATE=0 + HAVE_SETSTATE=0 + else + if test $ac_cv_func_initstate = no; then + HAVE_INITSTATE=0 + fi + if test $ac_cv_func_setstate = no; then + HAVE_SETSTATE=0 + fi + fi + if test $HAVE_INITSTATE = 0; then + case "$gl_cv_onwards_func_initstate" in + future*) REPLACE_INITSTATE=1 ;; + esac + fi + if test $HAVE_SETSTATE = 0; then + case "$gl_cv_onwards_func_setstate" in + future*) REPLACE_SETSTATE=1 ;; + esac + fi + dnl On several platforms, random() is not multithread-safe. + if test $ac_cv_func_initstate = no || test $ac_cv_func_setstate = no \ + || case "$host_os" in \ + darwin* | freebsd* | solaris* | cygwin* | haiku*) true ;; \ + *) false ;; \ + esac + then + dnl In order to define initstate or setstate, we need to define all the + dnl functions at once. + REPLACE_RANDOM=1 + if test $ac_cv_func_initstate = yes; then + REPLACE_INITSTATE=1 + fi + if test $ac_cv_func_setstate = yes; then + REPLACE_SETSTATE=1 + fi + fi + + AC_CHECK_DECLS_ONCE([initstate]) + if test $ac_cv_have_decl_initstate = no; then + HAVE_DECL_INITSTATE=0 + fi + + AC_CHECK_DECLS_ONCE([setstate]) + if test $ac_cv_have_decl_setstate = no; then + HAVE_DECL_SETSTATE=0 + fi +]) + +# Prerequisites of lib/random.c. +AC_DEFUN([gl_PREREQ_RANDOM], [ + : +]) |