summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--m4/pthread_h.m444
-rw-r--r--modules/pthread2
-rw-r--r--modules/pthread-h3
-rw-r--r--modules/pthread-h-c++-tests2
5 files changed, 24 insertions, 39 deletions
diff --git a/ChangeLog b/ChangeLog
index 2bdf7d61d4..20af670e63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2019-07-14 Bruno Haible <bruno@clisp.org>
+ pthread-h: Respect --enable-threads={posix|windows} option on mingw.
+ * m4/pthread_h.m4 (gl_PTHREAD_H): Require gl_THREADLIB. Set
+ HAVE_PTHREAD_H if gl_threads_api is 'windows'.
+ (LIB_PTHREAD): Rely on $LIBMULTITHREAD from threadlib.m4.
+ * modules/pthread (Link): Change to $(LIBMULTITHREAD).
+ * modules/pthread-h (Depends-on): Add threadlib.
+ (Link): Change to $(LIBTHREAD).
+ * modules/pthread-h-c++-tests (test_pthread_c___LDADD): Use
+ $(LIBMULTITHREAD) instead of $(LIB_PTHREAD).
+
+2019-07-14 Bruno Haible <bruno@clisp.org>
+
pthread-h: Add C++ tests.
* tests/test-pthread-c++.cc: New file.
* modules/pthread-h-c++-tests: New file.
diff --git a/m4/pthread_h.m4 b/m4/pthread_h.m4
index d55a471b39..689d41ddf9 100644
--- a/m4/pthread_h.m4
+++ b/m4/pthread_h.m4
@@ -1,4 +1,4 @@
-# pthread_h.m4 serial 1
+# pthread_h.m4 serial 2
dnl Copyright (C) 2009-2019 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -10,8 +10,12 @@ AC_DEFUN([gl_PTHREAD_H],
dnl once only, before all statements that occur in other macros.
AC_REQUIRE([gl_PTHREAD_H_DEFAULTS])
+ AC_REQUIRE([gl_THREADLIB])
+
gl_CHECK_NEXT_HEADERS([pthread.h])
- if test $ac_cv_header_pthread_h = yes; then
+ dnl On mingw, if --enable-threads=windows or gl_AVOID_WINPTHREAD is used,
+ dnl ignore the <pthread.h> from the mingw-w64 winpthreads library.
+ if test $ac_cv_header_pthread_h = yes && test $gl_threads_api != windows; then
HAVE_PTHREAD_H=1
else
HAVE_PTHREAD_H=0
@@ -38,40 +42,8 @@ AC_DEFUN([gl_PTHREAD_H],
AC_REQUIRE([AC_C_RESTRICT])
- LIB_PTHREAD=
- if test $ac_cv_header_pthread_h = yes; then
- 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 '' '-pthread' '-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
+ dnl For backward compatibility with gnulib versions <= 2019-07.
+ LIB_PTHREAD="$LIBMULTITHREAD"
AC_SUBST([LIB_PTHREAD])
])
diff --git a/modules/pthread b/modules/pthread
index 9e5a7340a4..a778cb163f 100644
--- a/modules/pthread
+++ b/modules/pthread
@@ -19,7 +19,7 @@ Include:
<pthread.h>
Link:
-$(LIB_PTHREAD)
+$(LIBMULTITHREAD)
License:
LGPLv2+
diff --git a/modules/pthread-h b/modules/pthread-h
index 370552a031..3054ce45c0 100644
--- a/modules/pthread-h
+++ b/modules/pthread-h
@@ -10,6 +10,7 @@ extensions
extern-inline
sched
time
+threadlib
configure.ac-early:
AC_DEFINE([_REENTRANT], 1, [For thread-safety on OSF/1, Solaris.])
@@ -46,7 +47,7 @@ Include:
<pthread.h>
Link:
-$(LIB_PTHREAD)
+$(LIBTHREAD)
License:
LGPLv2+
diff --git a/modules/pthread-h-c++-tests b/modules/pthread-h-c++-tests
index 1886b0a276..225c7f8834 100644
--- a/modules/pthread-h-c++-tests
+++ b/modules/pthread-h-c++-tests
@@ -15,5 +15,5 @@ if ANSICXX
TESTS += test-pthread-c++
check_PROGRAMS += test-pthread-c++
test_pthread_c___SOURCES = test-pthread-c++.cc
-test_pthread_c___LDADD = $(LDADD) $(LIB_PTHREAD)
+test_pthread_c___LDADD = $(LDADD) $(LIBMULTITHREAD)
endif