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

Reply via email to