Integrate build system support for the Zstandard (zstd) library and implement the corresponding C++ decompression stream classes, enabling future use of zstd-compressed streams in ZIP packages. Build System (Part 2a): - Add `--with-system-zstd=[yes|no|auto]` configure option. - Implement system library checks (`zstd.h`, `libzstd`) in configure.ac. - Define rules (`external/zstd/*`) for downloading and building the internal zstd static library (decompression components only). - Set up necessary CFLAGS/LIBS via configure.ac and config_host.mk.in. - Configure linking via RepositoryExternal.mk (`gb_LinkTarget__use_zstd`). - Update auxiliary files (download.lst, distro-configs, etc.). C++ Implementation (Part 2b): - Implement `InflateZstd` (in `include/package`) and `InflaterBytesZstd` (in `package/inc`) inheriting from `Inflater`/`InflaterBytes`. - Use the zstd streaming API (`ZSTD_decompressStream`) following the existing single-call pattern established by the zlib implementation. - Manage context (`ZSTD_DCtx`) and input buffer (`ZSTD_inBuffer`) state. - Handle errors, stream completion (`ret == 0`), and input truncation. - Add new classes to `package/Library_package2.mk` build. This completes the infrastructure for zstd decompression support. The next step (Part 2c) involves adding logic to select the appropriate Inflater based on the ZIP entry's compression method ID. Change-Id: Ia673f3f19b6a751ba5225394fcf8c3f145c4ae63 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184243 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
109 lines
4.6 KiB
Makefile
109 lines
4.6 KiB
Makefile
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
|
#
|
|
# This file is part of the LibreOffice project.
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
#
|
|
|
|
$(eval $(call gb_Module_Module,external))
|
|
|
|
$(eval $(call gb_Module_add_moduledirs,external,\
|
|
$(call gb_Helper_optional,XMLSEC,xmlsec) \
|
|
$(call gb_Helper_optional,ABW,libabw) \
|
|
$(call gb_Helper_optional,ARGON2,argon2) \
|
|
$(call gb_Helper_optional,BOOST,boost) \
|
|
$(call gb_Helper_optional,BOX2D,box2d) \
|
|
$(call gb_Helper_optional,BREAKPAD,breakpad) \
|
|
$(call gb_Helper_optional,BSH,beanshell) \
|
|
$(call gb_Helper_optional,BZIP2,bzip2) \
|
|
$(call gb_Helper_optional,CAIRO,cairo) \
|
|
$(call gb_Helper_optional,CDR,libcdr) \
|
|
$(call gb_Helper_optional,OPENCL,clew) \
|
|
$(call gb_Helper_optional,CLUCENE,clucene) \
|
|
$(call gb_Helper_optional,LIBCMIS,libcmis) \
|
|
$(call gb_Helper_optional,COINMP,coinmp) \
|
|
$(call gb_Helper_optional,CPPUNIT,cppunit) \
|
|
$(call gb_Helper_optional,CURL,curl) \
|
|
$(call gb_Helper_optional,DRAGONBOX,dragonbox) \
|
|
dtoa \
|
|
$(call gb_Helper_optional,EBOOK,libebook) \
|
|
$(call gb_Helper_optional,EPM,epm) \
|
|
$(call gb_Helper_optional,EPOXY,epoxy) \
|
|
$(call gb_Helper_optional,EPUBGEN,libepubgen) \
|
|
$(call gb_Helper_optional,ETONYEK,libetonyek) \
|
|
$(call gb_Helper_optional,EXPAT,expat) \
|
|
$(call gb_Helper_optional,FIREBIRD,firebird) \
|
|
$(call gb_Helper_optional,FONTCONFIG,fontconfig) \
|
|
$(call gb_Helper_optional,FREEHAND,libfreehand) \
|
|
$(call gb_Helper_optional,FREETYPE,freetype) \
|
|
$(call gb_Helper_optional,FROZEN,frozen) \
|
|
$(call gb_Helper_optional,GLM,glm) \
|
|
$(call gb_Helper_optional,GPGMEPP,gpgmepp) \
|
|
$(call gb_Helper_optional,GRAPHITE,graphite) \
|
|
$(call gb_Helper_optional,HARFBUZZ,harfbuzz) \
|
|
$(call gb_Helper_optional,HSQLDB,hsqldb) \
|
|
$(call gb_Helper_optional,HUNSPELL,hunspell) \
|
|
$(call gb_Helper_optional,HYPHEN,hyphen) \
|
|
$(if $(filter WNT,$(OS)),IAccessible2) \
|
|
$(call gb_Helper_optional,ICU,icu) \
|
|
$(call gb_Helper_optional,JAVA_WEBSOCKET,java_websocket) \
|
|
$(call gb_Helper_optional,JFREEREPORT,jfreereport) \
|
|
$(call gb_Helper_optional,LIBJPEG_TURBO,libjpeg-turbo) \
|
|
$(call gb_Helper_optional,LCMS2,lcms2) \
|
|
$(call gb_Helper_optional,LIBASSUAN,libassuan) \
|
|
$(call gb_Helper_optional,LIBATOMIC_OPS,libatomic_ops) \
|
|
$(call gb_Helper_optional,LIBEOT,libeot) \
|
|
$(call gb_Helper_optional,LIBEXTTEXTCAT,libexttextcat) \
|
|
$(call gb_Helper_optional,LIBFFI,libffi) \
|
|
$(call gb_Helper_optional,LIBGPGERROR,libgpg-error) \
|
|
$(call gb_Helper_optional,LIBLANGTAG,liblangtag) \
|
|
$(call gb_Helper_optional,LIBNUMBERTEXT,libnumbertext) \
|
|
$(call gb_Helper_optional,LIBPNG,libpng) \
|
|
$(call gb_Helper_optional,LIBTIFF,libtiff) \
|
|
$(call gb_Helper_optional,LIBWEBP,libwebp) \
|
|
$(call gb_Helper_optional,LIBXML2,libxml2) \
|
|
$(call gb_Helper_optional,LIBXSLT,libxslt) \
|
|
$(call gb_Helper_optional,LPSOLVE,lpsolve) \
|
|
$(call gb_Helper_optional,LIBTOMMATH,libtommath) \
|
|
$(call gb_Helper_optional,LXML,lxml) \
|
|
$(call gb_Helper_optional,MARIADB_CONNECTOR_C,mariadb-connector-c) \
|
|
$(call gb_Helper_optional,MDDS,mdds) \
|
|
$(call gb_Helper_optional,MDNSRESPONDER,mdnsresponder) \
|
|
$(call gb_Helper_optional,MORE_FONTS,more_fonts) \
|
|
$(call gb_Helper_optional,MSPUB,libmspub) \
|
|
$(call gb_Helper_optional,MWAW,libmwaw) \
|
|
$(call gb_Helper_optional,MYTHES,mythes) \
|
|
$(call gb_Helper_optional,NSS,nss) \
|
|
$(call gb_Helper_optional,ODFGEN,libodfgen) \
|
|
$(call gb_Helper_optional,OPENLDAP,openldap) \
|
|
$(call gb_Helper_optional,OPENSSL,openssl) \
|
|
$(call gb_Helper_optional,ORCUS,liborcus) \
|
|
$(call gb_Helper_optional,PAGEMAKER,libpagemaker) \
|
|
$(if $(ENABLE_ONLINE_UPDATE_MAR),onlineupdate) \
|
|
$(call gb_Helper_optional,PDFIUM,pdfium) \
|
|
$(call gb_Helper_optional,POPPLER,poppler) \
|
|
$(call gb_Helper_optional,POSTGRESQL,postgresql) \
|
|
$(call gb_Helper_optional,PYTHON,python3) \
|
|
$(call gb_Helper_optional,QXP,libqxp) \
|
|
$(call gb_Helper_optional,ZXCVBN,zxcvbn-c) \
|
|
$(call gb_Helper_optional,ZXING,zxing) \
|
|
$(call gb_Helper_optional,REDLAND,redland) \
|
|
$(call gb_Helper_optional,REVENGE,librevenge) \
|
|
$(call gb_Helper_optional,RHINO,rhino) \
|
|
$(call gb_Helper_optional,SKIA,skia) \
|
|
$(call gb_Helper_optional,STAROFFICE,libstaroffice) \
|
|
$(if $(filter WNT,$(OS)),twain_dsm) \
|
|
$(call gb_Helper_optional,VISIO,libvisio) \
|
|
$(call gb_Helper_optional,WPD,libwpd) \
|
|
$(call gb_Helper_optional,WPG,libwpg) \
|
|
$(call gb_Helper_optional,WPS,libwps) \
|
|
$(call gb_Helper_optional,XSLTML,xsltml) \
|
|
$(call gb_Helper_optional,ZLIB,zlib) \
|
|
$(call gb_Helper_optional,ZSTD,zstd) \
|
|
$(call gb_Helper_optional,ZMF,libzmf) \
|
|
))
|
|
|
|
# vim: set noet sw=4 ts=4:
|