
if [ $MD5 != NONE ]; then

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

    CORE_INCS="$CORE_INCS -I $MD5"

    case $CC in

        cl)
            LINK_DEPS="$LINK_DEPS $MD5/md5.lib"
            CORE_LIBS="$CORE_LIBS md5.lib"
            CORE_LINK="$CORE_LINK -libpath:$MD5"
        ;;

        wcl386)
            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 -L $MD5 -lmd5"
        ;;

    esac

else

ngx_lib_inc="#include <sys/types.h>
#include <md5.h>"

    MD5=NO

    # Solaris 8/9

    ngx_lib="rsaref md5"
    ngx_lib_test="MD5_CTX md5; MD5Init(&md5)"
    ngx_libs=-lmd5
    . auto/lib/test


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

    else
        # FreeBSD

        ngx_lib="rsaref md"
        ngx_lib_test="MD5_CTX md5; MD5Init(&md5)"
        ngx_libs=-lmd
        . auto/lib/test
    fi


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

    else
        # OpenSSL crypto library

        ngx_inc="#include <openssl/md5.h>"
        ngx_lib="OpenSSL md5 crypto"
        ngx_lib_test="MD5_CTX md5; MD5_Init(&md5)"
        ngx_libs=-lcrypto
        . auto/lib/test
    fi


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