blob: 1e54f9d3d5c81e0ad909c46c0d7fe79e0d96c622 [file] [log] [blame]
Igor Sysoeve31e90b2005-05-19 13:25:22 +00001
2# Copyright (C) Igor Sysoev
3
4
5NGX_USER=${NGX_USER:-nobody}
6
Igor Sysoev80eec932006-11-06 18:39:28 +00007if [ -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"
Igor Sysoeve31e90b2005-05-19 13:25:22 +000011 NGX_GROUP=nobody
Igor Sysoev80eec932006-11-06 18:39:28 +000012 else
13 echo "checking for nobody group ... not found"
Igor Sysoeve31e90b2005-05-19 13:25:22 +000014
Igor Sysoev80eec932006-11-06 18:39:28 +000015 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
Igor Sysoeve31e90b2005-05-19 13:25:22 +000026fi
Igor Sysoev0e5dc5c2005-11-15 13:30:52 +000027
Igor Sysoeve31e90b2005-05-19 13:25:22 +000028
29ngx_feature="poll()"
30ngx_feature_name=
31ngx_feature_run=no
32ngx_feature_incs="#include <poll.h>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +000033ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +000034ngx_feature_libs=
35ngx_feature_test="int n, dp; struct pollfd pl;
Igor Sysoev0e5dc5c2005-11-15 13:30:52 +000036 dp = 0;
Igor Sysoeve31e90b2005-05-19 13:25:22 +000037 pl.fd = 0;
38 pl.events = 0;
39 pl.revents = 0;
40 n = poll(&pl, 1, 0)"
41. auto/feature
Igor Sysoev0e5dc5c2005-11-15 13:30:52 +000042
Igor Sysoeve31e90b2005-05-19 13:25:22 +000043if [ $ngx_found = no ]; then
44 EVENT_POLL=NONE
45fi
Igor Sysoev0e5dc5c2005-11-15 13:30:52 +000046
Igor Sysoeve31e90b2005-05-19 13:25:22 +000047
48ngx_feature="/dev/poll"
49ngx_feature_name="NGX_HAVE_DEVPOLL"
50ngx_feature_run=no
51ngx_feature_incs="#include <sys/devpoll.h>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +000052ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +000053ngx_feature_libs=
54ngx_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
62if [ $ngx_found = yes ]; then
63 CORE_SRCS="$CORE_SRCS $DEVPOLL_SRCS"
64 EVENT_MODULES="$EVENT_MODULES $DEVPOLL_MODULE"
65 EVENT_FOUND=YES
66fi
67
68
69if 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>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +000074 ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +000075 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>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +000090 ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +000091 ngx_feature_libs=
92 ngx_feature_test="struct kevent kev;
93 kev.fflags = NOTE_LOWAT;"
94 . auto/feature
Igor Sysoev13c68742006-03-10 12:51:52 +000095
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>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000102 ngx_feature_path=
Igor Sysoev13c68742006-03-10 12:51:52 +0000103 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
126
127 if [ "$NGX_SYSTEM" = "Darwin" ]; then
128
Igor Sysoev8fea8852006-03-15 09:53:04 +0000129 ngx_feature="Darwin 64-bit kqueue millisecond timeout bug"
130 ngx_feature_name=NGX_DARWIN_KEVENT_BUG
Igor Sysoev13c68742006-03-10 12:51:52 +0000131 ngx_feature_run=bug
132 ngx_feature_incs="#include <sys/event.h>
133#include <sys/time.h>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000134 ngx_feature_path=
Igor Sysoev13c68742006-03-10 12:51:52 +0000135 ngx_feature_libs=
136 ngx_feature_test="int kq;
137 struct kevent kev;
138 struct timespec ts;
139 struct timeval tv, tv0;
140
141 kq = kqueue();
142
143 ts.tv_sec = 0;
144 ts.tv_nsec = 999000000;
145
146 gettimeofday(&tv, 0);
147 kevent(kq, NULL, 0, &kev, 1, &ts);
148 gettimeofday(&tv0, 0);
149 timersub(&tv0, &tv, &tv);
150
151 if (tv.tv_sec * 1000000 + tv.tv_usec < 900000) return 1;"
152
153 . auto/feature
Igor Sysoev13c68742006-03-10 12:51:52 +0000154 fi
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000155 fi
156fi
157
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000158
Igor Sysoev13c68742006-03-10 12:51:52 +0000159if [ "$NGX_SYSTEM" = "NetBSD" ]; then
Igor Sysoevc2068d02005-10-19 12:33:58 +0000160
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000161 # NetBSD 2.0 incompatibly defines kevent.udata as "intptr_t"
162
163 cat << END >> $NGX_AUTO_CONFIG_H
164
165#define NGX_KQUEUE_UDATA_T
166
167END
168
169else
170 cat << END >> $NGX_AUTO_CONFIG_H
171
172#define NGX_KQUEUE_UDATA_T (void *)
173
174END
175
176fi
177
178
179ngx_feature="crypt()"
180ngx_feature_name=
181ngx_feature_run=no
182ngx_feature_incs=
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000183ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000184ngx_feature_libs=
185ngx_feature_test="crypt(\"test\", \"salt\");"
186. auto/feature
187
188
189if [ $ngx_found = no ]; then
190
191 ngx_feature="crypt() in libcrypt"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000192 ngx_feature_name=
193 ngx_feature_run=no
194 ngx_feature_incs=
195 ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000196 ngx_feature_libs=-lcrypt
197 . auto/feature
198
199 if [ $ngx_found = yes ]; then
200 CRYPT_LIB="-lcrypt"
201 fi
202fi