| # Copyright (C) Igor Sysoev | |
| have=NGX_DARWIN . auto/have_headers | |
| CORE_INCS="$UNIX_INCS" | |
| CORE_DEPS="$UNIX_DEPS $DARWIN_DEPS" | |
| CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS" | |
| ngx_spacer=' | |
| ' | |
| # kqueue | |
| echo " + kqueue found" | |
| have=NGX_HAVE_KQUEUE . auto/have | |
| have=NGX_HAVE_CLEAR_EVENT . auto/have | |
| EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE" | |
| CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS" | |
| EVENT_FOUND=YES | |
| NGX_KQUEUE_CHECKED=YES | |
| ngx_feature="kqueue's EVFILT_TIMER" | |
| ngx_feature_name="NGX_HAVE_TIMER_EVENT" | |
| ngx_feature_run=yes | |
| ngx_feature_incs="#include <sys/event.h> | |
| #include <sys/time.h>" | |
| ngx_feature_path= | |
| ngx_feature_libs= | |
| ngx_feature_test="int kq; | |
| struct kevent kev; | |
| struct timespec ts; | |
| if ((kq = kqueue()) == -1) return 1; | |
| kev.ident = 0; | |
| kev.filter = EVFILT_TIMER; | |
| kev.flags = EV_ADD|EV_ENABLE; | |
| kev.fflags = 0; | |
| kev.data = 1000; | |
| kev.udata = 0; | |
| ts.tv_sec = 0; | |
| ts.tv_nsec = 0; | |
| if (kevent(kq, &kev, 1, &kev, 1, &ts) == -1) return 1; | |
| if (kev.flags & EV_ERROR) return 1;" | |
| . auto/feature | |
| ngx_feature="Darwin 64-bit kqueue millisecond timeout bug" | |
| ngx_feature_name=NGX_DARWIN_KEVENT_BUG | |
| ngx_feature_run=bug | |
| ngx_feature_incs="#include <sys/event.h> | |
| #include <sys/time.h>" | |
| ngx_feature_path= | |
| ngx_feature_libs= | |
| ngx_feature_test="int kq; | |
| struct kevent kev; | |
| struct timespec ts; | |
| struct timeval tv, tv0; | |
| kq = kqueue(); | |
| ts.tv_sec = 0; | |
| ts.tv_nsec = 999000000; | |
| gettimeofday(&tv, 0); | |
| kevent(kq, NULL, 0, &kev, 1, &ts); | |
| gettimeofday(&tv0, 0); | |
| timersub(&tv0, &tv, &tv); | |
| if (tv.tv_sec * 1000000 + tv.tv_usec < 900000) return 1;" | |
| . auto/feature | |
| # sendfile() | |
| CC_AUX_FLAGS="$CC_AUX_FLAGS" | |
| ngx_feature="sendfile()" | |
| ngx_feature_name="NGX_HAVE_SENDFILE" | |
| ngx_feature_run=yes | |
| ngx_feature_incs="#include <sys/types.h> | |
| #include <sys/socket.h> | |
| #include <sys/uio.h> | |
| #include <sys/errno.h>" | |
| ngx_feature_path= | |
| ngx_feature_libs= | |
| ngx_feature_test="int s = 0, fd = 1; | |
| off_t n; off_t off = 0; | |
| n = sendfile(s, fd, off, &n, NULL, 0); | |
| if (n == -1 && errno == ENOSYS) return 1" | |
| . auto/feature | |
| if [ $ngx_found = yes ]; then | |
| have=NGX_HAVE_SENDFILE . auto/have | |
| CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS" | |
| fi | |
| ngx_feature="atomic(3)" | |
| ngx_feature_name=NGX_DARWIN_ATOMIC | |
| ngx_feature_run=no | |
| ngx_feature_incs="#include <libkern/OSAtomic.h>" | |
| ngx_feature_path= | |
| ngx_feature_libs= | |
| ngx_feature_test="int32_t lock, n; | |
| n = OSAtomicCompareAndSwap32Barrier(0, 1, lock)" | |
| . auto/feature |