[PATCH 2/2] kbuild: allow overriding compression tools

Ahmad Fatoum a.fatoum at pengutronix.de
Thu Jan 16 06:09:24 PST 2025


barebox proper is usually compressed and this introduces a dependency on
an outside host tool depending on the chosen compression algo.

So far, we expected the utility to be in PATH, but to allow build
systems to place it elsewhere, let's copy what Linux does and adopt a number
of Make variable that can be overridden from the outside.

Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 Makefile             |  6 ++++++
 scripts/Makefile.lib | 12 ++++++------
 scripts/xz_wrap.sh   |  5 +++--
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 3487aba201b9..81cab701230e 100644
--- a/Makefile
+++ b/Makefile
@@ -440,6 +440,12 @@ PYTHON3		= python3
 CHECK		= sparse
 MKIMAGE		= mkimage
 BASH		= bash
+KGZIP		= gzip
+KBZIP2		= bzip2
+KLZOP		= lzop
+LZMA		= lzma
+LZ4		= lz4
+XZ		= xz
 
 CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise $(CF)
 CFLAGS_KERNEL	=
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index f195ddb7e885..d4f202bd48bd 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -342,7 +342,7 @@ suffix_$(CONFIG_IMAGE_COMPRESSION_NONE) = comp_copy
 # ---------------------------------------------------------------------------
 
 quiet_cmd_gzip = GZIP    $@
-cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@) || \
+cmd_gzip = (cat $(filter-out FORCE,$^) | $(KGZIP) -n -f -9 > $@) || \
 	(rm -f $@ ; false)
 
 %.gz: %
@@ -373,7 +373,7 @@ cmd_xzkern = (cat $(filter-out FORCE,$^) | \
 
 quiet_cmd_xzmisc = XZMISC  $@
 cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
-	xz --check=crc32 --lzma2=dict=1MiB) > $@ || \
+	$(XZ) --check=crc32 --lzma2=dict=1MiB) > $@ || \
 	(rm -f $@ ; false)
 
 %.xzkern: %
@@ -482,7 +482,7 @@ printf "%08x\n" $$dec_size |						\
 
 quiet_cmd_bzip2 = BZIP2   $@
 cmd_bzip2 = (cat $(filter-out FORCE,$^) | \
-	bzip2 -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
+	$(KBZIP2) -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
 	(rm -f $@ ; false)
 
 %.bz2: %
@@ -493,7 +493,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^) | \
 
 quiet_cmd_lzma = LZMA    $@
 cmd_lzma = (cat $(filter-out FORCE,$^) | \
-	lzma -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
+	$(LZMA) -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
 	(rm -f $@ ; false)
 
 %.lzma: %
@@ -501,7 +501,7 @@ cmd_lzma = (cat $(filter-out FORCE,$^) | \
 
 quiet_cmd_lzo = LZO     $@
 cmd_lzo = (cat $(filter-out FORCE,$^) | \
-	lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
+	$(KLZOP) -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
 	(rm -f $@ ; false)
 
 %.lzo: %
@@ -512,7 +512,7 @@ cmd_lzo = (cat $(filter-out FORCE,$^) | \
 
 quiet_cmd_lz4 = LZ4     $@
 cmd_lz4 = (cat $(filter-out FORCE,$^) | \
-	lz4 -l --best stdin stdout && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
+	$(LZ4) -l --best stdin stdout && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
 	(rm -f $@ ; false)
 
 %.lz4: %
diff --git a/scripts/xz_wrap.sh b/scripts/xz_wrap.sh
index 02823bc1df18..a106b1a9e6d2 100755
--- a/scripts/xz_wrap.sh
+++ b/scripts/xz_wrap.sh
@@ -11,6 +11,7 @@
 
 BCJ=
 LZMA2OPTS=
+XZ=${XZ:-xz}
 
 case $SRCARCH in
 	x86)            BCJ=--x86 ;;
@@ -26,7 +27,7 @@ fi
 
 # clear BCJ filter if unsupported
 if [ -n "${BCJ}" ]; then
-	xz -H | grep -q -- $BCJ || BCJ=
+	$XZ -H | grep -q -- $BCJ || BCJ=
 fi
 
-exec xz --check=crc32 $BCJ --lzma2=$LZMA2OPTS,dict=32MiB
+exec $XZ --check=crc32 $BCJ --lzma2=$LZMA2OPTS,dict=32MiB
-- 
2.39.5




More information about the barebox mailing list