tools/lz4: add `lz4` binaries
authorTony Butler <spudz76@gmail.com>
Tue, 29 Nov 2022 00:01:26 +0000 (16:01 -0800)
committerDaniel Golle <daniel@makrotopia.org>
Mon, 16 Jan 2023 23:51:10 +0000 (23:51 +0000)
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 <spudz76@gmail.com>
tools/Makefile
tools/lz4/Makefile [new file with mode: 0644]
tools/lz4/patches/001-add-make-ENABLE_DOCS-configurable.patch [new file with mode: 0644]
tools/lz4/patches/002-makefile-install-links-from-same-dir.patch [new file with mode: 0644]

index c7c7d007563045fb9e08ba1343310528b641b43c..46283e8d81451e23a5aedadb8bc2f8d60e2380e1 100644 (file)
@@ -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
diff --git a/tools/lz4/Makefile b/tools/lz4/Makefile
new file mode 100644 (file)
index 0000000..c5d4f6f
--- /dev/null
@@ -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))
diff --git a/tools/lz4/patches/001-add-make-ENABLE_DOCS-configurable.patch b/tools/lz4/patches/001-add-make-ENABLE_DOCS-configurable.patch
new file mode 100644 (file)
index 0000000..5d6dca3
--- /dev/null
@@ -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
diff --git a/tools/lz4/patches/002-makefile-install-links-from-same-dir.patch b/tools/lz4/patches/002-makefile-install-links-from-same-dir.patch
new file mode 100644 (file)
index 0000000..159dc67
--- /dev/null
@@ -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