
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
