comparison auto/unix @ 628:83b58b182b76 NGINX_1_0_4

nginx 1.0.4 *) Change: now regular expressions case sensitivity in the "map" directive is given by prefixes "~" or "~*". *) Feature: now shared zones and caches use POSIX semaphores on Linux. Thanks to Denis F. Latypoff. *) Bugfix: "stalled" cache updating" alert. *) Bugfix: nginx could not be built --without-http_auth_basic_module; the bug had appeared in 1.0.3.
author Igor Sysoev <http://sysoev.ru>
date Wed, 01 Jun 2011 00:00:00 +0400
parents d4da38525468
children 23ef0645ea57
comparison
equal deleted inserted replaced
627:a63a292c61af 628:83b58b182b76
1 1
2 # Copyright (C) Igor Sysoev 2 # Copyright (C) Igor Sysoev
3
4
5 NGX_USER=${NGX_USER:-nobody}
6
7 if [ -z "$NGX_GROUP" ]; then
8 if [ $NGX_USER = nobody ]; then
9 if grep nobody /etc/group 2>&1 >/dev/null; then
10 echo "checking for nobody group ... found"
11 NGX_GROUP=nobody
12 else
13 echo "checking for nobody group ... not found"
14
15 if grep nogroup /etc/group 2>&1 >/dev/null; then
16 echo "checking for nogroup group ... found"
17 NGX_GROUP=nogroup
18 else
19 echo "checking for nogroup group ... not found"
20 NGX_GROUP=nobody
21 fi
22 fi
23 else
24 NGX_GROUP=$NGX_USER
25 fi
26 fi
27
28
29 ngx_feature="poll()"
30 ngx_feature_name=
31 ngx_feature_run=no
32 ngx_feature_incs="#include <poll.h>"
33 ngx_feature_path=
34 ngx_feature_libs=
35 ngx_feature_test="int n, dp; struct pollfd pl;
36 dp = 0;
37 pl.fd = 0;
38 pl.events = 0;
39 pl.revents = 0;
40 n = poll(&pl, 1, 0)"
41 . auto/feature
42
43 if [ $ngx_found = no ]; then
44 EVENT_POLL=NONE
45 fi
46
47
48 ngx_feature="/dev/poll"
49 ngx_feature_name="NGX_HAVE_DEVPOLL"
50 ngx_feature_run=no
51 ngx_feature_incs="#include <sys/devpoll.h>"
52 ngx_feature_path=
53 ngx_feature_libs=
54 ngx_feature_test="int n, dp; struct dvpoll dvp;
55 dp = 0;
56 dvp.dp_fds = NULL;
57 dvp.dp_nfds = 0;
58 dvp.dp_timeout = 0;
59 n = ioctl(dp, DP_POLL, &dvp)"
60 . auto/feature
61
62 if [ $ngx_found = yes ]; then
63 CORE_SRCS="$CORE_SRCS $DEVPOLL_SRCS"
64 EVENT_MODULES="$EVENT_MODULES $DEVPOLL_MODULE"
65 EVENT_FOUND=YES
66 fi
67
68
69 if test -z "$NGX_KQUEUE_CHECKED"; then
70 ngx_feature="kqueue"
71 ngx_feature_name="NGX_HAVE_KQUEUE"
72 ngx_feature_run=no
73 ngx_feature_incs="#include <sys/event.h>"
74 ngx_feature_path=
75 ngx_feature_libs=
76 ngx_feature_test="int kq; kq = kqueue()"
77 . auto/feature
78
79 if [ $ngx_found = yes ]; then
80
81 have=NGX_HAVE_CLEAR_EVENT . auto/have
82 EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
83 CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
84 EVENT_FOUND=YES
85
86 ngx_feature="kqueue's NOTE_LOWAT"
87 ngx_feature_name="NGX_HAVE_LOWAT_EVENT"
88 ngx_feature_run=no
89 ngx_feature_incs="#include <sys/event.h>"
90 ngx_feature_path=
91 ngx_feature_libs=
92 ngx_feature_test="struct kevent kev;
93 kev.fflags = NOTE_LOWAT;"
94 . auto/feature
95
96
97 ngx_feature="kqueue's EVFILT_TIMER"
98 ngx_feature_name="NGX_HAVE_TIMER_EVENT"
99 ngx_feature_run=yes
100 ngx_feature_incs="#include <sys/event.h>
101 #include <sys/time.h>"
102 ngx_feature_path=
103 ngx_feature_libs=
104 ngx_feature_test="int kq;
105 struct kevent kev;
106 struct timespec ts;
107
108 if ((kq = kqueue()) == -1) return 1;
109
110 kev.ident = 0;
111 kev.filter = EVFILT_TIMER;
112 kev.flags = EV_ADD|EV_ENABLE;
113 kev.fflags = 0;
114 kev.data = 1000;
115 kev.udata = 0;
116
117 ts.tv_sec = 0;
118 ts.tv_nsec = 0;
119
120 if (kevent(kq, &kev, 1, &kev, 1, &ts) == -1) return 1;
121
122 if (kev.flags & EV_ERROR) return 1;"
123
124 . auto/feature
125 fi
126 fi
127
128
129 if [ "$NGX_SYSTEM" = "NetBSD" ]; then
130
131 # NetBSD 2.0 incompatibly defines kevent.udata as "intptr_t"
132
133 cat << END >> $NGX_AUTO_CONFIG_H
134
135 #define NGX_KQUEUE_UDATA_T
136
137 END
138
139 else
140 cat << END >> $NGX_AUTO_CONFIG_H
141
142 #define NGX_KQUEUE_UDATA_T (void *)
143
144 END
145
146 fi
147
148
149 ngx_feature="crypt()"
150 ngx_feature_name=
151 ngx_feature_run=no
152 ngx_feature_incs=
153 ngx_feature_path=
154 ngx_feature_libs=
155 ngx_feature_test="crypt(\"test\", \"salt\");"
156 . auto/feature
157
158
159 if [ $ngx_found = no ]; then
160
161 ngx_feature="crypt() in libcrypt"
162 ngx_feature_name=
163 ngx_feature_run=no
164 ngx_feature_incs=
165 ngx_feature_path=
166 ngx_feature_libs=-lcrypt
167 . auto/feature
168
169 if [ $ngx_found = yes ]; then
170 CRYPT_LIB="-lcrypt"
171 fi
172 fi
173
174
175 ngx_feature="F_READAHEAD"
176 ngx_feature_name="NGX_HAVE_F_READAHEAD"
177 ngx_feature_run=no
178 ngx_feature_incs="#include <fcntl.h>"
179 ngx_feature_path=
180 ngx_feature_libs=
181 ngx_feature_test="fcntl(0, F_READAHEAD, 1);"
182 . auto/feature
183
184
185 ngx_feature="posix_fadvise()"
186 ngx_feature_name="NGX_HAVE_POSIX_FADVISE"
187 ngx_feature_run=no
188 ngx_feature_incs="#include <fcntl.h>"
189 ngx_feature_path=
190 ngx_feature_libs=
191 ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);"
192 . auto/feature
193
194
195 ngx_feature="O_DIRECT"
196 ngx_feature_name="NGX_HAVE_O_DIRECT"
197 ngx_feature_run=no
198 ngx_feature_incs="#include <fcntl.h>"
199 ngx_feature_path=
200 ngx_feature_libs=
201 ngx_feature_test="fcntl(0, F_SETFL, O_DIRECT);"
202 . auto/feature
203
204
205 if [ $ngx_found = yes -a "$NGX_SYSTEM" = "Linux" ]; then
206 have=NGX_HAVE_ALIGNED_DIRECTIO . auto/have
207 fi
208
209 ngx_feature="F_NOCACHE"
210 ngx_feature_name="NGX_HAVE_F_NOCACHE"
211 ngx_feature_run=no
212 ngx_feature_incs="#include <fcntl.h>"
213 ngx_feature_path=
214 ngx_feature_libs=
215 ngx_feature_test="fcntl(0, F_NOCACHE, 1);"
216 . auto/feature
217
218
219 ngx_feature="directio()"
220 ngx_feature_name="NGX_HAVE_DIRECTIO"
221 ngx_feature_run=no
222 ngx_feature_incs="#include <sys/types.h>
223 #include <sys/fcntl.h>"
224 ngx_feature_path=
225 ngx_feature_libs=
226 ngx_feature_test="directio(0, DIRECTIO_ON);"
227 . auto/feature
228
229
230 ngx_feature="statfs()"
231 ngx_feature_name="NGX_HAVE_STATFS"
232 ngx_feature_run=no
233 ngx_feature_incs="$NGX_INCLUDE_SYS_PARAM_H
234 $NGX_INCLUDE_SYS_MOUNT_H
235 $NGX_INCLUDE_SYS_VFS_H"
236 ngx_feature_path=
237 ngx_feature_libs=
238 ngx_feature_test="struct statfs fs;
239 statfs(NULL, &fs);"
240 . auto/feature
241
242
243 ngx_feature="statvfs()"
244 ngx_feature_name="NGX_HAVE_STATVFS"
245 ngx_feature_run=no
246 ngx_feature_incs="#include <sys/types.h>
247 #include <sys/statvfs.h>"
248 ngx_feature_path=
249 ngx_feature_libs=
250 ngx_feature_test="struct statvfs fs;
251 statvfs(NULL, &fs);"
252 . auto/feature
253
254
255 ngx_feature="dlopen()"
256 ngx_feature_name=
257 ngx_feature_run=no
258 ngx_feature_incs="#include <dlfcn.h>"
259 ngx_feature_path=
260 ngx_feature_libs=
261 ngx_feature_test="dlopen(NULL, 0)"
262 . auto/feature
263
264
265 if [ $ngx_found != yes ]; then
266
267 ngx_feature="dlopen() in libdl"
268 ngx_feature_libs="-ldl"
269 . auto/feature
270
271 if [ $ngx_found = yes ]; then
272 NGX_LIBDL="-ldl"
273 fi
274 fi
275
276
277 ngx_feature="sched_yield()"
278 ngx_feature_name="NGX_HAVE_SCHED_YIELD"
279 ngx_feature_run=no
280 ngx_feature_incs="#include <sched.h>"
281 ngx_feature_path=
282 ngx_feature_libs=
283 ngx_feature_test="sched_yield()"
284 . auto/feature
285
286
287 if [ $ngx_found != yes ]; then
288
289 ngx_feature="sched_yield() in librt"
290 ngx_feature_libs="-lrt"
291 . auto/feature
292
293 if [ $ngx_found = yes ]; then
294 CORE_LIBS="$CORE_LIBS -lrt"
295 fi
296 fi
297
298 ngx_feature="SO_SETFIB"
299 ngx_feature_name="NGX_HAVE_SETFIB"
300 ngx_feature_run=no
301 ngx_feature_incs="#include <sys/socket.h>"
302 ngx_feature_path=
303 ngx_feature_libs=
304 ngx_feature_test="setsockopt(0, SOL_SOCKET, SO_SETFIB, NULL, 4)"
305 . auto/feature
306
307
308 ngx_feature="accept4()"
309 ngx_feature_name="NGX_HAVE_ACCEPT4"
310 ngx_feature_run=no
311 ngx_feature_incs="#include <sys/socket.h>"
312 ngx_feature_path=
313 ngx_feature_libs=
314 ngx_feature_test="accept4(0, NULL, NULL, SOCK_NONBLOCK)"
315 . auto/feature
316
317 if [ $NGX_FILE_AIO = YES ]; then
318
319 ngx_feature="kqueue AIO support"
320 ngx_feature_name="NGX_HAVE_FILE_AIO"
321 ngx_feature_run=no
322 ngx_feature_incs="#include <aio.h>"
323 ngx_feature_path=
324 ngx_feature_libs=
325 ngx_feature_test="int n; struct aiocb iocb;
326 iocb.aio_sigevent.sigev_notify = SIGEV_KEVENT;
327 n = aio_read(&iocb)"
328 . auto/feature
329
330 if [ $ngx_found = yes ]; then
331 CORE_SRCS="$CORE_SRCS $FILE_AIO_SRCS"
332
333 elif [ $ngx_found = no ]; then
334
335 ngx_feature="Linux AIO support"
336 ngx_feature_name="NGX_HAVE_FILE_AIO"
337 ngx_feature_run=no
338 ngx_feature_incs="#include <linux/aio_abi.h>
339 #include <sys/syscall.h>"
340 ngx_feature_path=
341 ngx_feature_libs=
342 ngx_feature_test="int n = SYS_eventfd;
343 struct iocb iocb;
344 iocb.aio_lio_opcode = IOCB_CMD_PREAD;
345 iocb.aio_flags = IOCB_FLAG_RESFD;
346 iocb.aio_resfd = -1;"
347 . auto/feature
348
349 if [ $ngx_found = yes ]; then
350 have=NGX_HAVE_EVENTFD . auto/have
351 CORE_SRCS="$CORE_SRCS $LINUX_AIO_SRCS"
352
353 else
354 cat << END
355
356 $0: no supported file AIO was found
357 Currently file AIO is supported on FreeBSD 4.3+ and Linux 2.6.22+ only
358
359 END
360 exit 1
361 fi
362 fi
363 fi
3 364
4 365
5 have=NGX_HAVE_UNIX_DOMAIN . auto/have 366 have=NGX_HAVE_UNIX_DOMAIN . auto/have
6 367
7 ngx_feature_libs= 368 ngx_feature_libs=
244 if (sem_init(&sem, 1, 0) == -1) return 1; 605 if (sem_init(&sem, 1, 0) == -1) return 1;
245 sem_destroy(&sem);" 606 sem_destroy(&sem);"
246 . auto/feature 607 . auto/feature
247 608
248 609
610 if [ $ngx_found = no ]; then
611
612 # Linux has POSIX semaphores in libpthread
613 ngx_feature="POSIX semaphores in libpthread"
614 ngx_feature_libs=-lpthread
615 . auto/feature
616
617 if [ $ngx_found = yes ]; then
618 CORE_LIBS="$CORE_LIBS -lpthread"
619 fi
620 fi
621
622
249 ngx_feature="struct msghdr.msg_control" 623 ngx_feature="struct msghdr.msg_control"
250 ngx_feature_name="NGX_HAVE_MSGHDR_MSG_CONTROL" 624 ngx_feature_name="NGX_HAVE_MSGHDR_MSG_CONTROL"
251 ngx_feature_run=no 625 ngx_feature_run=no
252 ngx_feature_incs="#include <sys/socket.h>" 626 ngx_feature_incs="#include <sys/socket.h>"
253 ngx_feature_path= 627 ngx_feature_path=