summaryrefslogtreecommitdiff
path: root/ext/pcre/config0.m4
blob: 95298a90b2b14d9dca51521db2547f6c1309efa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
dnl
dnl $Id$
dnl

dnl By default we'll compile and link against the bundled PCRE library
dnl if DIR is supplied, we'll use that for linking

PHP_ARG_WITH(pcre-regex,,
[  --with-pcre-regex=DIR   Include Perl Compatible Regular Expressions support.
                          DIR is the PCRE install prefix [BUNDLED]], yes, no)

PHP_ARG_WITH(pcre-jit,,[  --with-pcre-jit         Enable PCRE JIT functionality (BUNDLED only)], yes, no)

  if test "$PHP_PCRE_REGEX" != "yes" && test "$PHP_PCRE_REGEX" != "no"; then
    AC_MSG_CHECKING([for PCRE headers location])
    for i in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/include $PHP_PCRE_REGEX/include/pcre $PHP_PCRE_REGEX/local/include; do
      test -f $i/pcre.h && PCRE_INCDIR=$i
    done

    if test -z "$PCRE_INCDIR"; then
      AC_MSG_ERROR([Could not find pcre.h in $PHP_PCRE_REGEX])
    fi
    AC_MSG_RESULT([$PCRE_INCDIR])

    AC_MSG_CHECKING([for PCRE library location])
    for j in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/$PHP_LIBDIR; do
      test -f $j/libpcre.a || test -f $j/libpcre.$SHLIB_SUFFIX_NAME && PCRE_LIBDIR=$j
    done

    if test -z "$PCRE_LIBDIR" ; then
      AC_MSG_ERROR([Could not find libpcre.(a|$SHLIB_SUFFIX_NAME) in $PHP_PCRE_REGEX])
    fi
    AC_MSG_RESULT([$PCRE_LIBDIR])

    changequote({,})
    pcre_major=`grep PCRE_MAJOR $PCRE_INCDIR/pcre.h | sed -e 's/[^0-9]//g'`
    pcre_minor=`grep PCRE_MINOR $PCRE_INCDIR/pcre.h | sed -e 's/[^0-9]//g'`
    changequote([,])
    pcre_minor_length=`echo "$pcre_minor" | wc -c | sed -e 's/[^0-9]//g'`
    if test "$pcre_minor_length" -eq 2 ; then
      pcre_minor="$pcre_minor"0
    fi
    pcre_version=$pcre_major$pcre_minor
    if test "$pcre_version" -lt 660; then
      AC_MSG_ERROR([The PCRE extension requires PCRE library version >= 6.6])
    fi

    PHP_CHECK_LIBRARY(pcre, pcre_jit_exec,
    [
      AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, [ ])
    ],[
    ],[
      -L$PCRE_LIBDIR
    ])
    PHP_ADD_LIBRARY_WITH_PATH(pcre, $PCRE_LIBDIR)

    AC_DEFINE(HAVE_PCRE, 1, [ ])
    PHP_ADD_INCLUDE($PCRE_INCDIR)
    PHP_NEW_EXTENSION(pcre, php_pcre.c, no,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
    PHP_INSTALL_HEADERS([ext/pcre], [php_pcre.h])
  else
    AC_MSG_CHECKING([for PCRE library to use])
    AC_MSG_RESULT([bundled])
    pcrelib_sources="pcrelib/pcre_chartables.c pcrelib/pcre_ucd.c \
    				 pcrelib/pcre_compile.c pcrelib/pcre_config.c pcrelib/pcre_exec.c \
    				 pcrelib/pcre_fullinfo.c pcrelib/pcre_get.c pcrelib/pcre_globals.c \
    				 pcrelib/pcre_maketables.c pcrelib/pcre_newline.c \
    				 pcrelib/pcre_ord2utf8.c pcrelib/pcre_refcount.c pcrelib/pcre_study.c \
    				 pcrelib/pcre_tables.c pcrelib/pcre_valid_utf8.c \
    				 pcrelib/pcre_version.c pcrelib/pcre_xclass.c \
    				 pcrelib/pcre_jit_compile.c"
    PHP_PCRE_CFLAGS="-DHAVE_CONFIG_H -I@ext_srcdir@/pcrelib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
    PHP_NEW_EXTENSION(pcre, $pcrelib_sources php_pcre.c, no,,$PHP_PCRE_CFLAGS)
    PHP_ADD_BUILD_DIR($ext_builddir/pcrelib)
    PHP_INSTALL_HEADERS([ext/pcre], [php_pcre.h pcrelib/])
    AC_DEFINE(HAVE_BUNDLED_PCRE, 1, [ ])

    if test "$PHP_PCRE_REGEX" != "no"; then
      AC_MSG_CHECKING([whether to enable PCRE JIT functionality])
      if test "$PHP_PCRE_JIT" != "no"; then
        AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, [ ])
        AC_MSG_RESULT([yes])
      else
      AC_MSG_RESULT([no])
      fi
    fi
  fi

PHP_ARG_WITH(pcre-valgrind,,[  --with-pcre-valgrind=DIR
                          Enable PCRE valgrind support. Developers only!], no, no)
  if test "$PHP_PCRE_REGEX" != "yes" && test "$PHP_PCRE_REGEX" != "no"; then
    AC_MSG_WARN([PHP is going to be linked with an external PCRE, --with-pcre-valgrind has no effect])
  else
    if test "$PHP_PCRE_VALGRIND" != "no"; then
      PHP_PCRE_VALGRIND_INCDIR=
      AC_MSG_CHECKING([for Valgrind headers location])
      for i in $PHP_PCRE_VALGRIND $PHP_PCRE_VALGRIND/include $PHP_PCRE_VALGRIND/local/include /usr/include /usr/local/include; do
        if test -f $i/valgrind/memcheck.h
        then
          PHP_PCRE_VALGRIND_INCDIR=$i
          break
        fi
      done
      if test -z "$PHP_PCRE_VALGRIND_INCDIR"
      then
        AC_MSG_ERROR([Could not find valgrind/memcheck.h])
      else
        AC_DEFINE(HAVE_PCRE_VALGRIND_SUPPORT, 1, [ ])
        PHP_ADD_INCLUDE($PHP_PCRE_VALGRIND_INCDIR)
        AC_MSG_RESULT([$PHP_PCRE_VALGRIND_INCDIR])
      fi
    fi
  fi