
# Copyright (C) Igor Sysoev


if [ $MD5 != NONE ]; then

    if grep MD5_Init $MD5/md5.h >/dev/null; then
        # OpenSSL md5
        OPENSSL_MD5=YES
        have=NGX_HAVE_OPENSSL_MD5 . auto/have
        have=NGX_OPENSSL_MD5 . auto/have
    else
        # rsaref md5
        OPENSSL_MD5=NO
    fi

    CORE_INCS="$CORE_INCS $MD5"

    case "$NGX_CC_NAME" in

        msvc* | owc* | bcc)
            LINK_DEPS="$LINK_DEPS $MD5/md5.lib"
            CORE_LIBS="$CORE_LIBS $MD5/md5.lib"
        ;;

        icc*)
            LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"

            # to allow -ipo optimization we link with the *.o but not library
            CORE_LIBS="$CORE_LIBS $MD5/md5_dgst.o"

            if [ $MD5_ASM = YES ]; then
                CORE_LIBS="$CORE_LIBS $MD5/asm/mx86-elf.o"
            fi
        ;;

        *)
            LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
            CORE_LIBS="$CORE_LIBS $MD5/libmd5.a"
            #CORE_LIBS="$CORE_LIBS -L $MD5 -lmd5"
        ;;

    esac

else

    if [ $NGX_PLATFORM != win32 ]; then
        MD5=NO

        # Solaris 8/9

        ngx_feature="rsaref md5 library"
        ngx_feature_name=
        ngx_feature_run=no
        ngx_feature_incs="#include <md5.h>"
        ngx_feature_libs="-lmd5"
        ngx_feature_test="MD5_CTX md5; MD5Init(&md5)"
        . auto/feature

        if [ $ngx_found = yes ]; then
            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
            MD5=YES
            MD5_LIB=md5
            ngx_found=no

        else
            # FreeBSD

            ngx_feature="rsaref md library"
            ngx_feature_name=
            ngx_feature_run=no
            ngx_feature_incs="#include <md5.h>"
            ngx_feature_libs="-lmd"
            ngx_feature_test="MD5_CTX md5; MD5Init(&md5)"
            . auto/feature
        fi


        if [ $ngx_found = yes ]; then
            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
            MD5=YES
            MD5_LIB=md
            ngx_found=no

        else
            if [ $MD5 = NO ]; then

               # OpenSSL crypto library

               ngx_feature="OpenSSL md5 crypto library"
               ngx_feature_name="NGX_OPENSSL_MD5"
               ngx_feature_run=no
               ngx_feature_incs="#include <openssl/md5.h>"
               ngx_feature_libs="-lcrypto"
               ngx_feature_test="MD5_CTX md5; MD5_Init(&md5)"
               . auto/feature
            fi
        fi


        if [ $ngx_found = yes ]; then
            have=NGX_HAVE_OPENSSL_MD5_H . auto/have
            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
            MD5=YES
            MD5_LIB=crypto
        fi
    fi

fi
