[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ./m4/pthread.m4 causes coreutils build failure on FreeBSD 9
From: |
Paul Eggert |
Subject: |
Re: ./m4/pthread.m4 causes coreutils build failure on FreeBSD 9 |
Date: |
Thu, 05 Jul 2012 18:45:58 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 |
On 07/05/2012 02:13 AM, Richard Yao wrote:
> It sounds like we need a test for pthread_create() and another for
> pthread_join().
OK, I coded up and pushed the following patch, can you please
give it a try? It works on Fedora 15 and Solaris 10, but I
haven't tested it on other platforms.
---
ChangeLog | 7 +++++++
m4/pthread.m4 | 39 ++++++++++++++++++++++++++++++++-------
2 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 80e25b1..78b2ab3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2012-07-05 Paul Eggert <address@hidden>
+ 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.
diff --git a/m4/pthread.m4 b/m4/pthread.m4
index 99c1d20..70c185c 100644
--- 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 @@ AC_DEFUN([gl_PTHREAD_CHECK],
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])
--
1.7.6.5