Mercurial > hg > nginx-quic
comparison auto/unix @ 3933:b5c169873c6b
concatenate auto/os/features and auto/unix
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 31 May 2011 08:25:10 +0000 |
parents | c8884c8f7c74 |
children | 8cca96abbc3e |
comparison
equal
deleted
inserted
replaced
3932:3b608ddcb8ce | 3933:b5c169873c6b |
---|---|
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= |