1099.1.6
by Monty Taylor
pandora-build v0.25 |
1 |
dnl -*- mode: m4; c-basic-offset: 2; indent-tabs-mode: nil; -*- |
2 |
dnl vim:expandtab:shiftwidth=2:tabstop=2:smarttab: |
|
3 |
dnl |
|
4 |
dnl pandora-build: A pedantic build system |
|
5 |
dnl Copyright (C) 2009 Sun Microsystems, Inc. |
|
1126.6.8
by Monty Taylor
pandora-build v0.62 - cleaned up some copyright header mistakes. Merged in trond's innodb detection. |
6 |
dnl This file is free software; Sun Microsystems |
1099.1.6
by Monty Taylor
pandora-build v0.25 |
7 |
dnl gives unlimited permission to copy and/or distribute it, |
8 |
dnl with or without modifications, as long as this notice is preserved. |
|
9 |
dnl
|
|
10 |
dnl From Monty Taylor |
|
11 |
||
12 |
||
13 |
dnl -------------------------------------------------------------------- |
|
14 |
dnl Check for libpthread |
|
15 |
dnl -------------------------------------------------------------------- |
|
16 |
||
1126.6.1
by Monty Taylor
pandora-build v0.58 |
17 |
AC_DEFUN([PANDORA_PTHREAD_YIELD],[ |
18 |
AC_REQUIRE([ACX_PTHREAD]) |
|
19 |
||
20 |
save_CFLAGS="${CFLAGS}" |
|
21 |
save_CXXFLAGS="${CXXFLAGS}" |
|
22 |
CFLAGS="${PTHREAD_CFLAGS} ${CFLAGS}" |
|
23 |
CXXFLAGS="${PTHREAD_CFLAGS} ${CXXFLAGS}" |
|
24 |
dnl Some OSes like Mac OS X have that as a replacement for pthread_yield() |
|
25 |
AC_CHECK_FUNCS(pthread_yield_np) |
|
26 |
AC_CACHE_CHECK([if pthread_yield takes zero arguments], |
|
27 |
[pandora_cv_pthread_yield_zero_arg], |
|
28 |
[AC_LINK_IFELSE([ |
|
29 |
AC_LANG_PROGRAM([[
|
|
30 |
#include <pthread.h>
|
|
31 |
]],[[ |
|
32 |
pthread_yield();
|
|
33 |
]])], |
|
34 |
[pandora_cv_pthread_yield_zero_arg=yes], |
|
35 |
[pandora_cv_pthread_yield_zero_arg=no])]) |
|
36 |
AS_IF([test "$pandora_cv_pthread_yield_zero_arg" = "yes"],[ |
|
37 |
AC_DEFINE([HAVE_PTHREAD_YIELD_ZERO_ARG], [1], |
|
38 |
[pthread_yield that doesn't take any arguments]) |
|
39 |
]) |
|
40 |
||
41 |
AC_CACHE_CHECK([if pthread_yield takes one argument], |
|
42 |
[pandora_cv_pthread_yield_one_arg], |
|
43 |
[AC_LINK_IFELSE([ |
|
44 |
AC_LANG_PROGRAM([[
|
|
45 |
#include <pthread.h>
|
|
46 |
]],[[ |
|
47 |
pthread_yield(0);
|
|
48 |
]])], |
|
49 |
[pandora_cv_pthread_yield_one_arg=yes], |
|
50 |
[pandora_cv_pthread_yield_one_arg=no])]) |
|
51 |
AS_IF([test "$pandora_cv_pthread_yield_one_arg" = "yes"],[ |
|
52 |
AC_DEFINE([HAVE_PTHREAD_YIELD_ONE_ARG], [1], |
|
53 |
[pthread_yield function with one argument]) |
|
54 |
]) |
|
55 |
||
1192.3.5
by Monty Taylor
pandora-build v0.66 - add pthread specific checks to pandora-pthread _inside_ of |
56 |
AC_CHECK_FUNCS(pthread_attr_getstacksize pthread_attr_setprio \ |
57 |
pthread_attr_setschedparam \ |
|
58 |
pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \ |
|
59 |
pthread_key_delete pthread_rwlock_rdlock pthread_setprio \ |
|
1192.3.28
by Monty Taylor
pandora-build v0.72 - Moved remaining hard-coded tests into pandora-build |
60 |
pthread_setprio_np pthread_setschedparam pthread_sigmask \ |
61 |
pthread_attr_create rwlock_init |
|
62 |
)
|
|
63 |
||
64 |
||
65 |
||
66 |
# Check definition of pthread_getspecific |
|
67 |
AC_CACHE_CHECK([args to pthread_getspecific], [pandora_cv_getspecific_args], |
|
68 |
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ |
|
69 |
#if !defined(_REENTRANT)
|
|
70 |
#define _REENTRANT
|
|
71 |
#endif
|
|
72 |
#ifndef _POSIX_PTHREAD_SEMANTICS
|
|
73 |
#define _POSIX_PTHREAD_SEMANTICS
|
|
74 |
#endif
|
|
75 |
#include <pthread.h>
|
|
76 |
]], [[ |
|
77 |
void *pthread_getspecific(pthread_key_t key);
|
|
78 |
pthread_getspecific((pthread_key_t) NULL);
|
|
79 |
]])], |
|
80 |
[pandora_cv_getspecific_args=POSIX], |
|
81 |
[pandora_cv_getspecific_args=other])]) |
|
82 |
if test "$pandora_cv_getspecific_args" = "other" |
|
83 |
then |
|
84 |
AC_DEFINE([HAVE_NONPOSIX_PTHREAD_GETSPECIFIC], [1], |
|
85 |
[For some non posix threads]) |
|
86 |
fi |
|
87 |
||
88 |
# Check definition of pthread_mutex_init |
|
89 |
AC_CACHE_CHECK([args to pthread_mutex_init], [pandora_cv_mutex_init_args], |
|
90 |
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ |
|
91 |
#ifndef _REENTRANT
|
|
92 |
#define _REENTRANT
|
|
93 |
#endif
|
|
94 |
#ifndef _POSIX_PTHREAD_SEMANTICS
|
|
95 |
#define _POSIX_PTHREAD_SEMANTICS
|
|
96 |
#endif
|
|
97 |
#include <pthread.h> ]], [[ |
|
98 |
pthread_mutexattr_t attr;
|
|
99 |
pthread_mutex_t mp;
|
|
100 |
pthread_mutex_init(&mp,&attr); ]])], |
|
101 |
[pandora_cv_mutex_init_args=POSIX], |
|
102 |
[pandora_cv_mutex_init_args=other])]) |
|
103 |
if test "$pandora_cv_mutex_init_args" = "other" |
|
104 |
then |
|
105 |
AC_DEFINE([HAVE_NONPOSIX_PTHREAD_MUTEX_INIT], [1], |
|
106 |
[For some non posix threads]) |
|
107 |
fi |
|
108 |
#---END: |
|
109 |
||
110 |
#---START: Used in for client configure |
|
111 |
# Check definition of readdir_r |
|
112 |
AC_CACHE_CHECK([args to readdir_r], [pandora_cv_readdir_r], |
|
113 |
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
|
114 |
#ifndef _REENTRANT
|
|
115 |
#define _REENTRANT
|
|
116 |
#endif
|
|
117 |
#ifndef _POSIX_PTHREAD_SEMANTICS
|
|
118 |
#define _POSIX_PTHREAD_SEMANTICS
|
|
119 |
#endif
|
|
120 |
#include <pthread.h>
|
|
121 |
#include <dirent.h>]], [[ int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); |
|
122 |
readdir_r((DIR *) NULL, (struct dirent *) NULL, (struct dirent **) NULL); ]])], |
|
123 |
[pandora_cv_readdir_r=POSIX], |
|
124 |
[pandora_cv_readdir_r=other])]) |
|
125 |
if test "$pandora_cv_readdir_r" = "POSIX" |
|
126 |
then
|
|
127 |
AC_DEFINE([HAVE_READDIR_R], [1], [POSIX readdir_r]) |
|
128 |
fi
|
|
129 |
||
130 |
# Check definition of posix sigwait() |
|
131 |
AC_CACHE_CHECK([style of sigwait], [pandora_cv_sigwait], |
|
132 |
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
|
133 |
#ifndef _REENTRANT
|
|
134 |
#define _REENTRANT
|
|
135 |
#endif
|
|
136 |
#ifndef _POSIX_PTHREAD_SEMANTICS
|
|
137 |
#define _POSIX_PTHREAD_SEMANTICS
|
|
138 |
#endif
|
|
139 |
#include <pthread.h>
|
|
140 |
#include <signal.h>
|
|
141 |
]], [[ |
|
142 |
#ifndef _AIX
|
|
143 |
sigset_t set;
|
|
144 |
int sig;
|
|
145 |
sigwait(&set,&sig);
|
|
146 |
#endif
|
|
147 |
]])], |
|
148 |
[pandora_cv_sigwait=POSIX], |
|
149 |
[pandora_cv_sigwait=other])]) |
|
150 |
if test "$pandora_cv_sigwait" = "POSIX" |
|
151 |
then
|
|
152 |
AC_DEFINE([HAVE_SIGWAIT], [1], [POSIX sigwait]) |
|
153 |
fi
|
|
154 |
||
155 |
if test "$pandora_cv_sigwait" != "POSIX" |
|
156 |
then
|
|
157 |
unset pandora_cv_sigwait |
|
158 |
# Check definition of posix sigwait() |
|
159 |
AC_CACHE_CHECK([style of sigwait], [pandora_cv_sigwait], |
|
160 |
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
|
161 |
#ifndef _REENTRANT
|
|
162 |
#define _REENTRANT
|
|
163 |
#endif
|
|
164 |
#ifndef _POSIX_PTHREAD_SEMANTICS
|
|
165 |
#define _POSIX_PTHREAD_SEMANTICS
|
|
166 |
#endif
|
|
167 |
#include <pthread.h>
|
|
168 |
#include <signal.h>
|
|
169 |
]], [[ |
|
170 |
sigset_t set;
|
|
171 |
int sig;
|
|
172 |
sigwait(&set);
|
|
173 |
]])], |
|
174 |
[pandora_cv_sigwait=NONPOSIX], |
|
175 |
[pandora_cv_sigwait=other])]) |
|
176 |
if test "$pandora_cv_sigwait" = "NONPOSIX" |
|
177 |
then
|
|
178 |
AC_DEFINE([HAVE_NONPOSIX_SIGWAIT], [1], [sigwait with one argument]) |
|
179 |
fi
|
|
180 |
fi
|
|
181 |
#---END: |
|
182 |
||
183 |
# Check if pthread_attr_setscope() exists |
|
184 |
AC_CACHE_CHECK([for pthread_attr_setscope], [pandora_cv_pthread_attr_setscope], |
|
185 |
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
|
186 |
#ifndef _REENTRANT
|
|
187 |
#define _REENTRANT
|
|
188 |
#endif
|
|
189 |
#ifndef _POSIX_PTHREAD_SEMANTICS
|
|
190 |
#define _POSIX_PTHREAD_SEMANTICS
|
|
191 |
#endif
|
|
192 |
#include <pthread.h>
|
|
193 |
]], [[ |
|
194 |
pthread_attr_t thr_attr;
|
|
195 |
pthread_attr_setscope(&thr_attr,0);
|
|
196 |
]])], |
|
197 |
[pandora_cv_pthread_attr_setscope=yes], |
|
198 |
[pandora_cv_pthread_attr_setscope=no])]) |
|
199 |
if test "$pandora_cv_pthread_attr_setscope" = "yes" |
|
200 |
then
|
|
201 |
AC_DEFINE([HAVE_PTHREAD_ATTR_SETSCOPE], [1], [pthread_attr_setscope]) |
|
202 |
fi
|
|
203 |
||
204 |
||
205 |
AC_CACHE_CHECK([if pthread_yield takes zero arguments], ac_cv_pthread_yield_zero_arg, |
|
206 |
[AC_TRY_LINK([#define _GNU_SOURCE |
|
207 |
#include <pthread.h>
|
|
208 |
#ifdef __cplusplus
|
|
209 |
extern "C"
|
|
210 |
#endif
|
|
211 |
], |
|
212 |
[
|
|
213 |
pthread_yield();
|
|
214 |
], ac_cv_pthread_yield_zero_arg=yes, ac_cv_pthread_yield_zero_arg=yeso)]) |
|
215 |
if test "$ac_cv_pthread_yield_zero_arg" = "yes" |
|
216 |
then
|
|
217 |
AC_DEFINE([HAVE_PTHREAD_YIELD_ZERO_ARG], [1], |
|
218 |
[pthread_yield that doesn't take any arguments]) |
|
219 |
fi
|
|
220 |
AC_CACHE_CHECK([if pthread_yield takes 1 argument], ac_cv_pthread_yield_one_arg, |
|
221 |
[AC_TRY_LINK([#define _GNU_SOURCE |
|
222 |
#include <pthread.h>
|
|
223 |
#ifdef __cplusplus
|
|
224 |
extern "C"
|
|
225 |
#endif
|
|
226 |
], |
|
227 |
[
|
|
228 |
pthread_yield(0);
|
|
229 |
], ac_cv_pthread_yield_one_arg=yes, ac_cv_pthread_yield_one_arg=no)]) |
|
230 |
if test "$ac_cv_pthread_yield_one_arg" = "yes" |
|
231 |
then
|
|
232 |
AC_DEFINE([HAVE_PTHREAD_YIELD_ONE_ARG], [1], |
|
233 |
[pthread_yield function with one argument]) |
|
234 |
fi
|
|
1192.3.5
by Monty Taylor
pandora-build v0.66 - add pthread specific checks to pandora-pthread _inside_ of |
235 |
|
1126.6.1
by Monty Taylor
pandora-build v0.58 |
236 |
CFLAGS="${save_CFLAGS}" |
237 |
CXXFLAGS="${save_CXXFLAGS}" |
|
238 |
]) |
|
239 |
||
240 |
||
1099.1.6
by Monty Taylor
pandora-build v0.25 |
241 |
AC_DEFUN([_PANDORA_SEARCH_PTHREAD],[ |
1126.6.1
by Monty Taylor
pandora-build v0.58 |
242 |
AC_REQUIRE([ACX_PTHREAD]) |
1099.1.6
by Monty Taylor
pandora-build v0.25 |
243 |
LIBS="${PTHREAD_LIBS} ${LIBS}" |
244 |
AM_CFLAGS="${PTHREAD_CFLAGS} ${AM_CFLAGS}" |
|
245 |
AM_CXXFLAGS="${PTHREAD_CFLAGS} ${AM_CXXFLAGS}" |
|
1126.6.1
by Monty Taylor
pandora-build v0.58 |
246 |
PANDORA_PTHREAD_YIELD |
1099.1.6
by Monty Taylor
pandora-build v0.25 |
247 |
]) |
248 |
||
249 |
||
250 |
AC_DEFUN([PANDORA_HAVE_PTHREAD],[ |
|
251 |
AC_REQUIRE([_PANDORA_SEARCH_PTHREAD]) |
|
252 |
]) |
|
253 |
||
254 |
AC_DEFUN([PANDORA_REQUIRE_PTHREAD],[ |
|
255 |
AC_REQUIRE([PANDORA_HAVE_PTHREAD]) |
|
256 |
AS_IF([test "x$acx_pthread_ok" != "xyes"],[ |
|
257 |
AC_MSG_ERROR(could not find libpthread)]) |
|
258 |
]) |