
# Copyright (C) Igor Sysoev


if [ $OPENSSL != NONE ]; then
    CORE_INCS="$CORE_INCS $OPENSSL/include"

    case "$CC" in

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

            LINK_DEPS="$LINK_DEPS $OPENSSL/out32/ssleay32.lib"
            CORE_LIBS="$CORE_LIBS $OPENSSL/out32/ssleay32.lib"

            LINK_DEPS="$LINK_DEPS $OPENSSL/out32/libeay32.lib"
            CORE_LIBS="$CORE_LIBS $OPENSSL/out32/libeay32.lib"

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

        *)
            have=NGX_OPENSSL . auto/have
            have=NGX_SSL . auto/have
            LINK_DEPS="$LINK_DEPS $OPENSSL/libssl.a $OPENSSL/libcrypto.a"
            CORE_LIBS="$CORE_LIBS $OPENSSL/libssl.a $OPENSSL/libcrypto.a"
        ;;
    esac

    case "$NGX_SYSTEM" in
        SunOS|Linux)
            CORE_LIBS="$CORE_LIBS -ldl"
        ;;
    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"
                OPENSSL=YES

                case "$NGX_SYSTEM" in
                    SunOS)
                        CORE_LIBS="$CORE_LIBS -ldl"
                    ;;
                esac
            fi
        ;;

    esac

fi
