summaryrefslogtreecommitdiff
path: root/ext/pcre/config0.m4
blob: 3f7f04d4fc60b7fc1e88f3b5020da04a494e3036 (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
115
116
117
118
119
dnl config.m4 for extension pcre

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

    if test "$PHP_PCRE_REGEX" = "/usr"; then
      if test -z "$PKG_CONFIG"; then
        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
      fi
      if test -x "$PKG_CONFIG"; then
        AC_MSG_CHECKING(for PCRE2 10.30 or greater)
        if $PKG_CONFIG --atleast-version 10.30 libpcre2-8; then
          PCRE2_VER=`$PKG_CONFIG --modversion libpcre2-8`
          AC_MSG_RESULT($PCRE2_VER)
        else
          AC_MSG_ERROR(PCRE2 version 10.30 or later is required to compile php with PCRE2 support)
        fi
        PCRE2_LIB=`$PKG_CONFIG --libs libpcre2-8`
        PCRE2_INC=`$PKG_CONFIG --cflags libpcre2-8`
      fi
    fi

    dnl PCRE2 in a non standard  prefix should still have its config tool.
    dnl CFLAGS can be empty, but libs shouldn't
    if test -z "$PCRE2_LIB"; then
      PCRE2_CONF=$PHP_PCRE_REGEX/bin/pcre2-config
      if test -x "$PCRE2_CONF"; then
        AC_MSG_CHECKING(for PCRE2 10.30 or greater)
        PCRE2_VER=`$PCRE2_CONF --version`
        if test "`echo $PCRE2_VER | sed 's,\.,,g'`" -lt 1030; then
          AC_MSG_ERROR(PCRE2 version 10.30 or later is required to compile php with PCRE2 support)
        else
          AC_MSG_RESULT($PCRE2_VER)
        fi
        PCRE2_LIB=`$PCRE2_CONF --libs8`
        PCRE2_INC=`$PCRE2_CONF --cflags`
      else
        AC_MSG_ERROR(Couldn't find pcre2-config)
      fi
    fi

    if test "$PHP_PCRE_JIT" != "no"; then
      PHP_CHECK_LIBRARY(pcre2-8, pcre2_jit_compile_8,
      [
        AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, [ ])
      ],[
      ],[
        $PCRE2_LIB
      ])
    fi

    PHP_EVAL_INCLINE($PCRE2_INC)
    PHP_EVAL_LIBLINE($PCRE2_LIB)
    AC_DEFINE(HAVE_PCRE, 1, [ ])
    AC_DEFINE(PCRE2_CODE_UNIT_WIDTH, 8, [ ])
    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="pcre2lib/pcre2_auto_possess.c pcre2lib/pcre2_chartables.c pcre2lib/pcre2_compile.c \
    	pcre2lib/pcre2_config.c pcre2lib/pcre2_context.c pcre2lib/pcre2_dfa_match.c pcre2lib/pcre2_error.c \
	pcre2lib/pcre2_jit_compile.c pcre2lib/pcre2_maketables.c pcre2lib/pcre2_match.c pcre2lib/pcre2_match_data.c \
	pcre2lib/pcre2_newline.c pcre2lib/pcre2_ord2utf.c pcre2lib/pcre2_pattern_info.c pcre2lib/pcre2_serialize.c \
	pcre2lib/pcre2_string_utils.c pcre2lib/pcre2_study.c pcre2lib/pcre2_substitute.c  pcre2lib/pcre2_substring.c \
	pcre2lib/pcre2_tables.c pcre2lib/pcre2_ucd.c pcre2lib/pcre2_valid_utf.c pcre2lib/pcre2_xclass.c \
	pcre2lib/pcre2_find_bracket.c pcre2lib/pcre2_convert.c pcre2lib/pcre2_extuni.c"
    PHP_PCRE_CFLAGS="-DHAVE_CONFIG_H -I@ext_srcdir@/pcre2lib -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/pcre2lib)
    PHP_INSTALL_HEADERS([ext/pcre], [php_pcre.h pcre2lib/])
    AC_DEFINE(HAVE_BUNDLED_PCRE, 1, [ ])
    AC_DEFINE(PCRE2_CODE_UNIT_WIDTH, 8, [ ])

    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