mirror of https://github.com/nginx/nginx
An official read-only mirror of http://hg.nginx.org/nginx/ which is updated hourly. Pull requests on GitHub cannot be accepted and will be automatically closed. The proper way to submit changes to nginx is via the nginx development mailing list, see http:
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.9 KiB
116 lines
2.9 KiB
|
|
# 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='
|
|
'
|
|
|
|
# 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
|
|
|