
# 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 "$CC" in

        cl | wcl386 | bcc32)
            have=HAVE_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)
            have=HAVE_PCRE . auto/have
            CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"

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

            # to allow -ipo optimization we link with the *.o but not library
            CORE_LIBS="$CORE_LIBS $PCRE/maketables.o"
            CORE_LIBS="$CORE_LIBS $PCRE/get.o"
            CORE_LIBS="$CORE_LIBS $PCRE/study.o"
            CORE_LIBS="$CORE_LIBS $PCRE/pcre.o"
        ;;

        *)
            have=HAVE_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 [ $PLATFORM != win32 ]; then
            PCRE=NO
            ngx_lib_cflags=

            # Linux

            ngx_lib_inc="#include <pcre.h>"
            ngx_lib="PCRE library"
            ngx_lib_test="pcre *re; re = pcre_compile(NULL, 0, NULL, 0, NULL)"
            ngx_libs="-lpcre"
            . auto/lib/test


        if [ $ngx_found = yes ]; then
            have=HAVE_PCRE . auto/have
            CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
            CORE_SRCS="$CORE_SRCS $REGEX_SRCS"
            CORE_LIBS="$CORE_LIBS $ngx_libs"
            PCRE=YES
            ngx_found=no

        else
            # FreeBSD PCRE port.

            ngx_lib="PCRE library in /usr/local/"
            ngx_lib_cflags="-I /usr/local/include"
            ngx_libs="-L /usr/local/lib -lpcre"
            . auto/lib/test
        fi


        if [ $ngx_found = yes ]; then
            have=HAVE_PCRE . auto/have
            CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
            CORE_INCS="$CORE_INCS /usr/local/include"
            CORE_SRCS="$CORE_SRCS $REGEX_SRCS"
            CORE_LIBS="$CORE_LIBS $ngx_libs"
            PCRE=YES
        fi
    fi

fi
