Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +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_FREEBSD . auto/have_headers |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 6 | |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 7 | CORE_INCS="$UNIX_INCS" |
| 8 | CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS" |
Igor Sysoev | 5c8c52f | 2004-01-23 09:26:18 +0000 | [diff] [blame] | 9 | CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS" |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +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 | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 14 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 15 | # __FreeBSD_version and sysctl kern.osreldate are the best ways |
| 16 | # to determine whether some capability exists and is safe to use. |
Igor Sysoev | e2f30be | 2006-09-06 19:07:31 +0000 | [diff] [blame] | 17 | # __FreeBSD_version is used for the testing of the build environment. |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 18 | # sysctl kern.osreldate is used for the testing of the kernel capabilities. |
Igor Sysoev | 9139cd2 | 2004-02-17 17:53:12 +0000 | [diff] [blame] | 19 | |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 20 | version=`grep "#define __FreeBSD_version" /usr/include/osreldate.h \ |
| 21 | | sed -e 's/^.* \(.*\)$/\1/'` |
| 22 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 23 | osreldate=`/sbin/sysctl -n kern.osreldate` |
| 24 | |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 25 | |
Igor Sysoev | 48fef66 | 2004-02-24 17:31:46 +0000 | [diff] [blame] | 26 | # setproctitle() in libutil |
| 27 | |
| 28 | if [ \( $version -ge 500000 -a $version -lt 500012 \) \ |
| 29 | -o $version -lt 410002 ] |
| 30 | then |
| 31 | echo " + setproctitle() in libutil" |
| 32 | |
| 33 | CORE_LIBS="$CORE_LIBS -lutil" |
Igor Sysoev | 899b44e | 2005-05-12 14:58:06 +0000 | [diff] [blame] | 34 | NGX_SETPROCTITLE_LIB="-lutil" |
Igor Sysoev | 48fef66 | 2004-02-24 17:31:46 +0000 | [diff] [blame] | 35 | fi |
| 36 | |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 37 | # sendfile |
| 38 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 39 | if [ $osreldate -gt 300007 ]; then |
Igor Sysoev | c2068d0 | 2005-10-19 12:33:58 +0000 | [diff] [blame] | 40 | echo " + sendfile() found" |
Igor Sysoev | 48fef66 | 2004-02-24 17:31:46 +0000 | [diff] [blame] | 41 | |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 42 | have=NGX_HAVE_SENDFILE . auto/have |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 43 | CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS" |
| 44 | fi |
| 45 | |
Igor Sysoev | bfff034 | 2009-08-30 09:52:39 +0000 | [diff] [blame] | 46 | if [ $osreldate -gt 502103 ]; then |
| 47 | echo " + sendfile()'s SF_NODISKIO found" |
| 48 | |
| 49 | have=NGX_HAVE_AIO_SENDFILE . auto/have |
| 50 | fi |
| 51 | |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 52 | |
| 53 | # kqueue |
| 54 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 55 | if [ \( $osreldate -lt 500000 -a $osreldate -ge 410000 \) \ |
| 56 | -o $osreldate -ge 500011 ] |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 57 | then |
Igor Sysoev | c2068d0 | 2005-10-19 12:33:58 +0000 | [diff] [blame] | 58 | echo " + kqueue found" |
Igor Sysoev | 48fef66 | 2004-02-24 17:31:46 +0000 | [diff] [blame] | 59 | |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 60 | have=NGX_HAVE_KQUEUE . auto/have |
| 61 | have=NGX_HAVE_CLEAR_EVENT . auto/have |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 62 | EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE" |
Igor Sysoev | 6881bfb | 2004-03-30 06:27:36 +0000 | [diff] [blame] | 63 | CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS" |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 64 | EVENT_FOUND=YES |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 65 | fi |
| 66 | |
Igor Sysoev | 1ebfead | 2005-02-16 13:40:36 +0000 | [diff] [blame] | 67 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 68 | NGX_KQUEUE_CHECKED=YES |
| 69 | |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 70 | |
| 71 | # kqueue's NOTE_LAWAT |
| 72 | |
| 73 | if [ \( $version -lt 500000 -a $version -ge 430000 \) \ |
| 74 | -o $version -ge 500018 ] |
| 75 | then |
Igor Sysoev | c2068d0 | 2005-10-19 12:33:58 +0000 | [diff] [blame] | 76 | echo " + kqueue's NOTE_LOWAT found" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 77 | have=NGX_HAVE_LOWAT_EVENT . auto/have |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 78 | fi |
| 79 | |
Igor Sysoev | c2068d0 | 2005-10-19 12:33:58 +0000 | [diff] [blame] | 80 | # kqueue's EVFILT_TIMER |
| 81 | |
| 82 | if [ \( $version -lt 500000 -a $version -ge 440001 \) \ |
| 83 | -o $version -ge 500023 ] |
| 84 | then |
| 85 | echo " + kqueue's EVFILT_TIMER found" |
| 86 | have=NGX_HAVE_TIMER_EVENT . auto/have |
| 87 | fi |
| 88 | |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 89 | |
Igor Sysoev | 32fcd5c | 2004-07-05 06:55:54 +0000 | [diff] [blame] | 90 | if [ $USE_THREADS = "rfork" ]; then |
| 91 | |
| 92 | echo " + using rfork()" |
| 93 | |
Igor Sysoev | ff8da91 | 2004-09-29 16:00:49 +0000 | [diff] [blame] | 94 | # # kqueue's EVFILT_SIGNAL is safe |
| 95 | # |
| 96 | # if [ $version -gt 460101 ]; then |
| 97 | # echo " + kqueue's EVFILT_SIGNAL is safe" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 98 | # have=NGX_HAVE_SAFE_EVFILT_SIGNAL . auto/have |
Igor Sysoev | ff8da91 | 2004-09-29 16:00:49 +0000 | [diff] [blame] | 99 | # else |
| 100 | # echo "$0: error: the kqueue's EVFILT_SIGNAL is unsafe on this" |
| 101 | # echo "FreeBSD version, so --with-threads=rfork could not be used" |
| 102 | # echo |
| 103 | # |
| 104 | # exit 1 |
| 105 | # fi |
Igor Sysoev | 32fcd5c | 2004-07-05 06:55:54 +0000 | [diff] [blame] | 106 | fi |
| 107 | |
| 108 | |
Igor Sysoev | a4b16df | 2004-02-02 21:19:52 +0000 | [diff] [blame] | 109 | if [ $EVENT_AIO = YES ]; then |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 110 | if [ \( $version -lt 500000 -a $version -ge 430000 \) \ |
| 111 | -o $version -ge 500014 ] |
| 112 | then |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 113 | have=NGX_HAVE_AIO . auto/have |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 114 | EVENT_MODULES="$EVENT_MODULES $AIO_MODULE" |
| 115 | CORE_SRCS="$CORE_SRCS $AIO_SRCS" |
| 116 | else |
| 117 | |
| 118 | cat << END |
| 119 | |
| 120 | $0: error: the kqueue does not support AIO on this FreeBSD version |
| 121 | |
| 122 | END |
| 123 | |
| 124 | exit 1 |
| 125 | fi |
Igor Sysoev | a8fa0a6 | 2003-11-25 20:44:56 +0000 | [diff] [blame] | 126 | fi |