Daniel Golle <[email protected]> writes: > On Thu, May 19, 2022 at 06:37:28PM +0200, Dominick Grift wrote: >> libselinux-3.4 requires pcre2 >> >> Signed-off-by: Dominick Grift <[email protected]> >> --- >> package/libs/pcre2/Config.in | 30 ++++++++++++ >> package/libs/pcre2/Makefile | 92 ++++++++++++++++++++++++++++++++++++ >> 2 files changed, 122 insertions(+) >> create mode 100644 package/libs/pcre2/Config.in >> create mode 100644 package/libs/pcre2/Makefile >> >> diff --git a/package/libs/pcre2/Config.in b/package/libs/pcre2/Config.in >> new file mode 100644 >> index 0000000000..8777a4e84c >> --- /dev/null >> +++ b/package/libs/pcre2/Config.in >> @@ -0,0 +1,30 @@ >> +config PCRE2_JIT_ENABLED >> + bool >> + depends on PACKAGE_libpcre2 && (aarch64 || aarch64_be || arm || >> i386 || i686 || x86_64 || mips || mipsel || mips64 || mips64el || >> powerpc || powerpc64 || powerpcle || sparc) >> + default y if (arm || i686 || x86_64) > > Can you explain the choice of architectures for which you are > suggesting to enable JIT by default? > Wouldn't e.g. aarch64 benefit just as well?
I did not choose anything. This commit is a 1-to-1 copy from pcre2 in the packages feed. > >> + prompt "Enable JIT compiler support" >> + help >> + Enable JIT (Just-In-Time) compiler support. >> + >> + Just-in-time compiling is a heavyweight optimization that can >> greatly >> + speed up pattern matching. However, it comes at the cost of >> extra >> + processing before the match is performed, so it is of most >> benefit when >> + the same pattern is going to be matched many times. This does >> not >> + necessarily mean many calls of a matching function; if the >> pattern is >> + not anchored, matching attempts may take place many times at >> various >> + positions in the subject, even for a single call. Therefore, if >> the >> + subject string is very long, it may still pay to use JIT even >> for >> + one-off matches. JIT support is available for all of the 8-bit, >> 16-bit >> + and 32-bit PCRE2 libraries and adds about 100KB to the resulting >> + libpcre2.so. JIT support applies only to the traditional >> Perl-compatible >> + matching function. It does not apply when the DFA matching >> function is >> + being used. >> + >> + 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/current/doc/html/pcre2jit.html#SEC2 >> diff --git a/package/libs/pcre2/Makefile b/package/libs/pcre2/Makefile >> new file mode 100644 >> index 0000000000..4e75a1cda9 >> --- /dev/null >> +++ b/package/libs/pcre2/Makefile >> @@ -0,0 +1,92 @@ >> +# >> +# Copyright (C) 2017 Shane Peelar >> +# >> +# This is free software, licensed under the GNU General Public License v2. >> +# See /LICENSE for more information. >> +# >> + >> +include $(TOPDIR)/rules.mk >> + >> +PKG_NAME:=pcre2 >> +PKG_VERSION:=10.37 >> +PKG_RELEASE:=$(AUTORELEASE) >> + >> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 >> +PKG_SOURCE_URL:=@SF/pcre/$(PKG_NAME)/$(PKG_VERSION) >> +PKG_HASH:=4d95a96e8b80529893b4562be12648d798b957b1ba1aae39606bbc2ab956d270 >> + >> +PKG_MAINTAINER:=Shane Peelar <[email protected]> >> +PKG_LICENSE:=BSD-3-Clause >> +PKG_LICENSE_FILES:=LICENCE >> +PKG_CPE_ID:=cpe:/a:pcre:pcre >> + >> +PKG_CONFIG_DEPENDS:=\ >> + CONFIG_PACKAGE_libpcre2-16 \ >> + CONFIG_PACKAGE_libpcre2-32 \ >> + CONFIG_PCRE2_JIT_ENABLED >> + >> +include $(INCLUDE_DIR)/package.mk >> +include $(INCLUDE_DIR)/cmake.mk >> + >> +define Package/libpcre2/default >> + SECTION:=libs >> + CATEGORY:=Libraries >> + URL:=https://www.pcre.org/ >> +endef >> + >> +define Package/libpcre2/config >> + source "$(SOURCE)/Config.in" >> +endef >> + >> +define Package/libpcre2 >> + $(call Package/libpcre2/default) >> + TITLE:=A Perl Compatible Regular Expression library >> +endef >> + >> +define Package/libpcre2-16 >> + $(call Package/libpcre2/default) >> + TITLE:=A Perl Compatible Regular Expression library (16bit support) >> +endef >> + >> +define Package/libpcre2-32 >> + $(call Package/libpcre2/default) >> + TITLE:=A Perl Compatible Regular Expression library (32bit support) >> +endef >> + >> +CMAKE_OPTIONS += \ >> + -DBUILD_SHARED_LIBS=ON \ >> + -DPCRE2_BUILD_PCRE2_8=ON \ >> + -DPCRE2_BUILD_PCRE2_16=O$(if $(CONFIG_PACKAGE_libpcre2-16),N,FF) \ >> + -DPCRE2_BUILD_PCRE2_32=O$(if $(CONFIG_PACKAGE_libpcre2-32),N,FF) \ >> + -DPCRE2_DEBUG=OFF \ >> + -DPCRE2_DISABLE_PERCENT_ZT=ON \ >> + -DPCRE2_SUPPORT_JIT=O$(if $(CONFIG_PCRE2_JIT_ENABLED),N,FF) \ >> + -DPCRE2_SHOW_REPORT=OFF \ >> + -DPCRE2_BUILD_PCRE2GREP=OFF \ >> + -DPCRE2_BUILD_TESTS=OFF >> + >> +define Build/InstallDev >> + $(call Build/InstallDev/cmake,$(1)) >> + $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' >> $(1)/usr/bin/pcre2-config >> + $(INSTALL_DIR) $(2)/bin >> + $(LN) ../../usr/bin/pcre2-config $(2)/bin/pcre2-config >> +endef >> + >> +define Package/libpcre2/install >> + $(INSTALL_DIR) $(1)/usr/lib >> + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-{8,posix}.so* $(1)/usr/lib/ >> +endef >> + >> +define Package/libpcre2-16/install >> + $(INSTALL_DIR) $(1)/usr/lib >> + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-16.so* $(1)/usr/lib/ >> +endef >> + >> +define Package/libpcre2-32/install >> + $(INSTALL_DIR) $(1)/usr/lib >> + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-32.so* $(1)/usr/lib/ >> +endef >> + >> +$(eval $(call BuildPackage,libpcre2)) >> +$(eval $(call BuildPackage,libpcre2-16)) >> +$(eval $(call BuildPackage,libpcre2-32)) >> -- >> 2.36.1 >> -- gpg --locate-keys [email protected] Key fingerprint = FCD2 3660 5D6B 9D27 7FC6 E0FF DA7E 521F 10F6 4098 Dominick Grift _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
