123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- # Copyright (C) Igor Sysoev
- # Copyright (C) Nginx, Inc.
- have=NGX_DARWIN . auto/have_headers
- CORE_INCS="$UNIX_INCS"
- CORE_DEPS="$UNIX_DEPS $DARWIN_DEPS"
- CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS"
- ngx_spacer='
- '
- MAIN_LINK=
- MODULE_LINK="-shared -Wl,-undefined,dynamic_lookup"
- CC_AUX_FLAGS="$CC_AUX_FLAGS -D__APPLE_USE_RFC_3542"
- # 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()
- 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
- 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 = 0;
- if (!OSAtomicCompareAndSwap32Barrier(0, 1, &lock)) return 1"
- . auto/feature
|