[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