]> Savannah Git Hosting - gnulib.git/commitdiff
pthread-h: Respect --enable-threads={posix|windows} option on mingw.
authorBruno Haible <bruno@clisp.org>
Mon, 15 Jul 2019 00:36:21 +0000 (02:36 +0200)
committerBruno Haible <bruno@clisp.org>
Mon, 15 Jul 2019 00:36:21 +0000 (02:36 +0200)
* 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).

ChangeLog
m4/pthread_h.m4
modules/pthread
modules/pthread-h
modules/pthread-h-c++-tests

index 2bdf7d61d44c77d621493a123292f1c8405892b8..20af670e6374f102bd2b1eda2a99451b0f192976 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+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.
index d55a471b3991469d28ec3c3f5c2611b4c9a29ef2..689d41ddf9ecf99b1350934ab52cf67412cbeb16 100644 (file)
@@ -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])
 ])
 
index 9e5a7340a426d62515ed259cad9c5578d3ea2817..a778cb163ffd4762b1806991b80b97d7f30a772f 100644 (file)
@@ -19,7 +19,7 @@ Include:
 <pthread.h>
 
 Link:
-$(LIB_PTHREAD)
+$(LIBMULTITHREAD)
 
 License:
 LGPLv2+
index 370552a031650da72c8135132dc8096cd2d3da71..3054ce45c0d00e5728d62d89aaaeb480bcd0b32d 100644 (file)
@@ -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+
index 1886b0a2764d0c4f429e11e610f400f632af7fbe..225c7f8834766572515e90e3574df0de78e9abfd 100644 (file)
@@ -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