Add zstd to the companion libs

Add zstd to the companion libs witch allows to use lto zstd compression
in a canadian or cross-native enviroment

Signed-off-by: QBos07 <62326551+QBos07@users.noreply.github.com>
Signed-off-by: Quentin Boswank <62326551+QBos07@users.noreply.github.com>
This commit is contained in:
Quentin Boswank 2023-02-04 15:23:40 +00:00 committed by Chris Packham
parent 0ce5b27385
commit 4cba299460
8 changed files with 124 additions and 2 deletions

View File

@ -180,9 +180,10 @@ config CC_GCC_USE_LTO
config CC_GCC_LTO_ZSTD config CC_GCC_LTO_ZSTD
tristate tristate
prompt "Support LTO compression with zstd" prompt "Support LTO compression with zstd"
default m if !CANADIAN && !STATIC_TOOLCHAIN default m
depends on CC_GCC_USE_LTO depends on CC_GCC_USE_LTO
depends on GCC_10_or_later depends on GCC_10_or_later
select ZSTD_NEEDED
help help
Support zstd compression for LTO object files. This will require Support zstd compression for LTO object files. This will require
libzstd to be installed when using the toolchain libzstd to be installed when using the toolchain

View File

@ -105,6 +105,11 @@ config ZLIB_NEEDED
bool "Build local zlib" bool "Build local zlib"
select COMP_LIBS_ZLIB select COMP_LIBS_ZLIB
config ZSTD_NEEDED
bool "Build local zstd"
default y if CANADIAN || CROSS_NATIVE
select COMP_LIBS_ZSTD
# FIXME remove these legacy knobs # FIXME remove these legacy knobs
config LIBICONV config LIBICONV
def_bool y def_bool y
@ -150,4 +155,8 @@ config ZLIB
def_bool y def_bool y
depends on ZLIB_NEEDED depends on ZLIB_NEEDED
config ZSTD
def_bool y
depends on ZSTD_NEEDED
endmenu endmenu

1
config/comp_libs/zstd.in Normal file
View File

@ -0,0 +1 @@
# Zstd options

4
packages/zstd/1.5.2/chksum vendored Normal file
View File

@ -0,0 +1,4 @@
md5 zlib-1.5.2.tar.gz 072b10f71f5820c24761a65f31f43e73
sha1 zlib-1.5.2.tar.gz c56c8e6d703d14029464b2a1a66164dc5cf80855
sha256 zlib-1.5.2.tar.gz 7c42d56fac126929a6a85dbc73ff1db2411d04f104fae9bdea51305663a83fd0
sha512 zlib-1.5.2.tar.gz 96dbd2eb6623e3564a0fd36489b61bc3cb27758a584fdc9f064f3985d2e8b5605d7022890d00a6d15464d3cd0707d7e75d8cf6210323782d0af406b90a6d6784

1
packages/zstd/1.5.2/version.desc vendored Normal file
View File

@ -0,0 +1 @@

View File

@ -0,0 +1,4 @@
repository='git https://github.com/facebook/zstd.git'
mirrors='https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/'
archive_formats='.tar.gz'
signature_format='packed/.sig'

View File

@ -1087,7 +1087,7 @@ do_gcc_backend() {
extra_config+=("--disable-lto") extra_config+=("--disable-lto")
fi fi
case "${CT_CC_GCC_LTO_ZSTD}" in case "${CT_CC_GCC_LTO_ZSTD}" in
y) extra_config+=("--with-zstd");; y) extra_config+=("--with-zstd=${complibs}");;
m) ;; m) ;;
*) extra_config+=("--without-zstd");; *) extra_config+=("--without-zstd");;
esac esac

View File

@ -0,0 +1,102 @@
# This file adds the functions to build the zstd library
# Copyright 2023 Q. BOSWANK
# Licensed under the GPL v2. See COPYING in the root of this package
do_zstd_get() { :; }
do_zstd_extract() { :; }
do_zstd_for_build() { :; }
do_zstd_for_host() { :; }
do_zstd_for_target() { :; }
# Overide functions depending on configuration
if [ "${CT_ZSTD}" = "y" ]; then
# Download zstd
do_zstd_get() {
CT_Fetch ZSTD
}
# Extract zstd
do_zstd_extract() {
CT_ExtractPatch ZSTD
}
# Build zstd for running on build
# - always build statically
# - install in build-tools prefix
do_zstd_for_build() {
local -a zstd_opts
case "${CT_TOOLCHAIN_TYPE}" in
native|cross) return 0;;
esac
CT_DoStep INFO "Installing zstd for build"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-zstd-build-${CT_BUILD}"
zstd_opts+=( "host=${CT_BUILD}" )
zstd_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" )
zstd_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" )
zstd_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" )
do_zstd_backend "${zstd_opts[@]}"
CT_Popd
CT_EndStep
}
# Build ZSTD zstd running on host
do_zstd_for_host() {
local -a zstd_opts
CT_DoStep INFO "Installing zstd for host"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-zstd-host-${CT_HOST}"
zstd_opts+=( "host=${CT_HOST}" )
zstd_opts+=( "prefix=${CT_HOST_COMPLIBS_DIR}" )
zstd_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" )
zstd_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" )
do_zstd_backend "${zstd_opts[@]}"
CT_Popd
CT_EndStep
}
# Build zstd
# Parameter : description : type : default
# host : machine to run on : tuple : (none)
# prefix : prefix to install into : dir : (none)
# cflags : cflags to use : string : (empty)
# ldflags : ldflags to use : string : (empty)
do_zstd_backend() {
local host
local prefix
local cflags
local ldflags
local arg
local -a extra_config
for arg in "$@"; do
eval "${arg// /\\ }"
done
CT_DoLog EXTRA "Building zstd"
CT_DoExecLog ALL make ${CT_JOBSFLAGS} -C "${CT_SRC_DIR}/zstd/lib" libzstd.a BUILD_DIR="${PWD}" CC="${host}-gcc" AS="${host}-as" CFLAGS="${cflags}" LDFLAGS="${ldflags}"
# TODO: Has to be tested
#if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
# if [ "${host}" = "${CT_BUILD}" ]; then
# CT_DoLog EXTRA "Checking zstd"
# CT_DoExecLog ALL make ${CT_JOBSFLAGS} -s check
# else
# # Cannot run host binaries on build in a canadian cross
# CT_DoLog EXTRA "Skipping check for zstd on the host"
# fi
#fi
CT_DoLog EXTRA "Installing zstd"
CT_DoExecLog ALL make -C "${CT_SRC_DIR}/zstd/lib" install-static install-includes BUILD_DIR="${PWD}" PREFIX="$prefix"
}
fi # CT_ZSTD