Blame m4/pthread-thread.m4

Packit Service 4684c1
# pthread-thread.m4 serial 2
Packit Service 4684c1
dnl Copyright (C) 2019-2020 Free Software Foundation, Inc.
Packit Service 4684c1
dnl This file is free software; the Free Software Foundation
Packit Service 4684c1
dnl gives unlimited permission to copy and/or distribute it,
Packit Service 4684c1
dnl with or without modifications, as long as this notice is preserved.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PTHREAD_THREAD],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PTHREAD_H])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST])
Packit Service 4684c1
Packit Service 4684c1
  if { case "$host_os" in mingw*) true;; *) false;; esac; } \
Packit Service 4684c1
     && test $gl_threads_api = windows; then
Packit Service 4684c1
    dnl Choose function names that don't conflict with the mingw-w64 winpthreads
Packit Service 4684c1
    dnl library.
Packit Service 4684c1
    REPLACE_PTHREAD_CREATE=1
Packit Service 4684c1
    REPLACE_PTHREAD_ATTR_INIT=1
Packit Service 4684c1
    REPLACE_PTHREAD_ATTR_GETDETACHSTATE=1
Packit Service 4684c1
    REPLACE_PTHREAD_ATTR_SETDETACHSTATE=1
Packit Service 4684c1
    REPLACE_PTHREAD_ATTR_DESTROY=1
Packit Service 4684c1
    REPLACE_PTHREAD_SELF=1
Packit Service 4684c1
    REPLACE_PTHREAD_EQUAL=1
Packit Service 4684c1
    REPLACE_PTHREAD_DETACH=1
Packit Service 4684c1
    REPLACE_PTHREAD_JOIN=1
Packit Service 4684c1
    REPLACE_PTHREAD_EXIT=1
Packit Service 4684c1
  else
Packit Service 4684c1
    if test $HAVE_PTHREAD_H = 0; then
Packit Service 4684c1
      HAVE_PTHREAD_CREATE=0
Packit Service 4684c1
      HAVE_PTHREAD_ATTR_INIT=0
Packit Service 4684c1
      HAVE_PTHREAD_ATTR_GETDETACHSTATE=0
Packit Service 4684c1
      HAVE_PTHREAD_ATTR_SETDETACHSTATE=0
Packit Service 4684c1
      HAVE_PTHREAD_ATTR_DESTROY=0
Packit Service 4684c1
      HAVE_PTHREAD_SELF=0
Packit Service 4684c1
      HAVE_PTHREAD_EQUAL=0
Packit Service 4684c1
      HAVE_PTHREAD_DETACH=0
Packit Service 4684c1
      HAVE_PTHREAD_JOIN=0
Packit Service 4684c1
      HAVE_PTHREAD_EXIT=0
Packit Service 4684c1
    else
Packit Service 4684c1
      dnl On HP-UX 11.11, pthread_create() and pthread_attr_init() are only
Packit Service 4684c1
      dnl defined as inline functions.
Packit Service 4684c1
      AC_CACHE_CHECK([whether pthread_create exists as a global function],
Packit Service 4684c1
        [gl_cv_func_pthread_create],
Packit Service 4684c1
        [saved_LIBS="$LIBS"
Packit Service 4684c1
         LIBS="$LIBS $LIBPMULTITHREAD"
Packit Service 4684c1
         AC_LINK_IFELSE(
Packit Service 4684c1
           [AC_LANG_SOURCE(
Packit Service 4684c1
              [[extern
Packit Service 4684c1
                #ifdef __cplusplus
Packit Service 4684c1
                "C"
Packit Service 4684c1
                #endif
Packit Service 4684c1
                int pthread_create (void);
Packit Service 4684c1
                int main ()
Packit Service 4684c1
                {
Packit Service 4684c1
                  return pthread_create ();
Packit Service 4684c1
                }
Packit Service 4684c1
              ]])],
Packit Service 4684c1
           [gl_cv_func_pthread_create=yes],
Packit Service 4684c1
           [gl_cv_func_pthread_create=no])
Packit Service 4684c1
         LIBS="$saved_LIBS"
Packit Service 4684c1
        ])
Packit Service 4684c1
      if test $gl_cv_func_pthread_create = no; then
Packit Service 4684c1
        REPLACE_PTHREAD_CREATE=1
Packit Service 4684c1
        REPLACE_PTHREAD_ATTR_INIT=1
Packit Service 4684c1
        AC_DEFINE([PTHREAD_CREATE_IS_INLINE], [1],
Packit Service 4684c1
          [Define if pthread_create is an inline function.])
Packit Service 4684c1
      fi
Packit Service 4684c1
    fi
Packit Service 4684c1
  fi
Packit Service 4684c1
])