blob: f9953b95cdcd260af2e65859b627a56e1f2bc6f6 [file] [log] [blame]
Igor Sysoev74944902008-07-30 12:18:07 +00001
2# Copyright (C) Igor Sysoev
3
4
5have=NGX_DARWIN . auto/have_headers
6
7CORE_INCS="$UNIX_INCS"
8CORE_DEPS="$UNIX_DEPS $DARWIN_DEPS"
9CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS"
10
11
12
13ngx_spacer='
14'
15
16# kqueue
17
18echo " + kqueue found"
19have=NGX_HAVE_KQUEUE . auto/have
20have=NGX_HAVE_CLEAR_EVENT . auto/have
21EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
22CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
23EVENT_FOUND=YES
24NGX_KQUEUE_CHECKED=YES
25
26ngx_feature="kqueue's EVFILT_TIMER"
27ngx_feature_name="NGX_HAVE_TIMER_EVENT"
28ngx_feature_run=yes
29ngx_feature_incs="#include <sys/event.h>
30 #include <sys/time.h>"
31ngx_feature_path=
32ngx_feature_libs=
33ngx_feature_test="int kq;
34 struct kevent kev;
35 struct timespec ts;
36
37 if ((kq = kqueue()) == -1) return 1;
38
39 kev.ident = 0;
40 kev.filter = EVFILT_TIMER;
41 kev.flags = EV_ADD|EV_ENABLE;
42 kev.fflags = 0;
43 kev.data = 1000;
44 kev.udata = 0;
45
46 ts.tv_sec = 0;
47 ts.tv_nsec = 0;
48
49 if (kevent(kq, &kev, 1, &kev, 1, &ts) == -1) return 1;
50
51 if (kev.flags & EV_ERROR) return 1;"
52
53. auto/feature
54
55
56ngx_feature="Darwin 64-bit kqueue millisecond timeout bug"
57ngx_feature_name=NGX_DARWIN_KEVENT_BUG
58ngx_feature_run=bug
59ngx_feature_incs="#include <sys/event.h>
60 #include <sys/time.h>"
61ngx_feature_path=
62ngx_feature_libs=
63ngx_feature_test="int kq;
64 struct kevent kev;
65 struct timespec ts;
66 struct timeval tv, tv0;
67
68 kq = kqueue();
69
70 ts.tv_sec = 0;
71 ts.tv_nsec = 999000000;
72
73 gettimeofday(&tv, 0);
74 kevent(kq, NULL, 0, &kev, 1, &ts);
75 gettimeofday(&tv0, 0);
76 timersub(&tv0, &tv, &tv);
77
78 if (tv.tv_sec * 1000000 + tv.tv_usec < 900000) return 1;"
79
80. auto/feature
81
82
83# sendfile()
84
85CC_AUX_FLAGS="$CC_AUX_FLAGS"
86ngx_feature="sendfile()"
87ngx_feature_name="NGX_HAVE_SENDFILE"
88ngx_feature_run=yes
89ngx_feature_incs="#include <sys/types.h>
90 #include <sys/socket.h>
91 #include <sys/uio.h>
92 #include <sys/errno.h>"
93ngx_feature_path=
94ngx_feature_libs=
95ngx_feature_test="int s = 0, fd = 1;
96 off_t n; off_t off = 0;
97 n = sendfile(s, fd, off, &n, NULL, 0);
98 if (n == -1 && errno == ENOSYS) return 1"
99. auto/feature
100
101if [ $ngx_found = yes ]; then
102 have=NGX_HAVE_SENDFILE . auto/have
103 CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS"
104fi
105
106
107ngx_feature="atomic(3)"
108ngx_feature_name=NGX_DARWIN_ATOMIC
109ngx_feature_run=no
110ngx_feature_incs="#include <libkern/OSAtomic.h>"
111ngx_feature_path=
112ngx_feature_libs=
113ngx_feature_test="int32_t lock, n;
114 n = OSAtomicCompareAndSwap32Barrier(0, 1, lock)"
115. auto/feature