doc: Update for glibc 2.40.
[gnulib.git] / m4 / pthread-thread.m4
blob83cd7795d00cd549dcdf392120a18d4f82afd391
1 # pthread-thread.m4
2 # serial 3
3 dnl Copyright (C) 2019-2024 Free Software Foundation, Inc.
4 dnl This file is free software; the Free Software Foundation
5 dnl gives unlimited permission to copy and/or distribute it,
6 dnl with or without modifications, as long as this notice is preserved.
8 AC_DEFUN([gl_PTHREAD_THREAD],
10   AC_REQUIRE([gl_PTHREAD_H])
11   AC_REQUIRE([AC_CANONICAL_HOST])
13   if { case "$host_os" in mingw* | windows*) true;; *) false;; esac; } \
14      && test $gl_threads_api = windows; then
15     dnl Choose function names that don't conflict with the mingw-w64 winpthreads
16     dnl library.
17     REPLACE_PTHREAD_CREATE=1
18     REPLACE_PTHREAD_ATTR_INIT=1
19     REPLACE_PTHREAD_ATTR_GETDETACHSTATE=1
20     REPLACE_PTHREAD_ATTR_SETDETACHSTATE=1
21     REPLACE_PTHREAD_ATTR_DESTROY=1
22     REPLACE_PTHREAD_SELF=1
23     REPLACE_PTHREAD_EQUAL=1
24     REPLACE_PTHREAD_DETACH=1
25     REPLACE_PTHREAD_JOIN=1
26     REPLACE_PTHREAD_EXIT=1
27   else
28     if test $HAVE_PTHREAD_H = 0; then
29       HAVE_PTHREAD_CREATE=0
30       HAVE_PTHREAD_ATTR_INIT=0
31       HAVE_PTHREAD_ATTR_GETDETACHSTATE=0
32       HAVE_PTHREAD_ATTR_SETDETACHSTATE=0
33       HAVE_PTHREAD_ATTR_DESTROY=0
34       HAVE_PTHREAD_SELF=0
35       HAVE_PTHREAD_EQUAL=0
36       HAVE_PTHREAD_DETACH=0
37       HAVE_PTHREAD_JOIN=0
38       HAVE_PTHREAD_EXIT=0
39     else
40       dnl On HP-UX 11.11, pthread_create() and pthread_attr_init() are only
41       dnl defined as inline functions.
42       AC_CACHE_CHECK([whether pthread_create exists as a global function],
43         [gl_cv_func_pthread_create],
44         [saved_LIBS="$LIBS"
45          LIBS="$LIBS $LIBPMULTITHREAD"
46          AC_LINK_IFELSE(
47            [AC_LANG_SOURCE(
48               [[extern
49                 #ifdef __cplusplus
50                 "C"
51                 #endif
52                 int pthread_create (void);
53                 int main ()
54                 {
55                   return pthread_create ();
56                 }
57               ]])],
58            [gl_cv_func_pthread_create=yes],
59            [gl_cv_func_pthread_create=no])
60          LIBS="$saved_LIBS"
61         ])
62       if test $gl_cv_func_pthread_create = no; then
63         REPLACE_PTHREAD_CREATE=1
64         REPLACE_PTHREAD_ATTR_INIT=1
65         AC_DEFINE([PTHREAD_CREATE_IS_INLINE], [1],
66           [Define if pthread_create is an inline function.])
67       fi
68     fi
69   fi