pcre: Add JIT-support for select architectures 10588/head
authorChristian Lachner <gladiac@gmail.com>
Sat, 16 Nov 2019 12:29:48 +0000 (13:29 +0100)
committerChristian Lachner <gladiac@gmail.com>
Fri, 22 Nov 2019 08:08:33 +0000 (09:08 +0100)
- This commit adds a config-option for JIT in libpcre(1).

  According to research published on
  https://rust-leipzig.github.io/regex/2017/03/28/comparison-of-regex-engines/
  this should give a 10x performance increase on JIT operations
  which can be desireable for high performance Apache mod_rewrite
  or haproxy reqrep operations.

  This option is available on all officially supported architecutres
  which are listed on https://pcre.org/original/doc/html/pcrejit.html#SEC3.
  Furthermore, it is enabled by default on the following
  architectures: arm, i686, x86_64.

Signed-off-by: Christian Lachner <gladiac@gmail.com>
libs/pcre/Config.in [new file with mode: 0644]
libs/pcre/Makefile

diff --git a/libs/pcre/Config.in b/libs/pcre/Config.in
new file mode 100644 (file)
index 0000000..15e75fc
--- /dev/null
@@ -0,0 +1,11 @@
+config PCRE_JIT_ENABLED
+       bool
+       depends on PACKAGE_libpcre && (arm || i386 || i686 || x86_64 || mips || mipsel || powerpc || sparc)
+       default y if (arm || i686 || x86_64)
+       prompt "Enable JIT compiler support"
+       help
+               Enable JIT (Just-In-Time) compiler support.
+
+               Enabling this option can give an about 10x performance increase on JIT operations. It can be desireable for e.g. high performance Apache mod_rewrite or HA-Proxy reqrep operations.
+
+               However, JIT should _only_ be enabled on architectures that are supported. Enabling JIT on unsupported platforms will result in a compilation failure. A list of supported architectures can be found here: https://pcre.org/original/doc/html/pcrejit.html#SEC3 .
index 720142332b2fbe68e085f450db3e433548cab620..907fbbbfc85a0d0a05b00da2f9bb7a4d5f765c5c 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pcre
 PKG_VERSION:=8.43
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/$(PKG_NAME)
@@ -24,7 +24,9 @@ PKG_FIXUP:=autoreconf
 
 PKG_INSTALL:=1
 
-PKG_CONFIG_DEPENDS := CONFIG_PACKAGE_libpcrecpp
+PKG_CONFIG_DEPENDS:=\
+       CONFIG_PACKAGE_libpcrecpp \
+       CONFIG_PCRE_JIT_ENABLED
 
 include $(INCLUDE_DIR)/uclibc++.mk
 include $(INCLUDE_DIR)/package.mk
@@ -35,6 +37,10 @@ define Package/libpcre/default
   URL:=https://www.pcre.org/
 endef
 
+define Package/libpcre/config
+  source "$(SOURCE)/Config.in"
+endef
+
 define Package/libpcre
   $(call Package/libpcre/default)
   TITLE:=A Perl Compatible Regular Expression library
@@ -57,6 +63,7 @@ CONFIGURE_ARGS += \
        --enable-utf8 \
        --enable-unicode-properties \
        --enable-pcre16 \
+       $(if $(CONFIG_PCRE_JIT_ENABLED),--enable-jit,--disable-jit) \
        --with-match-limit-recursion=16000 \
        $(if $(CONFIG_PACKAGE_libpcrecpp),--enable,--disable)-cpp