summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/image.mk10
-rw-r--r--package/zstd/Makefile38
-rw-r--r--package/zstd/patches/patch-lib_Makefile11
-rw-r--r--package/zstd/patches/patch-programs_Makefile11
-rwxr-xr-xscripts/prereq.sh8
-rw-r--r--target/config/Config.in.tools9
-rw-r--r--target/linux/config/Config.in.compression18
7 files changed, 105 insertions, 0 deletions
diff --git a/mk/image.mk b/mk/image.mk
index 9989994b9..601b0352b 100644
--- a/mk/image.mk
+++ b/mk/image.mk
@@ -255,6 +255,16 @@ ifeq ($(ADK_LINUX_KERNEL_COMP_XZ),y)
echo "CONFIG_XZ_DEC_TEST=n" >> ${LINUX_DIR}/.config
echo "CONFIG_XZ_DEC_MICROLZMA=n" >> ${LINUX_DIR}/.config
endif
+ifeq ($(ADK_LINUX_KERNEL_COMP_ZSTD),y)
+ echo "CONFIG_RD_XZ=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_BZIP2=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_GZIP=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_LZO=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_LZ4=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_LZMA=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_ZSTD=y" >> ${LINUX_DIR}/.config
+ echo "CONFIG_INITRAMFS_COMPRESSION_ZSTD=y" >> ${LINUX_DIR}/.config
+endif
ifeq ($(ADK_LINUX_KERNEL_COMP_LZ4),y)
echo "CONFIG_RD_XZ=n" >> ${LINUX_DIR}/.config
echo "CONFIG_RD_BZIP2=n" >> ${LINUX_DIR}/.config
diff --git a/package/zstd/Makefile b/package/zstd/Makefile
new file mode 100644
index 000000000..79ac805b5
--- /dev/null
+++ b/package/zstd/Makefile
@@ -0,0 +1,38 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= zstd
+PKG_VERSION:= 1.5.5
+PKG_RELEASE:= 1
+PKG_HASH:= 98e9c3d949d1b924e28e01eccb7deed865eefebf25c2f21c702e5cd5b63b85e1
+PKG_DESCR:= zstandard compression application
+PKG_SECTION:= app/archive
+PKG_SITES:= https://github.com/facebook/zstd/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include ${ADK_TOPDIR}/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,ZSTD,zstd,${PKG_VERSION}-${PKG_RELEASE}))
+$(eval $(call PKG_template,ZSTD,zstd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+HOST_CONFIG_STYLE:= manual
+HOST_INSTALL_STYLE:= auto
+CONFIG_STYLE:= manual
+ALL_TARGET:= default
+HOST_ALL_TARGET:= default
+
+zstd-install:
+ $(INSTALL_DIR) $(IDIR_ZSTD)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libzstd*.so* \
+ $(IDIR_ZSTD)/usr/lib
+ $(INSTALL_DIR) $(IDIR_ZSTD)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/zstd \
+ $(IDIR_ZSTD)/usr/bin
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/zstd/patches/patch-lib_Makefile b/package/zstd/patches/patch-lib_Makefile
new file mode 100644
index 000000000..22128cbda
--- /dev/null
+++ b/package/zstd/patches/patch-lib_Makefile
@@ -0,0 +1,11 @@
+--- zstd-1.5.5.orig/lib/Makefile 2023-04-04 22:13:52.000000000 +0200
++++ zstd-1.5.5/lib/Makefile 2024-01-17 18:12:48.257111944 +0100
+@@ -259,7 +259,7 @@ DESTDIR ?=
+ # directory variables : GNU conventions prefer lowercase
+ # see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
+ # support both lower and uppercase (BSD), use uppercase in script
+-prefix ?= /usr/local
++prefix ?= /usr
+ PREFIX ?= $(prefix)
+ exec_prefix ?= $(PREFIX)
+ EXEC_PREFIX ?= $(exec_prefix)
diff --git a/package/zstd/patches/patch-programs_Makefile b/package/zstd/patches/patch-programs_Makefile
new file mode 100644
index 000000000..b8f880ca0
--- /dev/null
+++ b/package/zstd/patches/patch-programs_Makefile
@@ -0,0 +1,11 @@
+--- zstd-1.5.5.orig/programs/Makefile 2023-04-04 22:13:52.000000000 +0200
++++ zstd-1.5.5/programs/Makefile 2024-01-17 18:13:11.620566871 +0100
+@@ -380,7 +380,7 @@ DESTDIR ?=
+ # directory variables : GNU conventions prefer lowercase
+ # see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
+ # support both lower and uppercase (BSD), use uppercase in script
+-prefix ?= /usr/local
++prefix ?= /usr
+ PREFIX ?= $(prefix)
+ exec_prefix ?= $(PREFIX)
+ bindir ?= $(exec_prefix)/bin
diff --git a/scripts/prereq.sh b/scripts/prereq.sh
index b1f28d45e..d3f4eaa4e 100755
--- a/scripts/prereq.sh
+++ b/scripts/prereq.sh
@@ -651,6 +651,11 @@ if ! which lzma >/dev/null 2>&1; then
host_build_lzma=1
fi
+host_build_zstd=0
+if ! which zstd >/dev/null 2>&1; then
+ host_build_zstd=1
+fi
+
host_build_lz4=0
if ! which lz4c >/dev/null 2>&1; then
host_build_lz4=1
@@ -741,6 +746,9 @@ fi
if [ $host_build_lzma -eq 1 ]; then
printf "\t%s\n" "select ADK_HOST_BUILD_LZMA if ADK_HOST_NEED_LZMA" >> $topdir/target/config/Config.in.prereq
fi
+if [ $host_build_zstd -eq 1 ]; then
+ printf "\t%s\n" "select ADK_HOST_BUILD_ZSTD if ADK_HOST_NEED_ZSTD" >> $topdir/target/config/Config.in.prereq
+fi
if [ $host_build_lz4 -eq 1 ]; then
printf "\t%s\n" "select ADK_HOST_BUILD_LZ4 if ADK_HOST_NEED_LZ4" >> $topdir/target/config/Config.in.prereq
fi
diff --git a/target/config/Config.in.tools b/target/config/Config.in.tools
index 0f20f3afe..9433bfa89 100644
--- a/target/config/Config.in.tools
+++ b/target/config/Config.in.tools
@@ -191,6 +191,14 @@ config ADK_HOST_BUILD_GENEXT2FS
bool
default n
+config ADK_HOST_NEED_ZSTD
+ bool
+ default n
+
+config ADK_HOST_BUILD_ZSTD
+ bool
+ default n
+
config ADK_HOST_NEED_LZ4
bool
default n
@@ -315,6 +323,7 @@ config ADK_COMPRESSION_TOOL
default "gzip -n9" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_GZIP
default "bzip2" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_BZIP2
default "xz -v --check=crc32 --lzma2=dict=1MiB" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_XZ
+ default "zstd" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_ZSTD
default "lz4c -l" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_LZ4
default "lzma -9" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_LZMA
default "lzop" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_LZO
diff --git a/target/linux/config/Config.in.compression b/target/linux/config/Config.in.compression
index 2eeaab240..92eb58616 100644
--- a/target/linux/config/Config.in.compression
+++ b/target/linux/config/Config.in.compression
@@ -8,6 +8,10 @@ config ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_XZ
bool
select ADK_HOST_NEED_XZ
+config ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_ZSTD
+ bool
+ select ADK_HOST_NEED_ZSTD
+
config ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_LZ4
bool
select ADK_HOST_NEED_LZ4
@@ -57,6 +61,12 @@ config ADK_LINUX_KERNEL_RD_LZO
config ADK_LINUX_KERNEL_KERNEL_LZO
bool
+config ADK_LINUX_KERNEL_RD_ZSTD
+ bool
+
+config ADK_LINUX_KERNEL_KERNEL_ZSTD
+ bool
+
config ADK_LINUX_KERNEL_RD_XZ
bool
@@ -84,6 +94,14 @@ config ADK_LINUX_KERNEL_COMP_XZ
depends on ADK_TARGET_KERNEL_WITH_COMPRESSION \
|| ADK_TARGET_GENERIC
+config ADK_LINUX_KERNEL_COMP_ZSTD
+ bool "use Zstandard compression"
+ select ADK_LINUX_KERNEL_RD_ZSTD
+ select ADK_LINUX_KERNEL_KERNEL_ZSTD
+ select ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_ZSTD
+ depends on ADK_TARGET_KERNEL_WITH_COMPRESSION \
+ || ADK_TARGET_GENERIC
+
config ADK_LINUX_KERNEL_COMP_LZ4
bool "use LZ4 compression"
select ADK_LINUX_KERNEL_RD_LZ4