1dnl Functions for pthread 2dnl 3dnl Version: 20130509 4 5dnl Function to detect if pthread is available 6AC_DEFUN([AX_PTHREAD_CHECK_LIB], 7 [dnl Check if parameters were provided 8 AS_IF( 9 [test "x$ac_cv_with_pthread" != x && test "x$ac_cv_with_pthread" != xno && test "x$ac_cv_with_pthread" != xauto-detect], 10 [AS_IF( 11 [test -d "$ac_cv_with_pthread"], 12 [CFLAGS="$CFLAGS -I${ac_cv_with_pthread}/include" 13 LDFLAGS="$LDFLAGS -L${ac_cv_with_pthread}/lib"], 14 [AC_MSG_WARN([no such directory: $ac_cv_with_pthread]) 15 ]) 16 ]) 17 18 AS_IF( 19 [test "x$ac_cv_with_pthread" = xno], 20 [ac_cv_pthread=no], 21 [dnl Check for headers 22 AC_CHECK_HEADERS([pthread.h]) 23 24 AS_IF( 25 [test "x$ac_cv_header_pthread_h" = xno], 26 [ac_cv_pthread=no], 27 [dnl Check for the individual functions 28 ac_cv_pthread=pthread 29 30 dnl Thread functions 31 AC_CHECK_LIB( 32 pthread, 33 pthread_create, 34 [ac_pthread_dummy=yes], 35 [ac_cv_pthread=no]) 36 AC_CHECK_LIB( 37 pthread, 38 pthread_exit, 39 [ac_pthread_dummy=yes], 40 [ac_cv_pthread=no]) 41 AC_CHECK_LIB( 42 pthread, 43 pthread_join, 44 [ac_pthread_dummy=yes], 45 [ac_cv_pthread=no]) 46 47 dnl Condition functions 48 AC_CHECK_LIB( 49 pthread, 50 pthread_cond_init, 51 [ac_pthread_dummy=yes], 52 [ac_cv_pthread=no]) 53 AC_CHECK_LIB( 54 pthread, 55 pthread_cond_destroy, 56 [ac_pthread_dummy=yes], 57 [ac_cv_pthread=no]) 58 AC_CHECK_LIB( 59 pthread, 60 pthread_cond_broadcast, 61 [ac_pthread_dummy=yes], 62 [ac_cv_pthread=no]) 63 AC_CHECK_LIB( 64 pthread, 65 pthread_cond_signal, 66 [ac_pthread_dummy=yes], 67 [ac_cv_pthread=no]) 68 AC_CHECK_LIB( 69 pthread, 70 pthread_cond_wait, 71 [ac_pthread_dummy=yes], 72 [ac_cv_pthread=no]) 73 74 dnl Mutex functions 75 AC_CHECK_LIB( 76 pthread, 77 pthread_mutex_init, 78 [ac_pthread_dummy=yes], 79 [ac_cv_pthread=no]) 80 AC_CHECK_LIB( 81 pthread, 82 pthread_mutex_destroy, 83 [ac_pthread_dummy=yes], 84 [ac_cv_pthread=no]) 85 AC_CHECK_LIB( 86 pthread, 87 pthread_mutex_lock, 88 [ac_pthread_dummy=yes], 89 [ac_cv_pthread=no]) 90 AC_CHECK_LIB( 91 pthread, 92 pthread_mutex_trylock, 93 [ac_pthread_dummy=yes], 94 [ac_cv_pthread=no]) 95 AC_CHECK_LIB( 96 pthread, 97 pthread_mutex_unlock, 98 [ac_pthread_dummy=yes], 99 [ac_cv_pthread=no]) 100 101 dnl Read/Write lock functions 102 AC_CHECK_LIB( 103 pthread, 104 pthread_rwlock_init, 105 [ac_pthread_dummy=yes], 106 [ac_cv_pthread=no]) 107 AC_CHECK_LIB( 108 pthread, 109 pthread_rwlock_destroy, 110 [ac_pthread_dummy=yes], 111 [ac_cv_pthread=no]) 112 AC_CHECK_LIB( 113 pthread, 114 pthread_rwlock_rdlock, 115 [ac_pthread_dummy=yes], 116 [ac_cv_pthread=no]) 117 AC_CHECK_LIB( 118 pthread, 119 pthread_rwlock_wrlock, 120 [ac_pthread_dummy=yes], 121 [ac_cv_pthread=no]) 122 AC_CHECK_LIB( 123 pthread, 124 pthread_rwlock_unlock, 125 [ac_pthread_dummy=yes], 126 [ac_cv_pthread=no]) 127 128 ac_cv_pthread_LIBADD="-lpthread"; 129 ]) 130 ]) 131 132 AS_IF( 133 [test "x$ac_cv_pthread" = xpthread], 134 [AC_DEFINE( 135 [HAVE_PTHREAD], 136 [1], 137 [Define to 1 if you have the 'pthread' library (-lpthread).]) 138 ]) 139 140 AS_IF( 141 [test "x$ac_cv_pthread" != xno], 142 [AC_SUBST( 143 [HAVE_PTHREAD], 144 [1]) ], 145 [AC_SUBST( 146 [HAVE_PTHREAD], 147 [0]) 148 ]) 149 ]) 150 151dnl Function to detect how to enable pthread 152AC_DEFUN([AX_PTHREAD_CHECK_ENABLE], 153 [AX_COMMON_ARG_WITH( 154 [pthread], 155 [pthread], 156 [search for pthread in includedir and libdir or in the specified DIR, or no if not to use pthread], 157 [auto-detect], 158 [DIR]) 159 160 dnl Check for a shared library version 161 AX_PTHREAD_CHECK_LIB 162 163 AS_IF( 164 [test "x$ac_cv_pthread_CPPFLAGS" != "x"], 165 [AC_SUBST( 166 [PTHREAD_CPPFLAGS], 167 [$ac_cv_pthread_CPPFLAGS]) 168 ]) 169 AS_IF( 170 [test "x$ac_cv_pthread_LIBADD" != "x"], 171 [AC_SUBST( 172 [PTHREAD_LIBADD], 173 [$ac_cv_pthread_LIBADD]) 174 ]) 175 176 AS_IF( 177 [test "x$ac_cv_pthread" = xpthread], 178 [AC_SUBST( 179 [ax_pthread_pc_libs_private], 180 [-lpthread]) 181 ]) 182 ]) 183 184