blob: 3c2c8419d58cafcfafb93d30032cc7c8553cccb8 [file] [log] [blame]
Igor Sysoevc0f8d912003-11-26 15:42:18 +00001
Igor Sysoevff8da912004-09-29 16:00:49 +00002# Copyright (C) Igor Sysoev
3
4
Igor Sysoev899b44e2005-05-12 14:58:06 +00005have=NGX_LINUX . auto/have_headers
Igor Sysoevc0edbcc2004-10-21 15:34:38 +00006
Igor Sysoevc0f8d912003-11-26 15:42:18 +00007CORE_INCS="$UNIX_INCS"
8CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
Igor Sysoev25b36fe2004-02-03 16:43:54 +00009CORE_SRCS="$UNIX_SRCS $LINUX_SRCS"
Igor Sysoevc0f8d912003-11-26 15:42:18 +000010
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000011ngx_spacer='
12'
Igor Sysoev24b56c92004-03-10 17:55:19 +000013
Igor Sysoevd039a2e2005-02-22 14:40:13 +000014CC_AUX_FLAGS="$CC_AUX_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
Igor Sysoevc0f8d912003-11-26 15:42:18 +000015
Igor Sysoev1b735832004-11-11 14:07:14 +000016
Igor Sysoev0ed19cc2004-06-10 18:36:57 +000017# Linux kernel version
18
Igor Sysoevbb46eda2008-03-11 16:29:18 +000019version=$((`uname -r \
20 | sed 's/^\([^.]*\)\.\([^.]*\)\.\([^.-]*\).*/\1*256*256+\2*256+\3/'`))
Igor Sysoev0ed19cc2004-06-10 18:36:57 +000021
Igor Sysoevb1dfe472004-12-21 12:30:30 +000022version=${version:-0}
23
Igor Sysoev0ed19cc2004-06-10 18:36:57 +000024
Igor Sysoev001a9cf2008-03-10 14:35:21 +000025# enable the rt signals on Linux between 2.2.19 and 2.6.17
Igor Sysoev0ed19cc2004-06-10 18:36:57 +000026
Igor Sysoev2f0d79c2008-03-11 16:27:44 +000027if [ \( $version -ge 131603 -a $version -lt 132626 \) -o $EVENT_RTSIG = YES ]
Igor Sysoev001a9cf2008-03-10 14:35:21 +000028then
Igor Sysoevc2068d02005-10-19 12:33:58 +000029 echo " + rt signals found"
Igor Sysoevf6906042004-11-25 16:17:31 +000030 have=NGX_HAVE_RTSIG . auto/have
Igor Sysoev0ed19cc2004-06-10 18:36:57 +000031 EVENT_MODULES="$EVENT_MODULES $RTSIG_MODULE"
32 CORE_SRCS="$CORE_SRCS $RTSIG_SRCS"
33 EVENT_FOUND=YES
34fi
35
Igor Sysoev10318a22004-01-29 21:45:01 +000036
Igor Sysoeva4b16df2004-02-02 21:19:52 +000037# epoll, EPOLLET version
38
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000039ngx_feature="epoll"
Igor Sysoevf6906042004-11-25 16:17:31 +000040ngx_feature_name="NGX_HAVE_EPOLL"
Igor Sysoev43f279d2005-12-18 16:02:44 +000041ngx_feature_run=yes
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000042ngx_feature_incs="#include <sys/epoll.h>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +000043ngx_feature_path=
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000044ngx_feature_libs=
45ngx_feature_test="int efd = 0, fd = 1, n;
46 struct epoll_event ee;
47 ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
48 ee.data.ptr = NULL;
49 efd = epoll_create(100);
50 if (efd == -1) return 1;"
51. auto/feature
Igor Sysoeva4b16df2004-02-02 21:19:52 +000052
53if [ $ngx_found = yes ]; then
Igor Sysoevf6906042004-11-25 16:17:31 +000054 have=NGX_HAVE_CLEAR_EVENT . auto/have
Igor Sysoev10318a22004-01-29 21:45:01 +000055 CORE_SRCS="$CORE_SRCS $EPOLL_SRCS"
Igor Sysoeva4b16df2004-02-02 21:19:52 +000056 EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE"
57 EVENT_FOUND=YES
Igor Sysoev10318a22004-01-29 21:45:01 +000058fi
59
60
Igor Sysoeva4b16df2004-02-02 21:19:52 +000061# sendfile()
62
Igor Sysoev6d16e1e2006-04-05 13:40:54 +000063CC_AUX_FLAGS="$CC_AUX_FLAGS -D_GNU_SOURCE"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000064ngx_feature="sendfile()"
Igor Sysoevf6906042004-11-25 16:17:31 +000065ngx_feature_name="NGX_HAVE_SENDFILE"
Igor Sysoev43f279d2005-12-18 16:02:44 +000066ngx_feature_run=yes
67ngx_feature_incs="#include <sys/sendfile.h>
68#include <errno.h>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +000069ngx_feature_path=
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000070ngx_feature_libs=
71ngx_feature_test="int s = 0, fd = 1;
72 ssize_t n; off_t off = 0;
Igor Sysoev43f279d2005-12-18 16:02:44 +000073 n = sendfile(s, fd, &off, 1);
74 if (n == -1 && errno == ENOSYS) return 1"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000075. auto/feature
Igor Sysoeva4b16df2004-02-02 21:19:52 +000076
77if [ $ngx_found = yes ]; then
Igor Sysoeva4b16df2004-02-02 21:19:52 +000078 CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS"
79fi
80
81
82# sendfile64()
Igor Sysoevc0f8d912003-11-26 15:42:18 +000083
Igor Sysoev6d16e1e2006-04-05 13:40:54 +000084CC_AUX_FLAGS="$CC_AUX_FLAGS -D_FILE_OFFSET_BITS=64"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000085ngx_feature="sendfile64()"
Igor Sysoevf6906042004-11-25 16:17:31 +000086ngx_feature_name="NGX_HAVE_SENDFILE64"
Igor Sysoev43f279d2005-12-18 16:02:44 +000087ngx_feature_run=yes
88ngx_feature_incs="#include <sys/sendfile.h>
89#include <errno.h>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +000090ngx_feature_path=
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000091ngx_feature_libs=
92ngx_feature_test="int s = 0, fd = 1;
93 ssize_t n; off_t off = 0;
Igor Sysoev43f279d2005-12-18 16:02:44 +000094 n = sendfile(s, fd, &off, 1);
95 if (n == -1 && errno == ENOSYS) return 1"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000096. auto/feature
Igor Sysoevc0f8d912003-11-26 15:42:18 +000097
Igor Sysoev7af6b162004-02-09 07:46:43 +000098
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000099ngx_include="sys/prctl.h"; . auto/include
100
Igor Sysoev7af6b162004-02-09 07:46:43 +0000101# prctl(PR_SET_DUMPABLE)
102
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000103ngx_feature="prctl(PR_SET_DUMPABLE)"
Igor Sysoevf6906042004-11-25 16:17:31 +0000104ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000105ngx_feature_run=yes
106ngx_feature_incs="#include <sys/prctl.h>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000107ngx_feature_path=
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000108ngx_feature_libs=
109ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1"
110. auto/feature
Igor Sysoev0e5dc5c2005-11-15 13:30:52 +0000111
112
113# sched_setaffinity()
114
115ngx_feature="sched_setaffinity()"
116ngx_feature_name="NGX_HAVE_SCHED_SETAFFINITY"
117ngx_feature_run=no
118ngx_feature_incs="#include <sched.h>"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000119ngx_feature_path=
Igor Sysoev0e5dc5c2005-11-15 13:30:52 +0000120ngx_feature_libs=
121ngx_feature_test="long mask = 0;
Igor Sysoevd3283ff2005-12-05 13:18:09 +0000122 sched_setaffinity(0, 32, (cpu_set_t *) &mask)"
Igor Sysoev0e5dc5c2005-11-15 13:30:52 +0000123. auto/feature