Igor Sysoev | c0f8d91 | 2003-11-26 15:42:18 +0000 | [diff] [blame] | 1 | |
Igor Sysoev | ff8da91 | 2004-09-29 16:00:49 +0000 | [diff] [blame] | 2 | # Copyright (C) Igor Sysoev |
| 3 | |
| 4 | |
Igor Sysoev | 899b44e | 2005-05-12 14:58:06 +0000 | [diff] [blame] | 5 | have=NGX_LINUX . auto/have_headers |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 6 | |
Igor Sysoev | c0f8d91 | 2003-11-26 15:42:18 +0000 | [diff] [blame] | 7 | CORE_INCS="$UNIX_INCS" |
| 8 | CORE_DEPS="$UNIX_DEPS $LINUX_DEPS" |
Igor Sysoev | 25b36fe | 2004-02-03 16:43:54 +0000 | [diff] [blame] | 9 | CORE_SRCS="$UNIX_SRCS $LINUX_SRCS" |
Igor Sysoev | c0f8d91 | 2003-11-26 15:42:18 +0000 | [diff] [blame] | 10 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 11 | ngx_spacer=' |
| 12 | ' |
Igor Sysoev | 24b56c9 | 2004-03-10 17:55:19 +0000 | [diff] [blame] | 13 | |
Igor Sysoev | d039a2e | 2005-02-22 14:40:13 +0000 | [diff] [blame] | 14 | CC_AUX_FLAGS="$CC_AUX_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
Igor Sysoev | c0f8d91 | 2003-11-26 15:42:18 +0000 | [diff] [blame] | 15 | |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 16 | |
Igor Sysoev | 0ed19cc | 2004-06-10 18:36:57 +0000 | [diff] [blame] | 17 | # Linux kernel version |
| 18 | |
Igor Sysoev | bb46eda | 2008-03-11 16:29:18 +0000 | [diff] [blame] | 19 | version=$((`uname -r \ |
| 20 | | sed 's/^\([^.]*\)\.\([^.]*\)\.\([^.-]*\).*/\1*256*256+\2*256+\3/'`)) |
Igor Sysoev | 0ed19cc | 2004-06-10 18:36:57 +0000 | [diff] [blame] | 21 | |
Igor Sysoev | b1dfe47 | 2004-12-21 12:30:30 +0000 | [diff] [blame] | 22 | version=${version:-0} |
| 23 | |
Igor Sysoev | 0ed19cc | 2004-06-10 18:36:57 +0000 | [diff] [blame] | 24 | |
Igor Sysoev | 001a9cf | 2008-03-10 14:35:21 +0000 | [diff] [blame] | 25 | # enable the rt signals on Linux between 2.2.19 and 2.6.17 |
Igor Sysoev | 0ed19cc | 2004-06-10 18:36:57 +0000 | [diff] [blame] | 26 | |
Igor Sysoev | 2f0d79c | 2008-03-11 16:27:44 +0000 | [diff] [blame] | 27 | if [ \( $version -ge 131603 -a $version -lt 132626 \) -o $EVENT_RTSIG = YES ] |
Igor Sysoev | 001a9cf | 2008-03-10 14:35:21 +0000 | [diff] [blame] | 28 | then |
Igor Sysoev | c2068d0 | 2005-10-19 12:33:58 +0000 | [diff] [blame] | 29 | echo " + rt signals found" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 30 | have=NGX_HAVE_RTSIG . auto/have |
Igor Sysoev | 0ed19cc | 2004-06-10 18:36:57 +0000 | [diff] [blame] | 31 | EVENT_MODULES="$EVENT_MODULES $RTSIG_MODULE" |
| 32 | CORE_SRCS="$CORE_SRCS $RTSIG_SRCS" |
| 33 | EVENT_FOUND=YES |
| 34 | fi |
| 35 | |
Igor Sysoev | 10318a2 | 2004-01-29 21:45:01 +0000 | [diff] [blame] | 36 | |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 37 | # epoll, EPOLLET version |
| 38 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 39 | ngx_feature="epoll" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 40 | ngx_feature_name="NGX_HAVE_EPOLL" |
Igor Sysoev | 43f279d | 2005-12-18 16:02:44 +0000 | [diff] [blame] | 41 | ngx_feature_run=yes |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 42 | ngx_feature_incs="#include <sys/epoll.h>" |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 43 | ngx_feature_path= |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 44 | ngx_feature_libs= |
| 45 | ngx_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 Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 52 | |
| 53 | if [ $ngx_found = yes ]; then |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 54 | have=NGX_HAVE_CLEAR_EVENT . auto/have |
Igor Sysoev | 10318a2 | 2004-01-29 21:45:01 +0000 | [diff] [blame] | 55 | CORE_SRCS="$CORE_SRCS $EPOLL_SRCS" |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 56 | EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE" |
| 57 | EVENT_FOUND=YES |
Igor Sysoev | 10318a2 | 2004-01-29 21:45:01 +0000 | [diff] [blame] | 58 | fi |
| 59 | |
| 60 | |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 61 | # sendfile() |
| 62 | |
Igor Sysoev | 6d16e1e | 2006-04-05 13:40:54 +0000 | [diff] [blame] | 63 | CC_AUX_FLAGS="$CC_AUX_FLAGS -D_GNU_SOURCE" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 64 | ngx_feature="sendfile()" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 65 | ngx_feature_name="NGX_HAVE_SENDFILE" |
Igor Sysoev | 43f279d | 2005-12-18 16:02:44 +0000 | [diff] [blame] | 66 | ngx_feature_run=yes |
| 67 | ngx_feature_incs="#include <sys/sendfile.h> |
| 68 | #include <errno.h>" |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 69 | ngx_feature_path= |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 70 | ngx_feature_libs= |
| 71 | ngx_feature_test="int s = 0, fd = 1; |
| 72 | ssize_t n; off_t off = 0; |
Igor Sysoev | 43f279d | 2005-12-18 16:02:44 +0000 | [diff] [blame] | 73 | n = sendfile(s, fd, &off, 1); |
| 74 | if (n == -1 && errno == ENOSYS) return 1" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 75 | . auto/feature |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 76 | |
| 77 | if [ $ngx_found = yes ]; then |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 78 | CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS" |
| 79 | fi |
| 80 | |
| 81 | |
| 82 | # sendfile64() |
Igor Sysoev | c0f8d91 | 2003-11-26 15:42:18 +0000 | [diff] [blame] | 83 | |
Igor Sysoev | 6d16e1e | 2006-04-05 13:40:54 +0000 | [diff] [blame] | 84 | CC_AUX_FLAGS="$CC_AUX_FLAGS -D_FILE_OFFSET_BITS=64" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 85 | ngx_feature="sendfile64()" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 86 | ngx_feature_name="NGX_HAVE_SENDFILE64" |
Igor Sysoev | 43f279d | 2005-12-18 16:02:44 +0000 | [diff] [blame] | 87 | ngx_feature_run=yes |
| 88 | ngx_feature_incs="#include <sys/sendfile.h> |
| 89 | #include <errno.h>" |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 90 | ngx_feature_path= |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 91 | ngx_feature_libs= |
| 92 | ngx_feature_test="int s = 0, fd = 1; |
| 93 | ssize_t n; off_t off = 0; |
Igor Sysoev | 43f279d | 2005-12-18 16:02:44 +0000 | [diff] [blame] | 94 | n = sendfile(s, fd, &off, 1); |
| 95 | if (n == -1 && errno == ENOSYS) return 1" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 96 | . auto/feature |
Igor Sysoev | c0f8d91 | 2003-11-26 15:42:18 +0000 | [diff] [blame] | 97 | |
Igor Sysoev | 7af6b16 | 2004-02-09 07:46:43 +0000 | [diff] [blame] | 98 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 99 | ngx_include="sys/prctl.h"; . auto/include |
| 100 | |
Igor Sysoev | 7af6b16 | 2004-02-09 07:46:43 +0000 | [diff] [blame] | 101 | # prctl(PR_SET_DUMPABLE) |
| 102 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 103 | ngx_feature="prctl(PR_SET_DUMPABLE)" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 104 | ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 105 | ngx_feature_run=yes |
| 106 | ngx_feature_incs="#include <sys/prctl.h>" |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 107 | ngx_feature_path= |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 108 | ngx_feature_libs= |
| 109 | ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1" |
| 110 | . auto/feature |
Igor Sysoev | 0e5dc5c | 2005-11-15 13:30:52 +0000 | [diff] [blame] | 111 | |
| 112 | |
| 113 | # sched_setaffinity() |
| 114 | |
| 115 | ngx_feature="sched_setaffinity()" |
| 116 | ngx_feature_name="NGX_HAVE_SCHED_SETAFFINITY" |
| 117 | ngx_feature_run=no |
| 118 | ngx_feature_incs="#include <sched.h>" |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 119 | ngx_feature_path= |
Igor Sysoev | 0e5dc5c | 2005-11-15 13:30:52 +0000 | [diff] [blame] | 120 | ngx_feature_libs= |
| 121 | ngx_feature_test="long mask = 0; |
Igor Sysoev | d3283ff | 2005-12-05 13:18:09 +0000 | [diff] [blame] | 122 | sched_setaffinity(0, 32, (cpu_set_t *) &mask)" |
Igor Sysoev | 0e5dc5c | 2005-11-15 13:30:52 +0000 | [diff] [blame] | 123 | . auto/feature |