
# Copyright (C) Igor Sysoev


help=no

PREFIX=
SBIN_PATH=
CONF_PATH=
ERROR_LOG_PATH=
PID_PATH=
NGX_USER=
NGX_GROUP=
HTTP_LOG_PATH=

CC=${CC:-gcc}
CPP=
NGX_OBJS=objs

DEBUG=NO
NGX_CC_OPT=
NGX_LD_OPT=
CPU=NO

TEST_BUILD_DEVPOLL=NO
TEST_BUILD_EPOLL=NO
TEST_BUILD_RTSIG=NO

PLATFORM=
NGX_WINE=

EVENT_FOUND=NO

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

USE_THREADS=NO

HTTP=YES
HTTP_CHARSET=YES
HTTP_GZIP=YES
HTTP_SSL=NO
HTTP_SSI=NO
HTTP_ACCESS=YES
HTTP_USERID=YES
HTTP_AUTOINDEX=YES
HTTP_STATUS=NO
HTTP_REWRITE=YES
HTTP_PROXY=YES

IMAP=NO

MODULES=

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"         ;;
        --error-log-path=*)              ERROR_LOG_PATH="$value"    ;;
        --pid-path=*)                    PID_PATH="$value"          ;;
        --user=*)                        NGX_USER="$value"          ;;
        --group=*)                       NGX_GROUP="$value"         ;;

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

        --builddir=*)                    NGX_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)                  HTTP=NO                    ;;
        --http-log-path=*)               HTTP_LOG_PATH="$value"     ;;

        --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_userid_module)    HTTP_USERID=NO             ;;
        --without-http_access_module)    HTTP_ACCESS=NO             ;;
        --without-http_autoindex_module) HTTP_AUTOINDEX=NO          ;;
        --without-http_status_module)    HTTP_STATUS=NO             ;;
        --without-http_rewrite_module)   HTTP_REWRITE=NO            ;;
        --without-http_proxy_module)     HTTP_PROXY=NO              ;;

        --with-imap)                     IMAP=YES                   ;;

        --with-module=*)                 NGX_MODULES="$NGX_MODULES $values" ;;

        --with-cc=*)                     CC="$value"                ;;
        --with-cpp=*)                    CPP="$value"               ;;
        --with-cc-opt=*)                 NGX_CC_OPT="$value"        ;;
        --with-ld-opt=*)                 NGX_LD_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

cat << END

  --help                           this message

  --user=USER                      set non-privilege user
                                   for the worker processes
  --group=GROUP                    set non-privilege group
                                   for the worker processes

  --with-select_module             enable select module
  --without-select_module          disable select module
  --with-poll_module               enable poll module
  --without-poll_module            disable poll module

  --without-http_charset_module    disable ngx_http_charset_module
  --without-http_rewrite_module    disable ngx_http_rewrite_module
  --without-http_gzip_module       disable ngx_http_gzip_module
  --without-http_proxy_module      disable ngx_http_proxy_module

  --with-cc-opt=OPTIONS            additional options for compiler
  --with-ld-opt=OPTIONS            additional options for linker

  --with-pcre=DIR                  path to PCRE library
  --with-md5=DIR                   path to md5 library
  --with-zlib=DIR                  path to zlib library
  --with-openssl=DIR               path to OpenSSL library

END

    exit 1
fi


if [ $HTTP = NO ]; then
    HTTP_CHARSET=NO
    HTTP_GZIP=NO
    HTTP_SSI=NO
    HTTP_USERID=NO
    HTTP_ACCESS=NO
    HTTP_STATUS=NO
    HTTP_REWRITE=NO
    HTTP_PROXY=NO
fi


if [ ".$PLATFORM" = ".win32" ]; then
    NGX_WINE=$WINE
fi


if test -z "$PREFIX"; then
    PREFIX=/usr/local/nginx
fi


if test -z "$NGX_GROUP"; then
    NGX_GROUP=NGX_USER
fi


case ".$SBIN_PATH" in
    ./*)
    ;;

    .)
        SBIN_PATH=$PREFIX/sbin/nginx
    ;;

    *)
        SBIN_PATH=$PREFIX/$SBIN_PATH
    ;;
esac


case ".$CONF_PATH" in
    ./*)
    ;;

    .)
        CONF_PATH=$PREFIX/conf/nginx.conf
    ;;

    *)
        CONF_PATH=$PREFIX/$CONF_PATH
    ;;
esac


case ".$PID_PATH" in
    ./*)
    ;;

    .)
        PID_PATH=$PREFIX/logs/nginx.pid
    ;;

    *)
        PID_PATH=$PREFIX/$PID_PATH
    ;;
esac


case ".$ERROR_LOG_PATH" in
    ./*)
    ;;

    .)
        ERROR_LOG_PATH=$PREFIX/logs/error.log
    ;;

    .stderr)
        ERROR_LOG_PATH=
    ;;

    *)
        ERROR_LOG_PATH=$PREFIX/$ERROR_LOG_PATH
    ;;
esac


case ".$HTTP_LOG_PATH" in
    ./*)
    ;;

    .)
        HTTP_LOG_PATH=$PREFIX/logs/access.log
    ;;

    *)
        HTTP_LOG_PATH=$PREFIX/$HTTP_LOG_PATH
    ;;
esac
