git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[patch 03/15] pthread.patch

From
GVGary V. Vaughan <git@mlists.thewrittenword.com>
Date
Mar 16, 2010, 05:42 UTC
Message-ID
<20100316054311.332443000@mlists.thewrittenword.com>
In-Reply-To
<20100316054220.075676000@mlists.thewrittenword.com>

Without this patch, systems that provide stubs for pthread functions in libc, but which still require libpthread for full the pthread implementation are not detected correctly.

Also, some systems require -pthread in CFLAGS for each compilation
unit for a successful link of an mt binary, which is also addressed by
this patch.
---
 Makefile      |    4 ++++
 config.mak.in |    1 +
 configure.ac  |   17 +++++++++++++++--
 3 files changed, 20 insertions(+), 2 deletions(-)
Index: b/Makefile
===================================================================
--- a/Makefile
+++ b/Makefile
@@ -287,6 +287,7 @@ RPMBUILD = rpmbuild
 TCL_PATH = tclsh
 TCLTK_PATH = wish
 PTHREAD_LIBS = -lpthread
+PTHREAD_CFLAGS =
 
 export TCL_PATH TCLTK_PATH
 
@@ -856,6 +857,8 @@ ifeq ($(uname_S),AIX)
 	BASIC_CFLAGS += -D_LARGE_FILES
 	ifeq ($(shell expr "$(uname_V)" : '[1234]'),1)
 		NO_PTHREADS = YesPlease
+	else
+		PTHREAD_LIBS = -lpthread
 	endif
 endif
 ifeq ($(uname_S),GNU)
@@ -1297,6 +1300,7 @@ endif
 ifdef NO_PTHREADS
 	BASIC_CFLAGS += -DNO_PTHREADS
 else
+	BASIC_CFLAGS += $(PTHREAD_CFLAGS)
 	EXTLIBS += $(PTHREAD_LIBS)
 	LIB_OBJS += thread-utils.o
 endif
Index: b/configure.ac
===================================================================
--- a/configure.ac
+++ b/configure.ac
@@ -782,7 +782,11 @@ AC_DEFUN([PTHREADTEST_SRC], [
 int main(void)
 {
 	pthread_mutex_t test_mutex;
-	return (0);
+	int retcode = 0;
+	retcode |= pthread_mutex_init(&test_mutex,(void*)0);
+	retcode |= pthread_mutex_lock(&test_mutex);
+	retcode |= pthread_mutex_unlock(&test_mutex);
+	return retcode;
 }
 ])
 
@@ -799,7 +803,8 @@ if test -n "$USER_NOPTHREAD"; then
 # handle these separately since PTHREAD_CFLAGS could be '-lpthreads
 # -D_REENTRANT' or some such.
 elif test -z "$PTHREAD_CFLAGS"; then
-  for opt in -pthread -lpthread; do
+  threads_found=no
+  for opt in -mt -pthread -lpthread; do
      old_CFLAGS="$CFLAGS"
      CFLAGS="$opt $CFLAGS"
      AC_MSG_CHECKING([Checking for POSIX Threads with '$opt'])
@@ -807,11 +812,18 @@ elif test -z "$PTHREAD_CFLAGS"; then
 	[AC_MSG_RESULT([yes])
 		NO_PTHREADS=
 		PTHREAD_LIBS="$opt"
+		PTHREAD_CFLAGS="$opt"
+		threads_found=yes
 		break
 	],
 	[AC_MSG_RESULT([no])])
       CFLAGS="$old_CFLAGS"
   done
+  if test $threads_found != yes; then
+    AC_CHECK_LIB([pthread], [pthread_create],
+	[PTHREAD_LIBS="-lpthread"],
+	[NO_PTHREADS=UnfortunatelyYes])
+  fi
 else
   old_CFLAGS="$CFLAGS"
   CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
@@ -828,6 +840,7 @@ fi
 
 CFLAGS="$old_CFLAGS"
 
+AC_SUBST(PTHREAD_CFLAGS)
 AC_SUBST(PTHREAD_LIBS)
 AC_SUBST(NO_PTHREADS)
 
Index: b/config.mak.in
===================================================================
--- a/config.mak.in
+++ b/config.mak.in
@@ -57,4 +57,5 @@ NO_DEFLATE_BOUND=@NO_DEFLATE_BOUND@
 FREAD_READS_DIRECTORIES=@FREAD_READS_DIRECTORIES@
 SNPRINTF_RETURNS_BOGUS=@SNPRINTF_RETURNS_BOGUS@
 NO_PTHREADS=@NO_PTHREADS@
+PTHREAD_CFLAGS=@PTHREAD_CFLAGS@
 PTHREAD_LIBS=@PTHREAD_LIBS@
-- 
Gary V. Vaughan (gary@thewrittenword.com)
Previous: Gary V. VaughanNext: Junio C Hamano
Message 9 of 37 in “Portability Patches v3”
  1. 00/15 Portability Patches v3Gary V. Vaughan, Mar 16, 2010
  2. 01/15 user-cppflags.patchGary V. Vaughan, Mar 16, 2010
  3. Junio C HamanoMar 16, 2010
  4. 02/15 const-expr.patchGary V. Vaughan, Mar 16, 2010
  5. Johannes SixtMar 16, 2010
  6. Gary V. VaughanMar 16, 2010
  7. Avery PennarunMar 16, 2010
  8. Gary V. VaughanApr 25, 2010
  9. 03/15 pthread.patchGary V. Vaughan, Mar 16, 2010
  10. Junio C HamanoMar 16, 2010
  11. 04/15 diff-export.patchGary V. Vaughan, Mar 16, 2010
  12. Junio C HamanoMar 16, 2010
  13. 05/15 diff-test_cmp.patchGary V. Vaughan, Mar 16, 2010
  14. Junio C HamanoMar 16, 2010
  15. Gary V. VaughanApr 25, 2010
  16. 06/15 diff-defaults.patchGary V. Vaughan, Mar 16, 2010
  17. Junio C HamanoMar 16, 2010
  18. Gary V. VaughanApr 25, 2010
  19. 07/15 host-IRIX.patchGary V. Vaughan, Mar 16, 2010
  20. Junio C HamanoMar 16, 2010
  21. Gary V. VaughanApr 25, 2010
  22. Brandon CaseyMar 16, 2010
  23. Gary V. VaughanApr 25, 2010
  24. 08/15 host-HPUX10.patchGary V. Vaughan, Mar 16, 2010
  25. 09/15 host-HPUX11.patchGary V. Vaughan, Mar 16, 2010
  26. 10/15 host-OSF1.patchGary V. Vaughan, Mar 16, 2010
  27. 11/15 no-hstrerror.patchGary V. Vaughan, Mar 16, 2010
  28. Junio C HamanoMar 16, 2010
  29. Gary V. VaughanApr 25, 2010
  30. 12/15 no-inet_ntop.patchGary V. Vaughan, Mar 16, 2010
  31. 13/15 no-socklen_t.patchGary V. Vaughan, Mar 16, 2010
  32. Junio C HamanoMar 16, 2010
  33. Gary V. VaughanApr 25, 2010
  34. 14/15 no-ss_family.patchGary V. Vaughan, Mar 16, 2010
  35. 15/15 no-inline.patchGary V. Vaughan, Mar 16, 2010
  36. Sverre RabbelierMar 16, 2010
  37. Brandon CaseyMar 16, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.