~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to m4/pandora_pthread.m4

pandora-build v0.72 - Moved remaining hard-coded tests into pandora-build
macros.
Add PANDORA_DRIZZLE_BUILD to run the extra checks that drizzle needs that 
plugins would also need to run so we can just use that macro in generated
external plugin builds.
Added support to register_plugins for external plugin building.
Renamed register_plugins.py to pandora-plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
57
57
    pthread_attr_setschedparam \
58
58
    pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \
59
59
    pthread_key_delete pthread_rwlock_rdlock pthread_setprio \
60
 
    pthread_setprio_np pthread_setschedparam pthread_sigmask)
 
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
# Some OSes like Mac OS X have that as a replacement for pthread_yield()
 
206
AC_CHECK_FUNCS(pthread_yield_np, AC_DEFINE([HAVE_PTHREAD_YIELD_NP],[],[Define if you have pthread_yield_np]))
 
207
AC_CACHE_CHECK([if pthread_yield takes zero arguments], ac_cv_pthread_yield_zero_arg,
 
208
[AC_TRY_LINK([#define _GNU_SOURCE
 
209
#include <pthread.h>
 
210
#ifdef __cplusplus
 
211
extern "C"
 
212
#endif
 
213
],
 
214
[
 
215
  pthread_yield();
 
216
], ac_cv_pthread_yield_zero_arg=yes, ac_cv_pthread_yield_zero_arg=yeso)])
 
217
if test "$ac_cv_pthread_yield_zero_arg" = "yes"
 
218
then
 
219
  AC_DEFINE([HAVE_PTHREAD_YIELD_ZERO_ARG], [1],
 
220
            [pthread_yield that doesn't take any arguments])
 
221
fi
 
222
AC_CACHE_CHECK([if pthread_yield takes 1 argument], ac_cv_pthread_yield_one_arg,
 
223
[AC_TRY_LINK([#define _GNU_SOURCE
 
224
#include <pthread.h>
 
225
#ifdef __cplusplus
 
226
extern "C"
 
227
#endif
 
228
],
 
229
[
 
230
  pthread_yield(0);
 
231
], ac_cv_pthread_yield_one_arg=yes, ac_cv_pthread_yield_one_arg=no)])
 
232
if test "$ac_cv_pthread_yield_one_arg" = "yes"
 
233
then
 
234
  AC_DEFINE([HAVE_PTHREAD_YIELD_ONE_ARG], [1],
 
235
            [pthread_yield function with one argument])
 
236
fi
61
237
 
62
238
  CFLAGS="${save_CFLAGS}"
63
239
  CXXFLAGS="${save_CXXFLAGS}"