1*22dc650dSSadaf Ebrahimi# =========================================================================== 2*22dc650dSSadaf Ebrahimi# http://www.gnu.org/software/autoconf-archive/ax_pthread.html 3*22dc650dSSadaf Ebrahimi# =========================================================================== 4*22dc650dSSadaf Ebrahimi# 5*22dc650dSSadaf Ebrahimi# SYNOPSIS 6*22dc650dSSadaf Ebrahimi# 7*22dc650dSSadaf Ebrahimi# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) 8*22dc650dSSadaf Ebrahimi# 9*22dc650dSSadaf Ebrahimi# DESCRIPTION 10*22dc650dSSadaf Ebrahimi# 11*22dc650dSSadaf Ebrahimi# This macro figures out how to build C programs using POSIX threads. It 12*22dc650dSSadaf Ebrahimi# sets the PTHREAD_LIBS output variable to the threads library and linker 13*22dc650dSSadaf Ebrahimi# flags, and the PTHREAD_CFLAGS output variable to any special C compiler 14*22dc650dSSadaf Ebrahimi# flags that are needed. (The user can also force certain compiler 15*22dc650dSSadaf Ebrahimi# flags/libs to be tested by setting these environment variables.) 16*22dc650dSSadaf Ebrahimi# 17*22dc650dSSadaf Ebrahimi# Also sets PTHREAD_CC to any special C compiler that is needed for 18*22dc650dSSadaf Ebrahimi# multi-threaded programs (defaults to the value of CC otherwise). (This 19*22dc650dSSadaf Ebrahimi# is necessary on AIX to use the special cc_r compiler alias.) 20*22dc650dSSadaf Ebrahimi# 21*22dc650dSSadaf Ebrahimi# NOTE: You are assumed to not only compile your program with these flags, 22*22dc650dSSadaf Ebrahimi# but also link it with them as well. e.g. you should link with 23*22dc650dSSadaf Ebrahimi# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS 24*22dc650dSSadaf Ebrahimi# 25*22dc650dSSadaf Ebrahimi# If you are only building threads programs, you may wish to use these 26*22dc650dSSadaf Ebrahimi# variables in your default LIBS, CFLAGS, and CC: 27*22dc650dSSadaf Ebrahimi# 28*22dc650dSSadaf Ebrahimi# LIBS="$PTHREAD_LIBS $LIBS" 29*22dc650dSSadaf Ebrahimi# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 30*22dc650dSSadaf Ebrahimi# CC="$PTHREAD_CC" 31*22dc650dSSadaf Ebrahimi# 32*22dc650dSSadaf Ebrahimi# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant 33*22dc650dSSadaf Ebrahimi# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name 34*22dc650dSSadaf Ebrahimi# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). 35*22dc650dSSadaf Ebrahimi# 36*22dc650dSSadaf Ebrahimi# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the 37*22dc650dSSadaf Ebrahimi# PTHREAD_PRIO_INHERIT symbol is defined when compiling with 38*22dc650dSSadaf Ebrahimi# PTHREAD_CFLAGS. 39*22dc650dSSadaf Ebrahimi# 40*22dc650dSSadaf Ebrahimi# ACTION-IF-FOUND is a list of shell commands to run if a threads library 41*22dc650dSSadaf Ebrahimi# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it 42*22dc650dSSadaf Ebrahimi# is not found. If ACTION-IF-FOUND is not specified, the default action 43*22dc650dSSadaf Ebrahimi# will define HAVE_PTHREAD. 44*22dc650dSSadaf Ebrahimi# 45*22dc650dSSadaf Ebrahimi# Please let the authors know if this macro fails on any platform, or if 46*22dc650dSSadaf Ebrahimi# you have any other suggestions or comments. This macro was based on work 47*22dc650dSSadaf Ebrahimi# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help 48*22dc650dSSadaf Ebrahimi# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by 49*22dc650dSSadaf Ebrahimi# Alejandro Forero Cuervo to the autoconf macro repository. We are also 50*22dc650dSSadaf Ebrahimi# grateful for the helpful feedback of numerous users. 51*22dc650dSSadaf Ebrahimi# 52*22dc650dSSadaf Ebrahimi# Updated for Autoconf 2.68 by Daniel Richard G. 53*22dc650dSSadaf Ebrahimi# 54*22dc650dSSadaf Ebrahimi# LICENSE 55*22dc650dSSadaf Ebrahimi# 56*22dc650dSSadaf Ebrahimi# Copyright (c) 2008 Steven G. Johnson <[email protected]> 57*22dc650dSSadaf Ebrahimi# Copyright (c) 2011 Daniel Richard G. <[email protected]> 58*22dc650dSSadaf Ebrahimi# 59*22dc650dSSadaf Ebrahimi# This program is free software: you can redistribute it and/or modify it 60*22dc650dSSadaf Ebrahimi# under the terms of the GNU General Public License as published by the 61*22dc650dSSadaf Ebrahimi# Free Software Foundation, either version 3 of the License, or (at your 62*22dc650dSSadaf Ebrahimi# option) any later version. 63*22dc650dSSadaf Ebrahimi# 64*22dc650dSSadaf Ebrahimi# This program is distributed in the hope that it will be useful, but 65*22dc650dSSadaf Ebrahimi# WITHOUT ANY WARRANTY; without even the implied warranty of 66*22dc650dSSadaf Ebrahimi# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 67*22dc650dSSadaf Ebrahimi# Public License for more details. 68*22dc650dSSadaf Ebrahimi# 69*22dc650dSSadaf Ebrahimi# You should have received a copy of the GNU General Public License along 70*22dc650dSSadaf Ebrahimi# with this program. If not, see <http://www.gnu.org/licenses/>. 71*22dc650dSSadaf Ebrahimi# 72*22dc650dSSadaf Ebrahimi# As a special exception, the respective Autoconf Macro's copyright owner 73*22dc650dSSadaf Ebrahimi# gives unlimited permission to copy, distribute and modify the configure 74*22dc650dSSadaf Ebrahimi# scripts that are the output of Autoconf when processing the Macro. You 75*22dc650dSSadaf Ebrahimi# need not follow the terms of the GNU General Public License when using 76*22dc650dSSadaf Ebrahimi# or distributing such scripts, even though portions of the text of the 77*22dc650dSSadaf Ebrahimi# Macro appear in them. The GNU General Public License (GPL) does govern 78*22dc650dSSadaf Ebrahimi# all other use of the material that constitutes the Autoconf Macro. 79*22dc650dSSadaf Ebrahimi# 80*22dc650dSSadaf Ebrahimi# This special exception to the GPL applies to versions of the Autoconf 81*22dc650dSSadaf Ebrahimi# Macro released by the Autoconf Archive. When you make and distribute a 82*22dc650dSSadaf Ebrahimi# modified version of the Autoconf Macro, you may extend this special 83*22dc650dSSadaf Ebrahimi# exception to the GPL to apply to your modified version as well. 84*22dc650dSSadaf Ebrahimi 85*22dc650dSSadaf Ebrahimi#serial 18 86*22dc650dSSadaf Ebrahimi 87*22dc650dSSadaf EbrahimiAU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) 88*22dc650dSSadaf EbrahimiAC_DEFUN([AX_PTHREAD], [ 89*22dc650dSSadaf EbrahimiAC_REQUIRE([AC_CANONICAL_HOST]) 90*22dc650dSSadaf EbrahimiAC_LANG_PUSH([C]) 91*22dc650dSSadaf Ebrahimiax_pthread_ok=no 92*22dc650dSSadaf Ebrahimi 93*22dc650dSSadaf Ebrahimi# We used to check for pthread.h first, but this fails if pthread.h 94*22dc650dSSadaf Ebrahimi# requires special compiler flags (e.g. on True64 or Sequent). 95*22dc650dSSadaf Ebrahimi# It gets checked for in the link test anyway. 96*22dc650dSSadaf Ebrahimi 97*22dc650dSSadaf Ebrahimi# First of all, check if the user has set any of the PTHREAD_LIBS, 98*22dc650dSSadaf Ebrahimi# etcetera environment variables, and if threads linking works using 99*22dc650dSSadaf Ebrahimi# them: 100*22dc650dSSadaf Ebrahimiif test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then 101*22dc650dSSadaf Ebrahimi save_CFLAGS="$CFLAGS" 102*22dc650dSSadaf Ebrahimi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 103*22dc650dSSadaf Ebrahimi save_LIBS="$LIBS" 104*22dc650dSSadaf Ebrahimi LIBS="$PTHREAD_LIBS $LIBS" 105*22dc650dSSadaf Ebrahimi AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) 106*22dc650dSSadaf Ebrahimi AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) 107*22dc650dSSadaf Ebrahimi AC_MSG_RESULT($ax_pthread_ok) 108*22dc650dSSadaf Ebrahimi if test x"$ax_pthread_ok" = xno; then 109*22dc650dSSadaf Ebrahimi PTHREAD_LIBS="" 110*22dc650dSSadaf Ebrahimi PTHREAD_CFLAGS="" 111*22dc650dSSadaf Ebrahimi fi 112*22dc650dSSadaf Ebrahimi LIBS="$save_LIBS" 113*22dc650dSSadaf Ebrahimi CFLAGS="$save_CFLAGS" 114*22dc650dSSadaf Ebrahimifi 115*22dc650dSSadaf Ebrahimi 116*22dc650dSSadaf Ebrahimi# We must check for the threads library under a number of different 117*22dc650dSSadaf Ebrahimi# names; the ordering is very important because some systems 118*22dc650dSSadaf Ebrahimi# (e.g. DEC) have both -lpthread and -lpthreads, where one of the 119*22dc650dSSadaf Ebrahimi# libraries is broken (non-POSIX). 120*22dc650dSSadaf Ebrahimi 121*22dc650dSSadaf Ebrahimi# Create a list of thread flags to try. Items starting with a "-" are 122*22dc650dSSadaf Ebrahimi# C compiler flags, and other items are library names, except for "none" 123*22dc650dSSadaf Ebrahimi# which indicates that we try without any flags at all, and "pthread-config" 124*22dc650dSSadaf Ebrahimi# which is a program returning the flags for the Pth emulation library. 125*22dc650dSSadaf Ebrahimi 126*22dc650dSSadaf Ebrahimiax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" 127*22dc650dSSadaf Ebrahimi 128*22dc650dSSadaf Ebrahimi# The ordering *is* (sometimes) important. Some notes on the 129*22dc650dSSadaf Ebrahimi# individual items follow: 130*22dc650dSSadaf Ebrahimi 131*22dc650dSSadaf Ebrahimi# pthreads: AIX (must check this before -lpthread) 132*22dc650dSSadaf Ebrahimi# none: in case threads are in libc; should be tried before -Kthread and 133*22dc650dSSadaf Ebrahimi# other compiler flags to prevent continual compiler warnings 134*22dc650dSSadaf Ebrahimi# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) 135*22dc650dSSadaf Ebrahimi# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) 136*22dc650dSSadaf Ebrahimi# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) 137*22dc650dSSadaf Ebrahimi# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) 138*22dc650dSSadaf Ebrahimi# -pthreads: Solaris/gcc 139*22dc650dSSadaf Ebrahimi# -mthreads: Mingw32/gcc, Lynx/gcc 140*22dc650dSSadaf Ebrahimi# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it 141*22dc650dSSadaf Ebrahimi# doesn't hurt to check since this sometimes defines pthreads too; 142*22dc650dSSadaf Ebrahimi# also defines -D_REENTRANT) 143*22dc650dSSadaf Ebrahimi# ... -mt is also the pthreads flag for HP/aCC 144*22dc650dSSadaf Ebrahimi# pthread: Linux, etcetera 145*22dc650dSSadaf Ebrahimi# --thread-safe: KAI C++ 146*22dc650dSSadaf Ebrahimi# pthread-config: use pthread-config program (for GNU Pth library) 147*22dc650dSSadaf Ebrahimi 148*22dc650dSSadaf Ebrahimicase ${host_os} in 149*22dc650dSSadaf Ebrahimi solaris*) 150*22dc650dSSadaf Ebrahimi 151*22dc650dSSadaf Ebrahimi # On Solaris (at least, for some versions), libc contains stubbed 152*22dc650dSSadaf Ebrahimi # (non-functional) versions of the pthreads routines, so link-based 153*22dc650dSSadaf Ebrahimi # tests will erroneously succeed. (We need to link with -pthreads/-mt/ 154*22dc650dSSadaf Ebrahimi # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather 155*22dc650dSSadaf Ebrahimi # a function called by this macro, so we could check for that, but 156*22dc650dSSadaf Ebrahimi # who knows whether they'll stub that too in a future libc.) So, 157*22dc650dSSadaf Ebrahimi # we'll just look for -pthreads and -lpthread first: 158*22dc650dSSadaf Ebrahimi 159*22dc650dSSadaf Ebrahimi ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" 160*22dc650dSSadaf Ebrahimi ;; 161*22dc650dSSadaf Ebrahimi 162*22dc650dSSadaf Ebrahimi darwin*) 163*22dc650dSSadaf Ebrahimi ax_pthread_flags="-pthread $ax_pthread_flags" 164*22dc650dSSadaf Ebrahimi ;; 165*22dc650dSSadaf Ebrahimiesac 166*22dc650dSSadaf Ebrahimi 167*22dc650dSSadaf Ebrahimiif test x"$ax_pthread_ok" = xno; then 168*22dc650dSSadaf Ebrahimifor flag in $ax_pthread_flags; do 169*22dc650dSSadaf Ebrahimi 170*22dc650dSSadaf Ebrahimi case $flag in 171*22dc650dSSadaf Ebrahimi none) 172*22dc650dSSadaf Ebrahimi AC_MSG_CHECKING([whether pthreads work without any flags]) 173*22dc650dSSadaf Ebrahimi ;; 174*22dc650dSSadaf Ebrahimi 175*22dc650dSSadaf Ebrahimi -*) 176*22dc650dSSadaf Ebrahimi AC_MSG_CHECKING([whether pthreads work with $flag]) 177*22dc650dSSadaf Ebrahimi PTHREAD_CFLAGS="$flag" 178*22dc650dSSadaf Ebrahimi ;; 179*22dc650dSSadaf Ebrahimi 180*22dc650dSSadaf Ebrahimi pthread-config) 181*22dc650dSSadaf Ebrahimi AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) 182*22dc650dSSadaf Ebrahimi if test x"$ax_pthread_config" = xno; then continue; fi 183*22dc650dSSadaf Ebrahimi PTHREAD_CFLAGS="`pthread-config --cflags`" 184*22dc650dSSadaf Ebrahimi PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" 185*22dc650dSSadaf Ebrahimi ;; 186*22dc650dSSadaf Ebrahimi 187*22dc650dSSadaf Ebrahimi *) 188*22dc650dSSadaf Ebrahimi AC_MSG_CHECKING([for the pthreads library -l$flag]) 189*22dc650dSSadaf Ebrahimi PTHREAD_LIBS="-l$flag" 190*22dc650dSSadaf Ebrahimi ;; 191*22dc650dSSadaf Ebrahimi esac 192*22dc650dSSadaf Ebrahimi 193*22dc650dSSadaf Ebrahimi save_LIBS="$LIBS" 194*22dc650dSSadaf Ebrahimi save_CFLAGS="$CFLAGS" 195*22dc650dSSadaf Ebrahimi LIBS="$PTHREAD_LIBS $LIBS" 196*22dc650dSSadaf Ebrahimi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 197*22dc650dSSadaf Ebrahimi 198*22dc650dSSadaf Ebrahimi # Check for various functions. We must include pthread.h, 199*22dc650dSSadaf Ebrahimi # since some functions may be macros. (On the Sequent, we 200*22dc650dSSadaf Ebrahimi # need a special flag -Kthread to make this header compile.) 201*22dc650dSSadaf Ebrahimi # We check for pthread_join because it is in -lpthread on IRIX 202*22dc650dSSadaf Ebrahimi # while pthread_create is in libc. We check for pthread_attr_init 203*22dc650dSSadaf Ebrahimi # due to DEC craziness with -lpthreads. We check for 204*22dc650dSSadaf Ebrahimi # pthread_cleanup_push because it is one of the few pthread 205*22dc650dSSadaf Ebrahimi # functions on Solaris that doesn't have a non-functional libc stub. 206*22dc650dSSadaf Ebrahimi # We try pthread_create on general principles. 207*22dc650dSSadaf Ebrahimi AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h> 208*22dc650dSSadaf Ebrahimi static void routine(void *a) { a = 0; } 209*22dc650dSSadaf Ebrahimi static void *start_routine(void *a) { return a; }], 210*22dc650dSSadaf Ebrahimi [pthread_t th; pthread_attr_t attr; 211*22dc650dSSadaf Ebrahimi pthread_create(&th, 0, start_routine, 0); 212*22dc650dSSadaf Ebrahimi pthread_join(th, 0); 213*22dc650dSSadaf Ebrahimi pthread_attr_init(&attr); 214*22dc650dSSadaf Ebrahimi pthread_cleanup_push(routine, 0); 215*22dc650dSSadaf Ebrahimi pthread_cleanup_pop(0) /* ; */])], 216*22dc650dSSadaf Ebrahimi [ax_pthread_ok=yes], 217*22dc650dSSadaf Ebrahimi []) 218*22dc650dSSadaf Ebrahimi 219*22dc650dSSadaf Ebrahimi LIBS="$save_LIBS" 220*22dc650dSSadaf Ebrahimi CFLAGS="$save_CFLAGS" 221*22dc650dSSadaf Ebrahimi 222*22dc650dSSadaf Ebrahimi AC_MSG_RESULT($ax_pthread_ok) 223*22dc650dSSadaf Ebrahimi if test "x$ax_pthread_ok" = xyes; then 224*22dc650dSSadaf Ebrahimi break; 225*22dc650dSSadaf Ebrahimi fi 226*22dc650dSSadaf Ebrahimi 227*22dc650dSSadaf Ebrahimi PTHREAD_LIBS="" 228*22dc650dSSadaf Ebrahimi PTHREAD_CFLAGS="" 229*22dc650dSSadaf Ebrahimidone 230*22dc650dSSadaf Ebrahimifi 231*22dc650dSSadaf Ebrahimi 232*22dc650dSSadaf Ebrahimi# Various other checks: 233*22dc650dSSadaf Ebrahimiif test "x$ax_pthread_ok" = xyes; then 234*22dc650dSSadaf Ebrahimi save_LIBS="$LIBS" 235*22dc650dSSadaf Ebrahimi LIBS="$PTHREAD_LIBS $LIBS" 236*22dc650dSSadaf Ebrahimi save_CFLAGS="$CFLAGS" 237*22dc650dSSadaf Ebrahimi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 238*22dc650dSSadaf Ebrahimi 239*22dc650dSSadaf Ebrahimi # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. 240*22dc650dSSadaf Ebrahimi AC_MSG_CHECKING([for joinable pthread attribute]) 241*22dc650dSSadaf Ebrahimi attr_name=unknown 242*22dc650dSSadaf Ebrahimi for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do 243*22dc650dSSadaf Ebrahimi AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>], 244*22dc650dSSadaf Ebrahimi [int attr = $attr; return attr /* ; */])], 245*22dc650dSSadaf Ebrahimi [attr_name=$attr; break], 246*22dc650dSSadaf Ebrahimi []) 247*22dc650dSSadaf Ebrahimi done 248*22dc650dSSadaf Ebrahimi AC_MSG_RESULT($attr_name) 249*22dc650dSSadaf Ebrahimi if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then 250*22dc650dSSadaf Ebrahimi AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, 251*22dc650dSSadaf Ebrahimi [Define to necessary symbol if this constant 252*22dc650dSSadaf Ebrahimi uses a non-standard name on your system.]) 253*22dc650dSSadaf Ebrahimi fi 254*22dc650dSSadaf Ebrahimi 255*22dc650dSSadaf Ebrahimi AC_MSG_CHECKING([if more special flags are required for pthreads]) 256*22dc650dSSadaf Ebrahimi flag=no 257*22dc650dSSadaf Ebrahimi case ${host_os} in 258*22dc650dSSadaf Ebrahimi aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; 259*22dc650dSSadaf Ebrahimi osf* | hpux*) flag="-D_REENTRANT";; 260*22dc650dSSadaf Ebrahimi solaris*) 261*22dc650dSSadaf Ebrahimi if test "$GCC" = "yes"; then 262*22dc650dSSadaf Ebrahimi flag="-D_REENTRANT" 263*22dc650dSSadaf Ebrahimi else 264*22dc650dSSadaf Ebrahimi flag="-mt -D_REENTRANT" 265*22dc650dSSadaf Ebrahimi fi 266*22dc650dSSadaf Ebrahimi ;; 267*22dc650dSSadaf Ebrahimi esac 268*22dc650dSSadaf Ebrahimi AC_MSG_RESULT(${flag}) 269*22dc650dSSadaf Ebrahimi if test "x$flag" != xno; then 270*22dc650dSSadaf Ebrahimi PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" 271*22dc650dSSadaf Ebrahimi fi 272*22dc650dSSadaf Ebrahimi 273*22dc650dSSadaf Ebrahimi AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], 274*22dc650dSSadaf Ebrahimi ax_cv_PTHREAD_PRIO_INHERIT, [ 275*22dc650dSSadaf Ebrahimi AC_LINK_IFELSE([ 276*22dc650dSSadaf Ebrahimi AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])], 277*22dc650dSSadaf Ebrahimi [ax_cv_PTHREAD_PRIO_INHERIT=yes], 278*22dc650dSSadaf Ebrahimi [ax_cv_PTHREAD_PRIO_INHERIT=no]) 279*22dc650dSSadaf Ebrahimi ]) 280*22dc650dSSadaf Ebrahimi AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], 281*22dc650dSSadaf Ebrahimi AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])) 282*22dc650dSSadaf Ebrahimi 283*22dc650dSSadaf Ebrahimi LIBS="$save_LIBS" 284*22dc650dSSadaf Ebrahimi CFLAGS="$save_CFLAGS" 285*22dc650dSSadaf Ebrahimi 286*22dc650dSSadaf Ebrahimi # More AIX lossage: must compile with xlc_r or cc_r 287*22dc650dSSadaf Ebrahimi if test x"$GCC" != xyes; then 288*22dc650dSSadaf Ebrahimi AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) 289*22dc650dSSadaf Ebrahimi else 290*22dc650dSSadaf Ebrahimi PTHREAD_CC=$CC 291*22dc650dSSadaf Ebrahimi fi 292*22dc650dSSadaf Ebrahimielse 293*22dc650dSSadaf Ebrahimi PTHREAD_CC="$CC" 294*22dc650dSSadaf Ebrahimifi 295*22dc650dSSadaf Ebrahimi 296*22dc650dSSadaf EbrahimiAC_SUBST(PTHREAD_LIBS) 297*22dc650dSSadaf EbrahimiAC_SUBST(PTHREAD_CFLAGS) 298*22dc650dSSadaf EbrahimiAC_SUBST(PTHREAD_CC) 299*22dc650dSSadaf Ebrahimi 300*22dc650dSSadaf Ebrahimi# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: 301*22dc650dSSadaf Ebrahimiif test x"$ax_pthread_ok" = xyes; then 302*22dc650dSSadaf Ebrahimi ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) 303*22dc650dSSadaf Ebrahimi : 304*22dc650dSSadaf Ebrahimielse 305*22dc650dSSadaf Ebrahimi ax_pthread_ok=no 306*22dc650dSSadaf Ebrahimi $2 307*22dc650dSSadaf Ebrahimifi 308*22dc650dSSadaf EbrahimiAC_LANG_POP 309*22dc650dSSadaf Ebrahimi])dnl AX_PTHREAD 310