
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_REWRITE=YES
HTTP_GZIP=YES
HTTP_SSI=YES
HTTP_PROXY=YES

USE_PCRE=NO
PCRE=NONE
PCRE_OPT=

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"     ;;

        --without-http_charset_module)   HTTP_CHARSET=NO            ;;
        --without-http_rewrite_module)   HTTP_REWRITE=NO            ;;
        --without-http_ssi_module)       HTTP_SSI=NO                ;;
        --without-http_gzip_module)      HTTP_GZIP=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-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
