Mercurial > hg > nginx-quic
comparison auto/os/darwin @ 2128:345a014436d4
*) move Darwin support to separate files
*) Darwin sendfile() support
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 30 Jul 2008 12:18:07 +0000 |
parents | |
children | d620f497c50f |
comparison
equal
deleted
inserted
replaced
2127:05e8de8fcfbb | 2128:345a014436d4 |
---|---|
1 | |
2 # Copyright (C) Igor Sysoev | |
3 | |
4 | |
5 have=NGX_DARWIN . auto/have_headers | |
6 | |
7 CORE_INCS="$UNIX_INCS" | |
8 CORE_DEPS="$UNIX_DEPS $DARWIN_DEPS" | |
9 CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS" | |
10 | |
11 | |
12 | |
13 ngx_spacer=' | |
14 ' | |
15 | |
16 # kqueue | |
17 | |
18 echo " + kqueue found" | |
19 have=NGX_HAVE_KQUEUE . auto/have | |
20 have=NGX_HAVE_CLEAR_EVENT . auto/have | |
21 EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE" | |
22 CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS" | |
23 EVENT_FOUND=YES | |
24 NGX_KQUEUE_CHECKED=YES | |
25 | |
26 ngx_feature="kqueue's EVFILT_TIMER" | |
27 ngx_feature_name="NGX_HAVE_TIMER_EVENT" | |
28 ngx_feature_run=yes | |
29 ngx_feature_incs="#include <sys/event.h> | |
30 #include <sys/time.h>" | |
31 ngx_feature_path= | |
32 ngx_feature_libs= | |
33 ngx_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 | |
56 ngx_feature="Darwin 64-bit kqueue millisecond timeout bug" | |
57 ngx_feature_name=NGX_DARWIN_KEVENT_BUG | |
58 ngx_feature_run=bug | |
59 ngx_feature_incs="#include <sys/event.h> | |
60 #include <sys/time.h>" | |
61 ngx_feature_path= | |
62 ngx_feature_libs= | |
63 ngx_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 | |
85 CC_AUX_FLAGS="$CC_AUX_FLAGS" | |
86 ngx_feature="sendfile()" | |
87 ngx_feature_name="NGX_HAVE_SENDFILE" | |
88 ngx_feature_run=yes | |
89 ngx_feature_incs="#include <sys/types.h> | |
90 #include <sys/socket.h> | |
91 #include <sys/uio.h> | |
92 #include <sys/errno.h>" | |
93 ngx_feature_path= | |
94 ngx_feature_libs= | |
95 ngx_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 | |
101 if [ $ngx_found = yes ]; then | |
102 have=NGX_HAVE_SENDFILE . auto/have | |
103 CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS" | |
104 fi | |
105 | |
106 | |
107 ngx_feature="atomic(3)" | |
108 ngx_feature_name=NGX_DARWIN_ATOMIC | |
109 ngx_feature_run=no | |
110 ngx_feature_incs="#include <libkern/OSAtomic.h>" | |
111 ngx_feature_path= | |
112 ngx_feature_libs= | |
113 ngx_feature_test="int32_t lock, n; | |
114 n = OSAtomicCompareAndSwap32Barrier(0, 1, lock)" | |
115 . auto/feature |