]> granicus.if.org Git - php/commitdiff
Require pkg-config for external PCRE
authorEli Schwartz <eschwartz@archlinux.org>
Mon, 22 Oct 2018 17:07:44 +0000 (13:07 -0400)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 26 Dec 2018 12:51:15 +0000 (13:51 +0100)
Use standard PKG_CHECK_MODULES macro and remove the fallback case.
The option is renamed to --with-external-pcre and no longer accepts
an explicit path -- it should be specified through pkg-config instead.

ext/pcre/config0.m4

index b9542f0113063e8496ef6e8ce0ac288fae8a9159..77ab9f5c600c6731ac8da1fd3c09c504498afbb3 100644 (file)
@@ -3,116 +3,81 @@ 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(external-pcre,,
+[  --with-external-pcre    Use external library for PCRE support], no, no)
 
-PHP_ARG_WITH(pcre-jit,,[  --with-pcre-jit         Enable PCRE JIT functionality (BUNDLED only)], yes, no)
+PHP_ARG_WITH(pcre-jit,,[  --with-pcre-jit         Enable PCRE JIT functionality], 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
+if test "$PHP_EXTERNAL_PCRE" != "no"; then
 
-    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
+  PKG_CHECK_MODULES([PCRE2], [libpcre2-8 >= 10.30])
 
-    PHP_EVAL_INCLINE($PCRE2_INC)
-    PHP_EVAL_LIBLINE($PCRE2_LIB)
-    AC_DEFINE(PCRE2_CODE_UNIT_WIDTH, 8, [ ])
-    AC_DEFINE(HAVE_PCRE, 1, [ ])
+  PHP_EVAL_INCLINE($PCRE2_CFLAGS)
+  PHP_EVAL_LIBLINE($PCRE2_LIB)
+  AC_DEFINE(PCRE2_CODE_UNIT_WIDTH, 8, [ ])
+  AC_DEFINE(HAVE_PCRE, 1, [ ])
 
-    if test "$PHP_PCRE_JIT" != "no"; then
-      AC_MSG_CHECKING([for JIT support in PCRE2])
-      AC_RUN_IFELSE([
-        AC_LANG_SOURCE([[
-            #include <pcre2.h>
-            #include <stdlib.h>
-            int main(void) {
-              uint32_t have_jit;
-              pcre2_config_8(PCRE2_CONFIG_JIT, &have_jit);
-              return !have_jit;
-            }
-        ]])], [
+  if test "$PHP_PCRE_JIT" != "no"; then
+    AC_MSG_CHECKING([for JIT support in PCRE2])
+    AC_RUN_IFELSE([
+      AC_LANG_SOURCE([[
+          #include <pcre2.h>
+          #include <stdlib.h>
+          int main(void) {
+            uint32_t have_jit;
+            pcre2_config_8(PCRE2_CONFIG_JIT, &have_jit);
+            return !have_jit;
+          }
+      ]])], [
+      AC_MSG_RESULT([yes])
+      AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, [])
+    ],
+    [
+      AC_MSG_RESULT([no])
+    ],
+    [
+      AC_CANONICAL_HOST
+      case $host_cpu in
+      arm*|i[34567]86|x86_64|mips*|powerpc*|sparc)
         AC_MSG_RESULT([yes])
         AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, [])
-      ],
-      [
+        ;;
+      *)
         AC_MSG_RESULT([no])
-      ],
-      [
-        AC_CANONICAL_HOST
-        case $host_cpu in
-        arm*|i[34567]86|x86_64|mips*|powerpc*|sparc)
-          AC_MSG_RESULT([yes])
-          AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, [])
-          ;;
-        *)
-          AC_MSG_RESULT([no])
-          ;;
-        esac
-      ])
-    fi
+        ;;
+      esac
+    ])
+  fi
 
-    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, [ ])
+  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
+  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)