-# pthread.m4 serial 3
-dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
+# pthread.m4 serial 7
+dnl Copyright (C) 2009-2013 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.
test $ac_cv_type_pthread_t != yes ||
test $ac_cv_type_pthread_spinlock_t != yes; then
PTHREAD_H='pthread.h'
+ AC_LIBOBJ([pthread])
else
PTHREAD_H=
fi
dnl We cannot use AC_SEARCH_LIBS here, because on OSF/1 5.1 pthread_join
dnl is defined as a macro which expands to __phread_join, and libpthread
dnl contains a definition for __phread_join but none for pthread_join.
- AC_CACHE_CHECK([for library containing pthread_join],
- [gl_cv_search_pthread_join],
- [gl_saved_libs="$LIBS"
- gl_cv_search_pthread_join=
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <pthread.h>]],
- [[pthread_join (pthread_self (), (void **) 0);]])],
- [gl_cv_search_pthread_join="none required"])
- if test -z "$gl_cv_search_pthread_join"; then
- LIBS="-lpthread $gl_saved_libs"
+ dnl Also, FreeBSD 9 puts pthread_create in libpthread and pthread_join
+ dnl in libc, whereas on IRIX 6.5 the reverse is true; so check for both.
+ AC_CACHE_CHECK([for library containing pthread_create and pthread_join],
+ [gl_cv_lib_pthread],
+ [gl_saved_libs=$LIBS
+ gl_cv_lib_pthread=
+ for gl_lib_prefix in '' '-lpthread'; do
+ LIBS="$gl_lib_prefix $gl_saved_libs"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
- [[#include <pthread.h>]],
- [[pthread_join (pthread_self (), (void **) 0);]])],
- [gl_cv_search_pthread_join="-lpthread"])
- fi
+ [[#include <pthread.h>
+ void *noop (void *p) { return p; }]],
+ [[pthread_t pt;
+ void *arg = 0;
+ pthread_create (&pt, 0, noop, arg);
+ pthread_join (pthread_self (), &arg);]])],
+ [if test -z "$gl_lib_prefix"; then
+ gl_cv_lib_pthread="none required"
+ else
+ gl_cv_lib_pthread=$gl_lib_prefix
+ fi])
+ test -n "$gl_cv_lib_pthread" && break
+ done
LIBS="$gl_saved_libs"
])
- if test "$gl_cv_search_pthread_join" != "none required"; then
- LIB_PTHREAD="$gl_cv_search_pthread_join"
+ if test "$gl_cv_lib_pthread" != "none required"; then
+ LIB_PTHREAD="$gl_cv_lib_pthread"
fi
fi
AC_SUBST([LIB_PTHREAD])
- AC_REQUIRE([AC_C_INLINE])
AC_REQUIRE([AC_C_RESTRICT])
])