upstream nginx-0.7.31
[nginx.git] / nginx / auto / os / darwin
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