blob: 5fcbf7f6b020641fca706d65358594ebf03237e2 [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
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000125 fi
126fi
127
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000128
Igor Sysoev13c68742006-03-10 12:51:52 +0000129if [ "$NGX_SYSTEM" = "NetBSD" ]; then
Igor Sysoevc2068d02005-10-19 12:33:58 +0000130
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000131 # 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
137END
138
139else
140 cat << END >> $NGX_AUTO_CONFIG_H
141
142#define NGX_KQUEUE_UDATA_T (void *)
143
144END
145
146fi
147
148
149ngx_feature="crypt()"
150ngx_feature_name=
151ngx_feature_run=no
152ngx_feature_incs=
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000153ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000154ngx_feature_libs=
155ngx_feature_test="crypt(\"test\", \"salt\");"
156. auto/feature
157
158
159if [ $ngx_found = no ]; then
160
161 ngx_feature="crypt() in libcrypt"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000162 ngx_feature_name=
163 ngx_feature_run=no
164 ngx_feature_incs=
165 ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000166 ngx_feature_libs=-lcrypt
167 . auto/feature
168
169 if [ $ngx_found = yes ]; then
170 CRYPT_LIB="-lcrypt"
171 fi
172fi
Igor Sysoev385af282008-07-30 12:34:04 +0000173
174
175ngx_feature="O_DIRECT"
176ngx_feature_name="NGX_HAVE_O_DIRECT"
177ngx_feature_run=no
178ngx_feature_incs="#include <fcntl.h>"
179ngx_feature_path=
180ngx_feature_libs=
181ngx_feature_test="fcntl(0, F_SETFL, O_DIRECT);"
182. auto/feature
183
184
Igor Sysoevfae2c002008-09-12 13:50:12 +0000185if [ $ngx_found = yes -a "$NGX_SYSTEM" = "Linux" ]; then
186 have=NGX_HAVE_ALIGNED_DIRECTIO . auto/have
187fi
188
Igor Sysoev385af282008-07-30 12:34:04 +0000189ngx_feature="F_NOCACHE"
190ngx_feature_name="NGX_HAVE_F_NOCACHE"
191ngx_feature_run=no
192ngx_feature_incs="#include <fcntl.h>"
193ngx_feature_path=
194ngx_feature_libs=
195ngx_feature_test="fcntl(0, F_NOCACHE, 1);"
196. auto/feature
Igor Sysoevb83f8932008-08-04 15:32:10 +0000197
198
199ngx_feature="directio()"
200ngx_feature_name="NGX_HAVE_DIRECTIO"
201ngx_feature_run=no
202ngx_feature_incs="#include <sys/types.h>
203 #include <sys/fcntl.h>"
204ngx_feature_path=
205ngx_feature_libs=
206ngx_feature_test="directio(0, DIRECTIO_ON);"
207. auto/feature