# SPDX-License-Identifier: GPL-2.0-or-later
# zstd -- the decompressor behind SCFF, the compressed live root. Dual
# BSD-3-Clause / GPL-2.0; see LICENSE and COPYING in the tarball and
# docs/licensing.md.
#
# Kernel code, like uACPI: nothing is installed into the sysroot. This
# directory fetches and unpacks a pinned release, and the top-level Makefile
# compiles the decoder half of lib/ straight into the kernel against
# kernel/scff/compat, which stands in for the libc headers it includes. The
# host side, tools/mkscff, links the system's libzstd.
#
# Chosen for what SCFF asks of a codec: compress as hard as the build likes,
# once, and decompress at memory speed on every first read of a block.

include ../mk/port.mk

ZSTD_VERSION := 1.5.7
ZSTD_URL     := https://github.com/facebook/zstd/releases/download/v$(ZSTD_VERSION)/zstd-$(ZSTD_VERSION).tar.gz
ZSTD_SHA256  := eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3

TARBALL := $(DISTDIR)/zstd-$(ZSTD_VERSION).tar.gz

$(TARBALL): | $(DISTDIR)
	curl -fsSL -o $@ $(ZSTD_URL)
	sh $(SHA256CHECK) "$(ZSTD_SHA256)" "$@"

download: $(TARBALL)

$(SRCDIR): $(TARBALL)
	mkdir -p $(PORTDIR)
	cd $(PORTDIR) && tar xzf $(abspath $<)
	mv $(PORTDIR)/zstd-$(ZSTD_VERSION) $@

# The kernel build depends on this directory existing, nothing more.
all: | $(SRCDIR)

install:

clean:
	rm -rf $(PORTDIR)

distclean: clean
	rm -f $(TARBALL)
