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