Pārlūkot izejas kodu

tools/lz4: add `lz4` binaries

same as `packages/liblz4` modified to be a HOST/tools type build with
unified liblz4 (this is also the dev package for liblz4)

the image initramfs generator offers the LZ4 option but there was no
executable to support it actually working

Signed-off-by: Tony Butler <[email protected]>
Tony Butler 2 gadi atpakaļ
vecāks
revīzija
8b12966d20

+ 4 - 0
tools/Makefile

@@ -20,6 +20,9 @@ endif
 ifneq ($(CONFIG_SDK)$(CONFIG_PACKAGE_kmod-b43)$(CONFIG_BRCMSMAC_USE_FW_FROM_WL),)
   BUILD_B43_TOOLS = y
 endif
+ifneq ($(CONFIG_SDK)$(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4),)
+  BUILD_LZ4_TOOLS = y
+endif
 
 tools-y += autoconf
 tools-y += autoconf-archive
@@ -61,6 +64,7 @@ tools-y += zlib
 tools-y += zstd
 tools-$(if $(CONFIG_BUILD_ALL_HOST_TOOLS)$(BUILD_B43_TOOLS),y) += b43-tools
 tools-$(if $(CONFIG_BUILD_ALL_HOST_TOOLS)$(BUILD_ISL),y) += isl
+tools-$(if $(CONFIG_BUILD_ALL_HOST_TOOLS)$(BUILD_LZ4_TOOLS),y) += lz4
 tools-$(if $(CONFIG_BUILD_ALL_HOST_TOOLS)$(BUILD_TOOLCHAIN),y) += gmp mpc mpfr
 tools-$(if $(CONFIG_BUILD_ALL_HOST_TOOLS)$(CONFIG_TARGET_apm821xx)$(CONFIG_TARGET_gemini),y) += genext2fs
 tools-$(if $(CONFIG_BUILD_ALL_HOST_TOOLS)$(CONFIG_TARGET_ath79),y) += lzma-old squashfs

+ 49 - 0
tools/lz4/Makefile

@@ -0,0 +1,49 @@
+#
+# Copyright (C) 2022 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=lz4
+PKG_VERSION:=1.9.4
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/lz4/lz4/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=0b0e3aa07c8c063ddf40b082bdf7e37a1562bda40a0ff5272957f3e987e0e54b
+
+PKG_LICENSE:=BSD-2-Clause
+PKG_LICENSE_FILES:=LICENSE lib/LICENSE
+
+HOST_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/host-build.mk
+
+# Always optimize for speed
+HOST_CFLAGS := $(filter-out -O%,$(HOST_CFLAGS)) -O3
+
+HOST_MAKE_FLAGS+=PREFIX=$(HOST_BUILD_PREFIX) \
+		 ENABLE_DOCS=1
+
+define Host/Configure
+endef
+
+define Host/Compile
+	$(call Host/Compile/Default,default)
+endef
+
+define Host/Install
+	$(call Host/Compile/Default,install)
+endef
+
+define Host/Uninstall
+	$(call Host/Compile/Default,uninstall)
+	$(call Host/Compile/Default,clean)
+endef
+
+define Host/Clean
+endef
+
+$(eval $(call HostBuild))

+ 60 - 0
tools/lz4/patches/001-add-make-ENABLE_DOCS-configurable.patch

@@ -0,0 +1,60 @@
++++ a/programs/Makefile	2022-08-15 15:45:31.000000000 -0700
+--- b/programs/Makefile	2022-11-28 16:34:21.315593784 -0800
+@@ -66,6 +66,7 @@
+ MD2ROFF   = ronn
+ MD2ROFF_FLAGS = --roff --warnings --manual="User Commands" --organization="lz4 $(LZ4_VERSION)"
+ 
++ENABLE_DOCS ?= 1
+ 
+ default: lz4-release
+ 
+@@ -120,6 +121,7 @@
+ lz4c32 : $(SRCFILES)
+ 	$(CC) $(FLAGS) $^ -o $@$(EXT)
+ 
++ifeq ($(ENABLE_DOCS),1)
+ lz4.1: lz4.1.md $(LIBVER_SRC)
+ 	cat $< | $(MD2ROFF) $(MD2ROFF_FLAGS) | $(SED) -n '/^\.\\\".*/!p' > $@
+ 
+@@ -130,6 +132,7 @@
+ 
+ preview-man: clean-man man
+ 	man ./lz4.1
++endif
+ 
+ clean:
+ ifeq ($(WINBASED),yes)
+@@ -172,16 +175,19 @@
+ 
+ install: lz4
+ 	@echo Installing binaries in $(DESTDIR)$(bindir)
+-	$(INSTALL_DIR) $(DESTDIR)$(bindir)/ $(DESTDIR)$(man1dir)/
++	$(INSTALL_DIR) $(DESTDIR)$(bindir)/
+ 	$(INSTALL_PROGRAM) lz4$(EXT) $(DESTDIR)$(bindir)/lz4$(EXT)
+ 	$(LN_SF) lz4$(EXT) $(DESTDIR)$(bindir)/lz4c$(EXT)
+ 	$(LN_SF) lz4$(EXT) $(DESTDIR)$(bindir)/lz4cat$(EXT)
+ 	$(LN_SF) lz4$(EXT) $(DESTDIR)$(bindir)/unlz4$(EXT)
++ifeq ($(ENABLE_DOCS),1)
+ 	@echo Installing man pages in $(DESTDIR)$(man1dir)
++	$(INSTALL_DIR) $(DESTDIR)$(man1dir)/
+ 	$(INSTALL_DATA) lz4.1 $(DESTDIR)$(man1dir)/lz4.1
+ 	$(LN_SF) lz4.1 $(DESTDIR)$(man1dir)/lz4c.1
+ 	$(LN_SF) lz4.1 $(DESTDIR)$(man1dir)/lz4cat.1
+ 	$(LN_SF) lz4.1 $(DESTDIR)$(man1dir)/unlz4.1
++endif
+ 	@echo lz4 installation completed
+ 
+ uninstall:
+@@ -189,10 +195,12 @@
+ 	$(RM) $(DESTDIR)$(bindir)/unlz4$(EXT)
+ 	$(RM) $(DESTDIR)$(bindir)/lz4$(EXT)
+ 	$(RM) $(DESTDIR)$(bindir)/lz4c$(EXT)
++ifeq ($(ENABLE_DOCS),1)
+ 	$(RM) $(DESTDIR)$(man1dir)/lz4.1
+ 	$(RM) $(DESTDIR)$(man1dir)/lz4c.1
+ 	$(RM) $(DESTDIR)$(man1dir)/lz4cat.1
+ 	$(RM) $(DESTDIR)$(man1dir)/unlz4.1
++endif
+ 	@echo lz4 programs successfully uninstalled
+ 
+ endif

+ 71 - 0
tools/lz4/patches/002-makefile-install-links-from-same-dir.patch

@@ -0,0 +1,71 @@
+diff -ur a/lib/Makefile b/lib/Makefile
+--- a/lib/Makefile	2022-12-04 23:49:06.336839263 -0800
++++ b/lib/Makefile	2022-12-05 00:00:59.172307488 -0800
+@@ -195,8 +195,8 @@
+ 	$(INSTALL_PROGRAM) dll/$(LIBLZ4_EXP) $(DESTDIR)$(libdir)
+     else
+ 	$(INSTALL_PROGRAM) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)
+-	$(LN_SF) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR)
+-	$(LN_SF) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT)
++	(cd $(DESTDIR)$(libdir) && $(LN_SF) liblz4.$(SHARED_EXT_VER) liblz4.$(SHARED_EXT_MAJOR))
++	(cd $(DESTDIR)$(libdir) && $(LN_SF) liblz4.$(SHARED_EXT_MAJOR) liblz4.$(SHARED_EXT))
+     endif
+   endif
+ 	@echo Installing headers in $(DESTDIR)$(includedir)
+diff -ur a/Makefile b/Makefile
+--- a/Makefile	2022-12-04 23:49:06.336839263 -0800
++++ b/Makefile	2022-12-04 23:42:09.693836654 -0800
+@@ -77,12 +77,12 @@
+ 
+ .PHONY: clean
+ clean:
+-	$(MAKE) -C $(LZ4DIR) $@ > $(VOID)
+-	$(MAKE) -C $(PRGDIR) $@ > $(VOID)
+-	$(MAKE) -C $(TESTDIR) $@ > $(VOID)
+-	$(MAKE) -C $(EXDIR) $@ > $(VOID)
+-	$(MAKE) -C $(FUZZDIR) $@ > $(VOID)
+-	$(MAKE) -C contrib/gen_manual $@ > $(VOID)
++	$(MAKE) -C $(LZ4DIR) $@
++	$(MAKE) -C $(PRGDIR) $@
++	$(MAKE) -C $(TESTDIR) $@
++	$(MAKE) -C $(EXDIR) $@
++	$(MAKE) -C $(FUZZDIR) $@
++	$(MAKE) -C contrib/gen_manual $@
+ 	$(RM) lz4$(EXT)
+ 	$(RM) -r $(CMAKE_BUILD_DIR)
+ 	@echo Cleaning completed
+diff -ur a/programs/Makefile b/programs/Makefile
+--- a/programs/Makefile	2022-12-04 23:49:06.336839263 -0800
++++ b/programs/Makefile	2022-12-04 23:42:30.849582910 -0800
+@@ -138,7 +138,7 @@
+ ifeq ($(WINBASED),yes)
+ 	$(RM) *.rc
+ endif
+-	$(MAKE) -C $(LZ4DIR) $@ > $(VOID)
++	$(MAKE) -C $(LZ4DIR) $@
+ 	$(RM) core *.o *.test tmp* \
+            lz4$(EXT) lz4c$(EXT) lz4c32$(EXT) lz4-wlib$(EXT) \
+            unlz4$(EXT) lz4cat$(EXT)
+@@ -177,16 +177,16 @@
+ 	@echo Installing binaries in $(DESTDIR)$(bindir)
+ 	$(INSTALL_DIR) $(DESTDIR)$(bindir)/
+ 	$(INSTALL_PROGRAM) lz4$(EXT) $(DESTDIR)$(bindir)/lz4$(EXT)
+-	$(LN_SF) lz4$(EXT) $(DESTDIR)$(bindir)/lz4c$(EXT)
+-	$(LN_SF) lz4$(EXT) $(DESTDIR)$(bindir)/lz4cat$(EXT)
+-	$(LN_SF) lz4$(EXT) $(DESTDIR)$(bindir)/unlz4$(EXT)
++	(cd $(DESTDIR)$(bindir) && $(LN_SF) lz4$(EXT) lz4c$(EXT))
++	(cd $(DESTDIR)$(bindir) && $(LN_SF) lz4$(EXT) lz4cat$(EXT))
++	(cd $(DESTDIR)$(bindir) && $(LN_SF) lz4$(EXT) unlz4$(EXT))
+ ifeq ($(ENABLE_DOCS),1)
+ 	@echo Installing man pages in $(DESTDIR)$(man1dir)
+ 	$(INSTALL_DIR) $(DESTDIR)$(man1dir)/
+ 	$(INSTALL_DATA) lz4.1 $(DESTDIR)$(man1dir)/lz4.1
+-	$(LN_SF) lz4.1 $(DESTDIR)$(man1dir)/lz4c.1
+-	$(LN_SF) lz4.1 $(DESTDIR)$(man1dir)/lz4cat.1
+-	$(LN_SF) lz4.1 $(DESTDIR)$(man1dir)/unlz4.1
++	(cd $(DESTDIR)$(man1dir) && $(LN_SF) lz4.1 lz4c.1)
++	(cd $(DESTDIR)$(man1dir) && $(LN_SF) lz4.1 lz4cat.1)
++	(cd $(DESTDIR)$(man1dir) && $(LN_SF) lz4.1 unlz4.1)
+ endif
+ 	@echo lz4 installation completed
+