Makefile.fetch | 1 RepositoryExternal.mk | 40 ++++++++++++ config_host.mk.in | 1 configure.ac | 16 ++++ download.lst | 5 + external/Module_external.mk | 1 external/lzma/Makefile | 14 ++++ external/lzma/Module_lzma.mk | 17 +++++ external/lzma/StaticLibrary_lzma.mk | 110 ++++++++++++++++++++++++++++++++++ external/lzma/UnpackedTarball_lzma.mk | 18 +++++ external/lzma/config.patch | 32 +++++++++ readlicense_oo/license/license.xml | 4 + 12 files changed, 258 insertions(+), 1 deletion(-)
New commits: commit 1cb84d60d991804547cd962eda3a0cd00e958667 Author: Xisco Fauli <[email protected]> AuthorDate: Thu Oct 30 20:11:23 2025 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Tue Nov 11 21:39:24 2025 +0100 external: add lzma Only needed for Linux and Mac. For Windows we build it from python3 using liblzma.vcxproj Add external/lzma/config.patch to remove some defines causing errors Downloaded from https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.gz Change-Id: Ic3317ec54b1da838a10db9e6c3127bf9c33ca146 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193225 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> diff --git a/Makefile.fetch b/Makefile.fetch index 026ecfa11e88..64c15b67b642 100644 --- a/Makefile.fetch +++ b/Makefile.fetch @@ -172,6 +172,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S $(call fetch_Optional,LIBXSLT,LIBXSLT_TARBALL) \ $(call fetch_Optional,LPSOLVE,LPSOLVE_TARBALL) \ $(call fetch_Optional,LXML,LXML_TARBALL) \ + $(call fetch_Optional,LZMA,LZMA_TARBALL) \ $(call fetch_Optional,MARIADB_CONNECTOR_C,MARIADB_CONNECTOR_C_TARBALL) \ $(call fetch_Optional,MD4C,MD4C_TARBALL) \ $(call fetch_Optional,MDDS,MDDS_TARBALL) \ diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 7ced885056f9..cbb47bb0a6e4 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -147,6 +147,46 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo,\ endif ifneq ($(OS),WNT) +ifneq ($(filter LZMA,$(BUILD_TYPE)),) +ifneq ($(SYSTEM_LZMA),) + +define gb_LinkTarget__use_lzma_impl +$(if $(2),,$(error gb_LinkTarget__use_lzma_impl needs additional parameter)) + +$(call gb_LinkTarget_add_defs,$(1),\ + -DSYSTEM_LZMA \ +) + +$(call gb_LinkTarget_add_libs,$(1),-llzma) + +endef + +gb_ExternalProject__use_lzma := + +else # !SYSTEM_LZMA + +define gb_LinkTarget__use_lzma_impl +$(if $(2),,$(error gb_LinkTarget__use_lzma_impl needs additional parameter)) + +$(call gb_LinkTarget_set_include,$(1),\ + -I$(gb_UnpackedTarball_workdir)/lzma \ + $$(INCLUDE) \ +) + +$(call gb_LinkTarget_use_static_libraries,$(1),\ + $(2) \ +) + +endef + +define gb_ExternalProject__use_lzma +$(call gb_ExternalProject_use_static_libraries,$(1),lzma) + +endef + +endif # SYSTEM_LZMA +endif # LZMA + ifneq ($(filter SQLITE3,$(BUILD_TYPE)),) ifneq ($(SYSTEM_SQLITE3),) diff --git a/config_host.mk.in b/config_host.mk.in index 2c105981e8ef..3452ad8fde5d 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -711,6 +711,7 @@ SYSTEM_LIBXML_FOR_BUILD=@SYSTEM_LIBXML_FOR_BUILD@ SYSTEM_LIBXSLT=@SYSTEM_LIBXSLT@ SYSTEM_LIBXSLT_FOR_BUILD=@SYSTEM_LIBXSLT_FOR_BUILD@ SYSTEM_LPSOLVE=@SYSTEM_LPSOLVE@ +SYSTEM_LZMA=@SYSTEM_LZMA@ SYSTEM_MD4C=@SYSTEM_MD4C@ SYSTEM_MDDS=@SYSTEM_MDDS@ SYSTEM_MARIADB_CONNECTOR_C=@SYSTEM_MARIADB_CONNECTOR_C@ diff --git a/configure.ac b/configure.ac index 2e7a46ee29df..40d63c5fb69c 100644 --- a/configure.ac +++ b/configure.ac @@ -2535,6 +2535,11 @@ AC_ARG_WITH(system-libxml, [Use libxml/libxslt already on system.]),, [with_system_libxml=auto]) +AC_ARG_WITH(system-lzma, + AS_HELP_STRING([--with-system-lzma], + [Use lzma already on system.]),, + [with_system_lzma="$with_system_libs"]) + AC_ARG_WITH(system-openldap, AS_HELP_STRING([--with-system-openldap], [Use the OpenLDAP LDAP SDK already on system.]),, @@ -6333,6 +6338,7 @@ if test "$cross_compiling" = "yes"; then LIBWEBP LIBXML2 LIBXSLT + LZMA MDDS MESON NATIVE @@ -14509,7 +14515,15 @@ AC_SUBST(BZIP2_CFLAGS) AC_SUBST(BZIP2_LIBS) dnl =================================================================== -dnl Test whether we need sqlite3 +dnl Test whether we need lzma for internal python +dnl =================================================================== +if test $enable_python = internal; then + BUILD_TYPE="$BUILD_TYPE LZMA" + libo_CHECK_SYSTEM_MODULE([lzma], [LZMA], [lzma]) +fi + +dnl =================================================================== +dnl Test whether we need sqlite3 for internal python (no needed on macOS) dnl =================================================================== if test "$_os" != "Darwin" -a $enable_python = internal; then BUILD_TYPE="$BUILD_TYPE SQLITE3" diff --git a/download.lst b/download.lst index e6dd80c3247a..d980c8584044 100644 --- a/download.lst +++ b/download.lst @@ -482,6 +482,11 @@ LXML_TARBALL := lxml-6.0.2.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts +LZMA_SHA256SUM := bdbc23fbf9098843357e71e49685724fda2c320c29cb1b25fd90505f14bb0b3d +LZMA_TARBALL := xz-5.8.1.tar.gz +# three static lines +# so that git cherry-pick +# will not run into conflicts MARIADB_CONNECTOR_C_SHA256SUM := a5abb7331508988f7287b481c1839bd929261ce38352cd0fde6c002c300e0c01 MARIADB_CONNECTOR_C_TARBALL := mariadb-connector-c-3.3.17-src.tar.gz # three static lines diff --git a/external/Module_external.mk b/external/Module_external.mk index 8884e375c6b1..830850e8b279 100644 --- a/external/Module_external.mk +++ b/external/Module_external.mk @@ -69,6 +69,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\ $(call gb_Helper_optional,LPSOLVE,lpsolve) \ $(call gb_Helper_optional,LIBTOMMATH,libtommath) \ $(call gb_Helper_optional,LXML,lxml) \ + $(call gb_Helper_optional,LZMA,lzma) \ $(call gb_Helper_optional,MARIADB_CONNECTOR_C,mariadb-connector-c) \ $(call gb_Helper_optional,MD4C,md4c) \ $(call gb_Helper_optional,MDDS,mdds) \ diff --git a/external/lzma/Makefile b/external/lzma/Makefile new file mode 100644 index 000000000000..569ad8a0ba7a --- /dev/null +++ b/external/lzma/Makefile @@ -0,0 +1,14 @@ +# -*- 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/. +# + +module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) + +include $(module_directory)/../../solenv/gbuild/partial_build.mk + +# vim: set noet sw=4 ts=4: diff --git a/external/lzma/Module_lzma.mk b/external/lzma/Module_lzma.mk new file mode 100644 index 000000000000..72beb1d10231 --- /dev/null +++ b/external/lzma/Module_lzma.mk @@ -0,0 +1,17 @@ +# -*- 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,lzma)) + +$(eval $(call gb_Module_add_targets,lzma,\ + $(if $(filter-out WNT,$(OS)),StaticLibrary_lzma) \ + UnpackedTarball_lzma \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/lzma/StaticLibrary_lzma.mk b/external/lzma/StaticLibrary_lzma.mk new file mode 100644 index 000000000000..d35296cebd05 --- /dev/null +++ b/external/lzma/StaticLibrary_lzma.mk @@ -0,0 +1,110 @@ +# -*- 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_StaticLibrary_StaticLibrary,lzma)) + +$(eval $(call gb_StaticLibrary_use_unpacked,lzma,lzma)) + +$(eval $(call gb_StaticLibrary_set_warnings_disabled,lzma)) + +$(eval $(call gb_StaticLibrary_set_include,lzma,\ + -I$(gb_UnpackedTarball_workdir)/lzma/src/common \ + -I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/api \ + -I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/check \ + -I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/common \ + -I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/delta \ + -I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/lz \ + -I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/lzma \ + -I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/rangecoder \ + -I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/simple \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_StaticLibrary_add_cflags,lzma,\ + -DHAVE_STDINT_H \ + -DHAVE_STDBOOL_H \ + -DMYTHREAD_POSIX \ +)) + +$(eval $(call gb_StaticLibrary_add_generated_cobjects,lzma,\ + UnpackedTarball/lzma/src/common/tuklib_cpucores \ + UnpackedTarball/lzma/src/common/tuklib_physmem \ + UnpackedTarball/lzma/src/liblzma/check/check \ + UnpackedTarball/lzma/src/liblzma/check/crc32_fast \ + UnpackedTarball/lzma/src/liblzma/check/crc64_fast \ + UnpackedTarball/lzma/src/liblzma/check/sha256 \ + UnpackedTarball/lzma/src/liblzma/common/alone_decoder \ + UnpackedTarball/lzma/src/liblzma/common/alone_encoder \ + UnpackedTarball/lzma/src/liblzma/common/auto_decoder \ + UnpackedTarball/lzma/src/liblzma/common/block_buffer_decoder \ + UnpackedTarball/lzma/src/liblzma/common/block_buffer_encoder \ + UnpackedTarball/lzma/src/liblzma/common/block_decoder \ + UnpackedTarball/lzma/src/liblzma/common/block_encoder \ + UnpackedTarball/lzma/src/liblzma/common/block_header_decoder \ + UnpackedTarball/lzma/src/liblzma/common/block_header_encoder \ + UnpackedTarball/lzma/src/liblzma/common/block_util \ + UnpackedTarball/lzma/src/liblzma/common/common \ + UnpackedTarball/lzma/src/liblzma/common/easy_buffer_encoder \ + UnpackedTarball/lzma/src/liblzma/common/easy_decoder_memusage \ + UnpackedTarball/lzma/src/liblzma/common/easy_encoder \ + UnpackedTarball/lzma/src/liblzma/common/easy_encoder_memusage \ + UnpackedTarball/lzma/src/liblzma/common/easy_preset \ + UnpackedTarball/lzma/src/liblzma/common/filter_buffer_decoder \ + UnpackedTarball/lzma/src/liblzma/common/filter_buffer_encoder \ + UnpackedTarball/lzma/src/liblzma/common/filter_common \ + UnpackedTarball/lzma/src/liblzma/common/filter_decoder \ + UnpackedTarball/lzma/src/liblzma/common/filter_encoder \ + UnpackedTarball/lzma/src/liblzma/common/filter_flags_decoder \ + UnpackedTarball/lzma/src/liblzma/common/filter_flags_encoder \ + UnpackedTarball/lzma/src/liblzma/common/hardware_cputhreads \ + UnpackedTarball/lzma/src/liblzma/common/hardware_physmem \ + UnpackedTarball/lzma/src/liblzma/common/index \ + UnpackedTarball/lzma/src/liblzma/common/index_decoder \ + UnpackedTarball/lzma/src/liblzma/common/index_encoder \ + UnpackedTarball/lzma/src/liblzma/common/index_hash \ + UnpackedTarball/lzma/src/liblzma/common/outqueue \ + UnpackedTarball/lzma/src/liblzma/common/stream_buffer_decoder \ + UnpackedTarball/lzma/src/liblzma/common/stream_buffer_encoder \ + UnpackedTarball/lzma/src/liblzma/common/stream_decoder \ + UnpackedTarball/lzma/src/liblzma/common/stream_encoder \ + UnpackedTarball/lzma/src/liblzma/common/stream_encoder_mt \ + UnpackedTarball/lzma/src/liblzma/common/stream_flags_common \ + UnpackedTarball/lzma/src/liblzma/common/stream_flags_decoder \ + UnpackedTarball/lzma/src/liblzma/common/stream_flags_encoder \ + UnpackedTarball/lzma/src/liblzma/common/vli_decoder \ + UnpackedTarball/lzma/src/liblzma/common/vli_encoder \ + UnpackedTarball/lzma/src/liblzma/common/vli_size \ + UnpackedTarball/lzma/src/liblzma/delta/delta_common \ + UnpackedTarball/lzma/src/liblzma/delta/delta_decoder \ + UnpackedTarball/lzma/src/liblzma/delta/delta_encoder \ + UnpackedTarball/lzma/src/liblzma/lzma/fastpos_table \ + UnpackedTarball/lzma/src/liblzma/lzma/lzma2_decoder \ + UnpackedTarball/lzma/src/liblzma/lzma/lzma2_encoder \ + UnpackedTarball/lzma/src/liblzma/lzma/lzma_decoder \ + UnpackedTarball/lzma/src/liblzma/lzma/lzma_encoder \ + UnpackedTarball/lzma/src/liblzma/lzma/lzma_encoder_optimum_fast \ + UnpackedTarball/lzma/src/liblzma/lzma/lzma_encoder_optimum_normal \ + UnpackedTarball/lzma/src/liblzma/lzma/lzma_encoder_presets \ + UnpackedTarball/lzma/src/liblzma/lz/lz_decoder \ + UnpackedTarball/lzma/src/liblzma/lz/lz_encoder \ + UnpackedTarball/lzma/src/liblzma/lz/lz_encoder_mf \ + UnpackedTarball/lzma/src/liblzma/rangecoder/price_table \ + UnpackedTarball/lzma/src/liblzma/simple/arm \ + UnpackedTarball/lzma/src/liblzma/simple/arm64 \ + UnpackedTarball/lzma/src/liblzma/simple/armthumb \ + UnpackedTarball/lzma/src/liblzma/simple/ia64 \ + UnpackedTarball/lzma/src/liblzma/simple/powerpc \ + UnpackedTarball/lzma/src/liblzma/simple/simple_coder \ + UnpackedTarball/lzma/src/liblzma/simple/simple_decoder \ + UnpackedTarball/lzma/src/liblzma/simple/simple_encoder \ + UnpackedTarball/lzma/src/liblzma/simple/sparc \ + UnpackedTarball/lzma/src/liblzma/simple/x86 \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/lzma/UnpackedTarball_lzma.mk b/external/lzma/UnpackedTarball_lzma.mk new file mode 100644 index 000000000000..4352c5648db2 --- /dev/null +++ b/external/lzma/UnpackedTarball_lzma.mk @@ -0,0 +1,18 @@ +# -*- 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_UnpackedTarball_UnpackedTarball,lzma)) + +$(eval $(call gb_UnpackedTarball_set_tarball,lzma,$(LZMA_TARBALL))) + +$(eval $(call gb_UnpackedTarball_add_patches,lzma,\ + external/lzma/config.patch \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/lzma/config.patch b/external/lzma/config.patch new file mode 100644 index 000000000000..e73ec27fe18e --- /dev/null +++ b/external/lzma/config.patch @@ -0,0 +1,32 @@ +--- lzma/dos/config.h 2025-11-11 18:04:24.929259033 +0100 ++++ lzma/dos/config.h 2025-11-11 18:04:45.193130245 +0100 +@@ -12,9 +12,6 @@ + /* Define to 1 if sha256 integrity check is enabled. */ + #define HAVE_CHECK_SHA256 1 + +-/* Define to 1 if the 32-bit x86 CRC assembly files are used. */ +-#define HAVE_CRC_X86_ASM 1 +- + /* Define to 1 if any of HAVE_DECODER_foo have been defined. */ + #define HAVE_DECODERS 1 + +@@ -84,9 +81,6 @@ + /* Define to 1 if you have the <inttypes.h> header file. */ + #define HAVE_INTTYPES_H 1 + +-/* Define to 1 if .lz (lzip) decompression support is enabled. */ +-#define HAVE_LZIP_DECODER 1 +- + /* Define to 1 to enable bt2 match finder. */ + #define HAVE_MF_BT2 1 + +@@ -122,9 +116,6 @@ + */ + #define HAVE___BUILTIN_ASSUME_ALIGNED 1 + +-/* Define to 1 if the GNU C extensions __builtin_bswap16/32/64 are supported. +- */ +-#define HAVE___BUILTIN_BSWAPXX 1 + + /* Define to 1 to disable debugging code. */ + #define NDEBUG 1 diff --git a/readlicense_oo/license/license.xml b/readlicense_oo/license/license.xml index 867cc13fb6bb..c89db0f61f23 100644 --- a/readlicense_oo/license/license.xml +++ b/readlicense_oo/license/license.xml @@ -1489,6 +1489,10 @@ the terms of the license below:</p> <p><a href="#a__LGPL_version_2_1">Jump to LGPL Version 2.1</a></p> </div> + <div class="LZMA"> + <h2>lzma</h2> + <p>liblzma is under the BSD Zero Clause License (0BSD)</p> + </div> <div class="MARIADB_CONNECTOR_C"> <h2>MariaDB Connector/C</h2> <p>The following software may be included in this product: MariaDB Connector/C. Use of any of this software is
