
# Copyright (C) Igor Sysoev


if [ $PCRE != NONE ]; then
    CORE_INCS="$CORE_INCS $PCRE"
    CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
    CORE_SRCS="$CORE_SRCS $REGEX_SRCS"

    case "$NGX_CC_NAME" in

        msvc* | owc* | bcc)
            have=NGX_PCRE . auto/have
            have=PCRE_STATIC . auto/have
            CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
            LINK_DEPS="$LINK_DEPS $PCRE/pcre.lib"
            CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib"
        ;;

        icc* | sunc )
            have=NGX_PCRE . auto/have
            CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"

            LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a"

            echo $ngx_n "checking for PCRE library ...$ngx_c"

            ngx_pcre_ver=`grep PCRE_MAJOR= $PCRE/configure.in \
                          | sed -e 's/^.*=\(.*\)$/\1/'`

            echo " $ngx_pcre_ver major version found"

            # to allow -ipo optimization we link with the *.o but not library

            case "$ngx_pcre_ver" in
                6)
                    CORE_LIBS="$CORE_LIBS $PCRE/pcre_chartables.o"
                    CORE_LIBS="$CORE_LIBS $PCRE/pcre_compile.o"
                    CORE_LIBS="$CORE_LIBS $PCRE/pcre_exec.o"
                    CORE_LIBS="$CORE_LIBS $PCRE/pcre_fullinfo.o"
                    CORE_LIBS="$CORE_LIBS $PCRE/pcre_globals.o"
                    CORE_LIBS="$CORE_LIBS $PCRE/pcre_tables.o"
                    CORE_LIBS="$CORE_LIBS $PCRE/pcre_try_flipped.o"
                ;;

                *)
                    CORE_LIBS="$CORE_LIBS $PCRE/pcre.o"
                ;;
            esac
        ;;

        *)
            have=NGX_PCRE . auto/have
            CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
            LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a"
            CORE_LIBS="$CORE_LIBS $PCRE/.libs/libpcre.a"
            #CORE_LIBS="$CORE_LIBS -L $PCRE/.libs -lpcre"
        ;;

    esac

else

    if [ "$NGX_PLATFORM" != win32 ]; then
        PCRE=NO

        # FreeBSD PCRE port requires --with-cc-opt="-I /usr/local/include"
        #                            --with-ld-opt="-L /usr/local/lib"
        
        ngx_feature="PCRE library"
        ngx_feature_name="NGX_PCRE"
        ngx_feature_run=no
        ngx_feature_incs="#include <pcre.h>"
        ngx_feature_libs="-lpcre"
        ngx_feature_test="pcre *re; re = pcre_compile(NULL, 0, NULL, 0, NULL)"
        . auto/feature

        if [ $ngx_found = yes ]; then
            CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
            CORE_SRCS="$CORE_SRCS $REGEX_SRCS"
            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
            PCRE=YES
            ngx_found=no
        fi
    fi
fi
