
# Copyright (C) Igor Sysoev


if [ $OPENSSL != NONE ]; then

    case "$CC" in

        cl | bcc32)
            have=NGX_OPENSSL . auto/have
            have=NGX_SSL . auto/have

            CFLAGS="$CFLAGS -DNO_SYS_TYPES_H"

            CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
            CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
            CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
            CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"

            # libeay32.lib requires gdi32.lib
            CORE_LIBS="$CORE_LIBS gdi32.lib"
            # OpenSSL 1.0.0 requires crypt32.lib
            CORE_LIBS="$CORE_LIBS crypt32.lib"
        ;;

        *)
            have=NGX_OPENSSL . auto/have
            have=NGX_SSL . auto/have

            CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
            CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
            CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
            CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
            CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
        ;;
    esac

else

    case "$NGX_PLATFORM" in

        win32)
            have=NGX_OPENSSL . auto/have
            have=NGX_SSL . auto/have
            OPENSSL=YES

            CORE_INCS="$CORE_INCS c:/openssl/include"
            CORE_LIBS="$CORE_LIBS c:/openssl/ssleay32.lib"
            CORE_LIBS="$CORE_LIBS c:/openssl/libeay32.lib"

            # libeay32.lib requires gdi32.lib
            CORE_LIBS="$CORE_LIBS gdi32.lib"
        ;;

        *)
            OPENSSL=NO

            ngx_feature="OpenSSL library"
            ngx_feature_name="NGX_OPENSSL"
            ngx_feature_run=no
            ngx_feature_incs="#include <openssl/ssl.h>"
            ngx_feature_path=
            ngx_feature_libs="-lssl -lcrypto"
            ngx_feature_test="SSL_library_init()"
            . auto/feature

            if [ $ngx_found = yes ]; then
                have=NGX_SSL . auto/have
                CORE_LIBS="$CORE_LIBS $ngx_feature_libs $NGX_LIBDL"
                OPENSSL=YES
            else

cat << END

$0: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.

END
                exit 1
            fi
        ;;

    esac

fi
