diff --git a/configure.in b/configure.in index 67c3adccf..327cb0a9c 100644 --- a/configure.in +++ b/configure.in @@ -254,7 +254,7 @@ AC_CHECK_HEADERS(values.h, AC_DEFINE(HAVE_VALUES_H)) AC_CHECK_HEADER(alloca.h, glib_have_alloca_h=yes, glib_have_alloca_h=no) # Check for some functions -AC_CHECK_FUNCS(localtime_r lstat strerror strsignal memmove vsnprintf vasprintf strcasecmp strncasecmp poll) +AC_CHECK_FUNCS(localtime_r rand_r lstat strerror strsignal memmove vsnprintf vasprintf strcasecmp strncasecmp poll) # Check for sys_errlist AC_MSG_CHECKING(for sys_errlist) @@ -586,6 +586,9 @@ if test "x$want_threads" = xyes || test "x$want_threads" = xposix; then if test "x$have_threads" = xnone; then AC_CHECK_LIB(pthreads, pthread_attr_init, have_threads=posix) fi + if test "x$have_threads" = xnone; then + AC_CHECK_LIB(c_r, pthread_attr_init, have_threads=posix) + fi if test "x$have_threads" = xnone; then AC_CHECK_FUNC(pthread_attr_init, have_threads=posix) fi @@ -621,6 +624,10 @@ case $have_threads in AC_CHECK_LIB(pthreads, pthread_attr_init, G_THREAD_LIBS="-lpthreads") fi + if test "x$G_THREAD_LIBS" = xerror; then + AC_CHECK_LIB(c_r, pthread_attr_init, + G_THREAD_LIBS="-lc_r") + fi if test "x$G_THREAD_LIBS" = xerror; then AC_CHECK_FUNC(pthread_attr_init, G_THREAD_LIBS="") fi diff --git a/gthread/testgthread.c b/gthread/testgthread.c index 8fabc5add..2eb5b4861 100644 --- a/gthread/testgthread.c +++ b/gthread/testgthread.c @@ -1,3 +1,5 @@ +#include "config.h" + #include #define main testglib_main @@ -163,7 +165,11 @@ test_private_func (void *data) wait_thread (1); while (i < TEST_PRIVATE_ROUNDS) { +#ifdef HAVE_RAND_R guint random_value = rand_r (&seed) % 10000; +#else + guint random_value = rand() % 10000; +#endif guint *data = g_static_private_get (&private_key); if (!data) {