Mercurial > hg > octave-lojdl > gnulib-hg
changeset 16969:b284d21804b8
pthread: check for both pthread_create and pthread_join
* m4/pthread.m4 (gl_PTHREAD_CHECK): Revert previous change, but
alter the check so that it tests for both pthread_create and
pthread_join. This should be more portable to hosts like OSF/1 5.1.
Suggested by Bruno Haible and Richard Yao in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-07/msg00048.html>.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Thu, 05 Jul 2012 18:42:11 -0700 |
parents | 20011163d6c7 |
children | 536d27654da7 |
files | ChangeLog m4/pthread.m4 |
diffstat | 2 files changed, 39 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2012-07-05 Paul Eggert <eggert@cs.ucla.edu> + pthread: check for both pthread_create and pthread_join + * m4/pthread.m4 (gl_PTHREAD_CHECK): Revert previous change, but + alter the check so that it tests for both pthread_create and + pthread_join. This should be more portable to hosts like OSF/1 5.1. + Suggested by Bruno Haible and Richard Yao in + <http://lists.gnu.org/archive/html/bug-gnulib/2012-07/msg00048.html>. + parse-datetime: doc tuneup * doc/parse-datetime.texi: Index "leap seconds" and fix minor spacing issues.
--- a/m4/pthread.m4 +++ b/m4/pthread.m4 @@ -1,4 +1,4 @@ -# pthread.m4 serial 4 +# pthread.m4 serial 5 dnl Copyright (C) 2009-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -38,12 +38,37 @@ LIB_PTHREAD= if test $ac_cv_header_pthread_h = yes; then - gl_saved_libs=$LIBS - AC_SEARCH_LIBS([pthread_create], [pthread], - [if test "$ac_cv_search_pthread_create" != "none required"; then - LIB_PTHREAD="$ac_cv_search_pthread_create" - fi]) - LIBS="$gl_saved_libs" + 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. + 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> + 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_lib_pthread" != "none required"; then + LIB_PTHREAD="$gl_cv_lib_pthread" + fi fi AC_SUBST([LIB_PTHREAD])