
help=no

PREFIX=
SBIN_PATH=
CONF_PATH=
HTTP_LOG_PATH=
ERROR_LOG_PATH=
PID_PATH=

CC=gcc
CPP=
OBJS=objs

DEBUG=NO
CC_OPT=
CPU=NO

TEST_BUILD_DEVPOLL=NO
TEST_BUILD_EPOLL=NO
TEST_BUILD_RTSIG=NO

EVENT_FOUND=NO

EVENT_RTSIG=NO
EVENT_SELECT=NO
EVENT_POLL=NO
EVENT_AIO=NO

USE_THREADS=NO

HTTP_CHARSET=YES
HTTP_GZIP=YES
HTTP_SSL=NO
HTTP_SSI=YES
HTTP_ACCESS=YES
HTTP_STATUS=YES
HTTP_REWRITE=YES
HTTP_PROXY=YES

USE_PCRE=NO
PCRE=NONE
PCRE_OPT=

USE_OPENSSL=NO
OPENSSL=NONE

USE_MD5=NO
MD5=NONE
MD5_OPT=
MD5_ASM=NO

USE_ZLIB=NO
ZLIB=NONE
ZLIB_OPT=
ZLIB_ASM=NO


for option
do
    case "$option" in
        -*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
           *) value="" ;;
    esac

    case "$option" in
        --help)                          help=yes                   ;;

        --prefix=*)                      PREFIX="$value"            ;;
        --sbin-path=*)                   SBIN_PATH="$value"         ;;
        --conf-path=*)                   CONF_PATH="$value"         ;;
        --http-log-path=*)               HTTP_LOG_PATH="$value"     ;;
        --error-log-path=*)              ERROR_LOG_PATH="$value"    ;;
        --pid-path=*)                    PID_PATH="$value"          ;;

        --crossbuild=*)                  PLATFORM="$value"          ;;

        --builddir=*)                    OBJS="$value"              ;;

        --with-rtsig_module)             EVENT_RTSIG=YES            ;;
        --with-select_module)            EVENT_SELECT=YES           ;;
        --without-select_module)         EVENT_SELECT=NONE          ;;
        --with-poll_module)              EVENT_POLL=YES             ;;
        --without-poll_module)           EVENT_POLL=NONE            ;;
        --with-aio_module)               EVENT_AIO=YES              ;;

        --with-threads=*)                USE_THREADS="$value"       ;;
        --with-threads)                  USE_THREADS="pthreads"     ;;

        --with-http_ssl_module)          HTTP_SSL=YES               ;;
        --without-http_charset_module)   HTTP_CHARSET=NO            ;;
        --without-http_gzip_module)      HTTP_GZIP=NO               ;;
        --without-http_ssi_module)       HTTP_SSI=NO                ;;
        --without-http_access_module)    HTTP_ACCESS=NO             ;;
        --without-http_status_module)    HTTP_STATUS=NO             ;;
        --without-http_rewrite_module)   HTTP_REWRITE=NO            ;;
        --without-http_proxy_module)     HTTP_PROXY=NO              ;;

        --with-cc=*)                     CC="$value"                ;;
        --with-cpp=*)                    CPP="$value"               ;;
        --with-cc-opt=*)                 CC_OPT="$value"            ;;
        --with-cpu-opt=*)                CPU="$value"               ;;
        --with-debug)                    DEBUG=YES                  ;;

        --without-pcre)                  USE_PCRE=DISABLED          ;;
        --with-pcre=*)                   PCRE="$value"              ;;
        --with-pcre-opt=*)               PCRE_OPT="$value"          ;;

        --with-openssl=*)                OPENSSL="$value"           ;;

        --with-md5=*)                    MD5="$value"               ;;
        --with-md5-opt=*)                MD5_OPT="$value"           ;;
        --with-md5-asm)                  MD5_ASM=YES                ;;

        --with-zlib=*)                   ZLIB="$value"              ;;
        --with-zlib-opt=*)               ZLIB_OPT="$value"          ;;
        --with-zlib-asm=*)               ZLIB_ASM="$value"          ;;

        --test-build-devpoll)            TEST_BUILD_DEVPOLL=YES     ;;
        --test-build-epoll)              TEST_BUILD_EPOLL=YES       ;;
        --test-build-rtsig)              TEST_BUILD_RTSIG=YES       ;;

        *)
            echo "$0: error: invalid option \"$option\""
            exit 1
        ;;
    esac
done


if [ $help = yes ]; then
    echo
    echo "  --help                         this message"
    echo

    echo "  --without-select_module        disable select_module"
    echo "  --without-poll_module          disable poll_module"

    echo "  --without-http_rewrite_module  disable http_rewrite_module"
    echo "  --without-http_gzip_module     disable http_gzip_module"
    echo "  --without-http_proxy_module    disable http_proxy_module"

    echo "  --with-cc=NAME                 name of or path to C compiler"
    echo

    echo "  --with-pcre=DIR                path to PCRE library"
    echo "  --with-md5=DIR                 path to md5 library"
    echo "  --with-zlib=DIR                path to zlib library"
    echo

    exit 1
fi


if [ ".$PLATFORM" = ".win32" -a $EVENT_POLL = YES ]; then
    EVENT_POLL=NO
    echo "$0: warning: --with-poll_module option is ignored for win32"
fi


if [ ".$PREFIX" = "." ]; then
    PREFIX=/usr/local/nginx
fi

if [ ".$SBIN_PATH" = "." ]; then
    SBIN_PATH=$PREFIX/sbin/nginx
fi

if [ ".$CONF_PATH" = "." ]; then
    CONF_PATH=$PREFIX/conf/nginx.conf
fi

if [ ".$PID_PATH" = "." ]; then
    PID_PATH=$PREFIX/logs/nginx.pid
fi

if [ ".$ERROR_LOG_PATH" = "." ]; then
    ERROR_LOG_PATH=$PREFIX/logs/error.log
fi

if [ ".$HTTP_LOG_PATH" = "." ]; then
    HTTP_LOG_PATH=$PREFIX/logs/access.log
fi
