Makefile.in                                                   |   12 
 Repository.mk                                                 |    2 
 RepositoryExternal.mk                                         |   41 
 bin/merge-app-bundles                                         |    2 
 comphelper/source/misc/lok.cxx                                |   31 
 configure.ac                                                  |   71 
 desktop/qa/desktop_lib/test_desktop_lib.cxx                   |    3 
 desktop/source/lib/init.cxx                                   |   19 
 distro-configs/CODAWindows.conf                               |   63 
 distro-configs/CPAndroidBranding.conf                         |    1 
 distro-configs/CPLinux-LOKit.conf                             |    3 
 distro-configs/CPLinuxQtFlatpak.conf                          |  141 
 distro-configs/CPMacOS-LOKit.conf                             |   63 
 distro-configs/CPWASM-LOKit.conf                              |    1 
 drawinglayer/Library_drawinglayer.mk                          |    2 
 drawinglayer/source/processor2d/cairopixelprocessor2d.cxx     |    2 
 drawinglayer/source/processor2d/processor2dtools.cxx          |    4 
 external/cairo/Library_cairo.mk                               |  181 
 external/cairo/Module_cairo.mk                                |   20 
 external/cairo/Package_cairo.mk                               |   12 
 external/cairo/Package_pixman.mk                              |   12 
 external/cairo/StaticLibrary_pixman.mk                        |   81 
 external/cairo/UnpackedTarball_cairo.mk                       |    5 
 external/cairo/UnpackedTarball_pixman.mk                      |    4 
 external/cairo/configs/wnt_cairo_config.h                     |  453 
 external/cairo/configs/wnt_cairo_features.h                   |   38 
 external/cairo/configs/wnt_pixman_config.h                    |  199 
 external/fontconfig/ExternalPackage_fontconfig_data.mk        |   31 
 external/fontconfig/Module_fontconfig.mk                      |   17 
 external/fontconfig/StaticLibrary_fontconfig.mk               |   77 
 external/fontconfig/UnpackedTarball_fontconfig.mk             |   19 
 external/fontconfig/configs/wnt_fontconfig_config.h           |  454 
 external/fontconfig/configs/wnt_fontconfig_fcalias.h          |  460 
 external/fontconfig/configs/wnt_fontconfig_fcaliastail.h      |    1 
 external/fontconfig/configs/wnt_fontconfig_fccase.h           |  350 
 external/fontconfig/configs/wnt_fontconfig_fcftalias.h        |   12 
 external/fontconfig/configs/wnt_fontconfig_fcftaliastail.h    |    1 
 external/fontconfig/configs/wnt_fontconfig_fclang.h           | 4917 ++++++++++
 external/fontconfig/configs/wnt_fontconfig_fcobjshash.h       |  358 
 external/fontconfig/configs/wnt_fontconfig_fcstdint.h         |    9 
 external/fontconfig/configs/wnt_fonts.conf                    |   95 
 external/fontconfig/windowsfonts.patch                        |  142 
 external/freetype/Module_freetype.mk                          |   15 
 external/freetype/StaticLibrary_freetype.mk                   |   78 
 external/libxml2/ExternalProject_libxml2.mk                   |    2 
 include/LibreOfficeKit/LibreOfficeKit.h                       |   18 
 include/LibreOfficeKit/LibreOfficeKit.hxx                     |   29 
 include/LibreOfficeKit/LibreOfficeKitInit.h                   |   42 
 include/LibreOfficeKit/LibreOfficeKitTypes.h                  |    6 
 include/comphelper/lok.hxx                                    |    4 
 include/tools/UnixWrappers.h                                  |  336 
 include/vcl/virdev.hxx                                        |    2 
 osx/soffice.xcodeproj/project.pbxproj                         |    2 
 osx/soffice.xcodeproj/xcshareddata/xcschemes/soffice.xcscheme |   73 
 postprocess/Module_postprocess.mk                             |    2 
 readlicense_oo/license/license.xml                            |    8 
 sal/osl/w32/module.cxx                                        |    4 
 sc/source/core/data/formulacell.cxx                           |    2 
 sc/ucalc_setup.mk                                             |    2 
 sc/uiconfig/scalc/ui/cellprotectionpage.ui                    |    2 
 sd/source/ui/inc/View.hxx                                     |    4 
 sfx2/source/doc/guisaveas.cxx                                 |   14 
 solenv/clang-format/excludelist                               |   12 
 solenv/gbuild/CppunitTest.mk                                  |    2 
 solenv/gbuild/extensions/pre_MergedLibsList.mk                |    4 
 svx/source/svdraw/svdomedia.cxx                               |    2 
 sw/uiconfig/swriter/ui/spellmenu.ui                           |    2 
 tools/Module_tools.mk                                         |    1 
 tools/StaticLibrary_UseUnixWrappers.mk                        |   23 
 tools/source/misc/UseUnixWrappers.c                           |   18 
 vcl/Library_vcl.mk                                            |   12 
 vcl/Module_vcl.mk                                             |    5 
 vcl/headless/svpframe.cxx                                     |    2 
 vcl/headless/svpinst.cxx                                      |   47 
 vcl/inc/headless/svpinst.hxx                                  |    4 
 vcl/inc/sft.hxx                                               |    3 
 vcl/inc/unx/freetype_glyphcache.hxx                           |    1 
 vcl/inc/unx/freetypetextrender.hxx                            |    2 
 vcl/inc/unx/genprn.h                                          |    7 
 vcl/inc/unx/glyphcache.hxx                                    |    3 
 vcl/source/app/scheduler.cxx                                  |    3 
 vcl/source/app/svapp.cxx                                      |   14 
 vcl/source/fontsubset/sft.cxx                                 |   25 
 vcl/unx/generic/fontmanager/fontconfig.cxx                    |    6 
 vcl/unx/generic/fontmanager/fontmanager.cxx                   |    4 
 vcl/unx/generic/fontmanager/helper.cxx                        |    7 
 vcl/unx/generic/glyphs/freetype_glyphcache.cxx                |   40 
 vcl/unx/generic/print/genprnpsp.cxx                           |    3 
 vcl/unx/generic/print/genpspgraphics.cxx                      |    5 
 writerperfect/Library_wpftdraw.mk                             |    1 
 90 files changed, 9137 insertions(+), 175 deletions(-)

New commits:
commit a23dd7d0dee2498f180542d55bf3e0beca74bb78
Author:     Andras Timar <[email protected]>
AuthorDate: Mon Dec 15 16:29:15 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:50 2026 +0100

    [cp] unification of Collabora Office app configs
    
    Change-Id: I9576a5d64588d983598e99bf276400bcacb175b2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195676
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index fbfc070f85a4..c1924e9d7a06 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -1,47 +1,63 @@
-# Collabora Online Desktop app for Windows
+# Config for Collabora Office app for Windows
 
 # Build environment
---with-visual-studio=2022
 --enable-python=fully-internal
---without-lxml
---without-export-validation
 --disable-ccache
 --disable-pch
---without-doxygen
---without-java
+--enable-mergelibs
+--enable-release-build
 --enable-symbols
+--with-visual-studio=2022
+--with-buildconfig-recorded
+--without-lxml
 
-# Branding (unused, but...)
+# Branding
 --with-branding=icon-themes/galaxy/brand_cp
+--with-vendor=Collabora
 
-# Features
---disable-breakpad
---disable-firebird-sdbc
---disable-online-update
---without-helppack-integration
+# MPLv2 subset
+--disable-gpgmepp
+--disable-lotuswordpro
+--disable-lpsolve
+--disable-mariadb-sdbc
+--disable-poppler
+--disable-postgresql-sdbc
+--with-theme=colibre colibre_svg
+
+# No Java
+--without-java
+--without-junit
+--disable-ext-nlpsolver
+--disable-ext-wiki-publisher
+--disable-report-builder
+--disable-scripting-beanshell
+--disable-scripting-javascript
+
+# LOKit – tiled rendering
 --disable-avmedia
---disable-odk
+--disable-opengl
 --disable-skia
---disable-cli
---with-myspell-dicts
+--enable-cairo-rgba
 --enable-headless
---enable-mergelibs
+
+# Misc features
+--disable-breakpad
+--disable-cli
+--disable-firebird-sdbc
+--disable-librelogo
+--disable-odk
+--disable-online-update
 --disable-opencl
---disable-opengl
+--disable-sal-log
+--disable-sdremote
+--disable-sdremote-bluetooth
+--with-lang=ar ca cs cy da de el en-US en-GB es eu fi fr ga gl he hr hu hy id 
is it ja kk ko nl pl pt pt-BR ro ru sk sl sq sv tr uk zh-CN zh-TW
+--with-myspell-dicts
 --without-galleries
---disable-librelogo
+--without-help
 --without-templates
 
 # Sensible font bundling settings for desktop
 --with-fonts
 --with-docrepair-fonts
 --disable-noto-font
-
-# MPLv2 subset
---with-theme=colibre
---disable-mariadb-sdbc
---disable-postgresql-sdbc
---disable-lotuswordpro
---disable-lpsolve
---disable-poppler
---disable-gpgmepp
diff --git a/distro-configs/CPLinuxQtFlatpak.conf 
b/distro-configs/CPLinuxQtFlatpak.conf
index cef34d73b855..a989bf4cad6b 100644
--- a/distro-configs/CPLinuxQtFlatpak.conf
+++ b/distro-configs/CPLinuxQtFlatpak.conf
@@ -6,7 +6,7 @@
 --enable-release-build
 --enable-symbols
 --with-linker-hash-style=both
---without-buildconfig-recorded
+--with-buildconfig-recorded
 --without-lxml
 
 # Branding
@@ -33,6 +33,7 @@
 --disable-scripting-javascript
 
 # LOKit – tiled rendering
+--disable-avmedia
 --disable-dbus
 --disable-dconf
 --disable-gio
@@ -40,10 +41,14 @@
 --disable-gtk3
 --disable-gui
 --disable-kf5
+--disable-opengl
 --disable-qt5
 --disable-randr
+--disable-skia
+--enable-cairo-rgba
 
 # Misc features
+--disable-breakpad
 --disable-epm
 --disable-evolution2
 --disable-firebird-sdbc
@@ -54,8 +59,8 @@
 --disable-sdremote
 --disable-sdremote-bluetooth
 --enable-extension-integration
---with-galleries=no
 --with-lang=ar ca cs cy da de el en-US en-GB es eu fi fr ga gl he hr hu hy id 
is it ja kk ko nl pl pt pt-BR ro ru sk sl sq sv tr uk zh-CN zh-TW
+--without-galleries
 --without-help
 --without-templates
 
@@ -87,7 +92,6 @@
 --with-system-zlib
 
 # org.kde.Platform has cairo, but we use a patched one
---enable-cairo-rgba
 --without-system-cairo
 
 # 3rd party libs that org.kde.Platform does not have
diff --git a/distro-configs/CPMacOS-LOKit.conf 
b/distro-configs/CPMacOS-LOKit.conf
index 36845ebf565d..82087cea2afb 100644
--- a/distro-configs/CPMacOS-LOKit.conf
+++ b/distro-configs/CPMacOS-LOKit.conf
@@ -1,44 +1,63 @@
-INCLUDE:CPLinux-LOKit
+# Config for Collabora Office app for macOS
 
-# LOKit needs to be able to run in the sandbox
---enable-macosx-sandbox
-
-# disable Linux stuff that we don't need
---disable-epm
+# Build environment
 --disable-python
---without-package-format
---enable-gui
---without-system-dicts
-
-# Sensible font bundling settings for desktop
---with-fonts
---with-docrepair-fonts
---disable-noto-font
-
-# from LibreOfficeiOS (copied only, to avoid the --host setting)
---disable-breakpad
---disable-firebird-sdbc
---disable-online-update
+--enable-macosx-sandbox
+--enable-mergelibs
+--enable-release-build
+--with-buildconfig-recorded
+--without-lxml
+
+# Branding
+--with-branding=icon-themes/galaxy/brand_cp
+--with-vendor=Collabora
+
+# MPLv2 subset
+--enable-mpl-subset
+--disable-gpgmepp
+--disable-lotuswordpro
+--disable-lpsolve
+--disable-mariadb-sdbc
+--disable-poppler
+--disable-postgresql-sdbc
+--with-theme=colibre colibre_svg
 
---without-export-validation
---without-helppack-integration
+# No Java
 --without-java
 --without-junit
+--disable-ext-nlpsolver
+--disable-ext-wiki-publisher
+--disable-report-builder
+--disable-scripting-beanshell
+--disable-scripting-javascript
 
---with-theme=colibre
-
---with-build-platform-configure-options=--with-system-jpeg=no
-
---disable-avahi
+# LOKit – tiled rendering
 --disable-avmedia
---disable-compiler-plugins
---disable-cups
---disable-dconf
---disable-kf5
+--disable-opengl
+--disable-skia
+--enable-cairo-rgba
+--enable-headless
+--without-system-fontconfig
+--without-system-freetype
+
+# Misc features
+--disable-breakpad
+--disable-cli
+--disable-firebird-sdbc
+--disable-librelogo
 --disable-odk
+--disable-online-update
 --disable-openssl
---disable-poppler
---disable-python
---disable-skia
+--disable-sal-log
+--disable-sdremote
+--disable-sdremote-bluetooth
+--with-lang=ar ca cs cy da de el en-US en-GB es eu fi fr ga gl he hr hu hy id 
is it ja kk ko nl pl pt pt-BR ro ru sk sl sq sv tr uk zh-CN zh-TW
+--with-myspell-dicts
+--without-galleries
+--without-help
+--without-templates
 
---enable-headless
+# Sensible font bundling settings for desktop
+--with-fonts
+--with-docrepair-fonts
+--disable-noto-font
commit e6fbae6ee3680dddbb801a2cba3f861c7e1af20f
Author:     Andras Timar <[email protected]>
AuthorDate: Mon Dec 15 14:47:38 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:50 2026 +0100

    [cp] Build Collabora Office apps without templates
    
    These templates are not used, therefore it is unnecessary to
    ship them.
    
    Change-Id: Ic0fc3007d5b214978eba4e575209f90af7b5bd9b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195668
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index 3b2d0a07d2d2..fbfc070f85a4 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -30,6 +30,7 @@
 --disable-opengl
 --without-galleries
 --disable-librelogo
+--without-templates
 
 # Sensible font bundling settings for desktop
 --with-fonts
diff --git a/distro-configs/CPLinuxQtFlatpak.conf 
b/distro-configs/CPLinuxQtFlatpak.conf
index 19ad25c88327..cef34d73b855 100644
--- a/distro-configs/CPLinuxQtFlatpak.conf
+++ b/distro-configs/CPLinuxQtFlatpak.conf
@@ -57,6 +57,7 @@
 --with-galleries=no
 --with-lang=ar ca cs cy da de el en-US en-GB es eu fi fr ga gl he hr hu hy id 
is it ja kk ko nl pl pt pt-BR ro ru sk sl sq sv tr uk zh-CN zh-TW
 --without-help
+--without-templates
 
 # Sensible font bundling settings for desktop
 --with-fonts
diff --git a/distro-configs/CPMacOS-LOKit.conf 
b/distro-configs/CPMacOS-LOKit.conf
index bea3292fab29..36845ebf565d 100644
--- a/distro-configs/CPMacOS-LOKit.conf
+++ b/distro-configs/CPMacOS-LOKit.conf
@@ -9,7 +9,6 @@ INCLUDE:CPLinux-LOKit
 --without-package-format
 --enable-gui
 --without-system-dicts
---with-templates
 
 # Sensible font bundling settings for desktop
 --with-fonts
commit c0761f4d9b372ae56226ff430f38c0275ab8bbcf
Author:     Andras Timar <[email protected]>
AuthorDate: Mon Dec 15 18:53:11 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:50 2026 +0100

    typo 'ENBALE', but we don't use them anyway
    
    Change-Id: Icec2cafd8fc55817cc131c3f963bcb8cda81c872
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195681
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/configure.ac b/configure.ac
index c7d7be668a66..67240875614d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1332,8 +1332,6 @@ if test "$using_freetype_fontconfig" = yes; then
         # We build them, don't do any pkg-config checks
         test_fontconfig=no
         test_freetype=no
-        ENBALE_FONTCONFIG=TRUE
-        ENBALE_FREETYPE=TRUE
         BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
     fi
 else
commit 9b710d90ef97d4d40534290123755bd9a129f67a
Author:     Jan Holesovsky <[email protected]>
AuthorDate: Tue Dec 9 11:06:02 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:50 2026 +0100

    Don't fail when copying files from the 2nd location
    
    The 2nd location may contain directory/ies that don't exist in the 1st
    location; in that case the copying used to fail because the target
    directory was not present in the final location.
    
    Change-Id: Ie115128a45cd823723a91f7ea5985602a2448342

diff --git a/bin/merge-app-bundles b/bin/merge-app-bundles
index 34f84274ec5d..ffd7853fd16b 100755
--- a/bin/merge-app-bundles
+++ b/bin/merge-app-bundles
@@ -54,6 +54,8 @@ OUT=$(cd "$3" && /bin/pwd)
 (
     cd "$ONE"
     find . -type d -print
+    cd "$TWO"
+    find . -type d -print
 ) |
 (
     cd "$OUT"
commit 058bc41afb76656de71f6012012f59133f586682
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Mon Dec 8 15:47:00 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:50 2026 +0100

    Skip private system fonts found by fontcofig on macOS
    
    They have family names starting with a period. They are not intended
    to be used by apps, and not normally visible in apps that use just
    Apple APIs. So we should not use them even if they are found by
    fontconfig. (Letting them be found leads to an assertion failure in
    boost, even. Did not investigate further.)
    
    See for instance
    
https://eclecticlight.co/2015/11/10/qa-how-to-use-san-francisco-font-in-docs/
    , from which I quote:
    
    👉 This is accomplished by prefacing its name and ID with a period
    (.), so that its TrueType Unique ID record, for example, describes it
    as “.SF NS Text”, and it is explicitly identified as a System Font.
    This ensures that it is omitted from font selection menus and
    dialogs. 👈
    
    Change-Id: I4efea606331c5c37a321b30e908a0c8c789816e1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195230
    Tested-by: Andras Timar <[email protected]>
    Reviewed-by: Andras Timar <[email protected]>
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx 
b/vcl/unx/generic/fontmanager/fontconfig.cxx
index 642a1a7ef733..bf2a0da22370 100644
--- a/vcl/unx/generic/fontmanager/fontconfig.cxx
+++ b/vcl/unx/generic/fontmanager/fontconfig.cxx
@@ -660,6 +660,12 @@ void PrintFontManager::countFontconfigFonts()
             if( eFileRes != FcResultMatch || eFamilyRes != FcResultMatch || 
eScalableRes != FcResultMatch || eStyleRes != FcResultMatch )
                 continue;
 
+#ifdef MACOSX
+            // Skip system fonts not intended for app use
+            if (family && family[0] == '.')
+                continue;
+#endif
+
             SAL_INFO(
                 "vcl.fonts.detail",
                 "found font \"" << family << "\" in file " << file << ", 
weight = "
commit dfc45fd75936a43f8a20e1038fae8647cfc14e43
Author:     Andras Timar <[email protected]>
AuthorDate: Fri Dec 5 20:04:56 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:50 2026 +0100

    [cp] add CPLinuxQtFlatpak.conf
    
    Change-Id: Ie8db1cf84ce65a1cae279a22e0c125de519fe68c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195110
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/distro-configs/CPLinuxQtFlatpak.conf 
b/distro-configs/CPLinuxQtFlatpak.conf
new file mode 100644
index 000000000000..19ad25c88327
--- /dev/null
+++ b/distro-configs/CPLinuxQtFlatpak.conf
@@ -0,0 +1,136 @@
+# Config for Collabora Office Qt flatpak
+
+# Build environment
+--enable-hardening-flags
+--enable-mergelibs
+--enable-release-build
+--enable-symbols
+--with-linker-hash-style=both
+--without-buildconfig-recorded
+--without-lxml
+
+# Branding
+--with-branding=icon-themes/galaxy/brand_cp
+--with-vendor=Collabora
+
+# MPLv2 subset
+--enable-mpl-subset
+--disable-gpgmepp
+--disable-lotuswordpro
+--disable-lpsolve
+--disable-mariadb-sdbc
+--disable-poppler
+--disable-postgresql-sdbc
+--with-theme=colibre colibre_svg
+
+# No Java
+--without-java
+--without-junit
+--disable-ext-nlpsolver
+--disable-ext-wiki-publisher
+--disable-report-builder
+--disable-scripting-beanshell
+--disable-scripting-javascript
+
+# LOKit – tiled rendering
+--disable-dbus
+--disable-dconf
+--disable-gio
+--disable-gstreamer-1-0
+--disable-gtk3
+--disable-gui
+--disable-kf5
+--disable-qt5
+--disable-randr
+
+# Misc features
+--disable-epm
+--disable-evolution2
+--disable-firebird-sdbc
+--disable-librelogo
+--disable-odk
+--disable-online-update
+--disable-sal-log
+--disable-sdremote
+--disable-sdremote-bluetooth
+--enable-extension-integration
+--with-galleries=no
+--with-lang=ar ca cs cy da de el en-US en-GB es eu fi fr ga gl he hr hu hy id 
is it ja kk ko nl pl pt pt-BR ro ru sk sl sq sv tr uk zh-CN zh-TW
+--without-help
+
+# Sensible font bundling settings for desktop
+--with-fonts
+--with-docrepair-fonts
+--disable-noto-font
+
+# 3rd party libs and dictionaries provided by org.kde.Platform
+--without-myspell-dicts
+--with-system-dicts
+--with-system-altlinuxhyph
+--with-system-curl
+--with-system-expat
+--with-system-fontconfig
+--with-system-freetype
+--with-system-graphite
+--with-system-harfbuzz
+--with-system-hunspell
+--with-system-icu
+--with-system-lcms2
+--with-system-libpng
+--with-system-libtiff
+--with-system-libwebp
+--with-system-libxml
+--with-system-mythes
+--with-system-nss
+--with-system-openssl
+--with-system-zlib
+
+# org.kde.Platform has cairo, but we use a patched one
+--enable-cairo-rgba
+--without-system-cairo
+
+# 3rd party libs that org.kde.Platform does not have
+--without-system-abseil
+--without-system-argon2
+--without-system-boost
+--without-system-box2d
+--without-system-clucene
+--without-system-coinmp
+--without-system-cppunit
+--without-system-dragonbox
+--without-system-frozen
+--without-system-glm
+--without-system-jpeg
+--without-system-libabw
+--without-system-libcdr
+--without-system-libcmis
+--without-system-libebook
+--without-system-libeot
+--without-system-libepubgen
+--without-system-libetonyek
+--without-system-libexttextcat
+--without-system-libfixmath
+--without-system-libfreehand
+--without-system-liblangtag
+--without-system-libmspub
+--without-system-libmwaw
+--without-system-libnumbertext
+--without-system-libodfgen
+--without-system-libpagemaker
+--without-system-libqxp
+--without-system-librevenge
+--without-system-libstaroffice
+--without-system-libvisio
+--without-system-libwpd
+--without-system-libwpg
+--without-system-libwps
+--without-system-libzmf
+--without-system-mdds
+--without-system-odbc
+--without-system-openldap
+--without-system-orcus
+--without-system-redland
+--without-system-sane
+--without-system-xmlsec
+--without-system-zxcvbn
+--without-system-zxing
commit 1d1a37a1c4dff5138fddf5ba8276ef31363f0dfb
Author:     Andras Timar <[email protected]>
AuthorDate: Fri Dec 5 19:23:10 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:50 2026 +0100

    [cp] Disable LibreLogo in Collabora Online/Office apps
    
    It never worked, and it is not planned to make it work.
    
    Change-Id: I94afd31d941530dd1479bfc2c441352d75c8220e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195109
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index cc27eacc2166..3b2d0a07d2d2 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -29,6 +29,7 @@
 --disable-opencl
 --disable-opengl
 --without-galleries
+--disable-librelogo
 
 # Sensible font bundling settings for desktop
 --with-fonts
diff --git a/distro-configs/CPAndroidBranding.conf 
b/distro-configs/CPAndroidBranding.conf
index ebfec0ad82aa..cdcaf3464dfe 100644
--- a/distro-configs/CPAndroidBranding.conf
+++ b/distro-configs/CPAndroidBranding.conf
@@ -12,3 +12,4 @@
 --with-docrepair-fonts
 --enable-pdfimport
 --enable-release-build
+--disable-librelogo
diff --git a/distro-configs/CPLinux-LOKit.conf 
b/distro-configs/CPLinux-LOKit.conf
index 33382b4c0b3f..02ac5121d243 100644
--- a/distro-configs/CPLinux-LOKit.conf
+++ b/distro-configs/CPLinux-LOKit.conf
@@ -68,3 +68,4 @@
 --enable-sal-log
 --without-templates
 --with-buildconfig-recorded
+--disable-librelogo
diff --git a/distro-configs/CPWASM-LOKit.conf b/distro-configs/CPWASM-LOKit.conf
index a6ee77188d3b..7bc93d3e9570 100644
--- a/distro-configs/CPWASM-LOKit.conf
+++ b/distro-configs/CPWASM-LOKit.conf
@@ -31,3 +31,4 @@
 --disable-lotuswordpro
 --disable-lpsolve
 --without-templates
+--disable-librelogo
commit 09da714bce934e5bfe0f69e9b1fdbde296e2575b
Author:     Andras Timar <[email protected]>
AuthorDate: Wed Dec 3 23:17:53 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    fontconfig conf files for macOS app
    
    Change-Id: Icfa932f9ee481eaec8e19e46f15cd00b2bdd8806

diff --git a/external/fontconfig/Module_fontconfig.mk 
b/external/fontconfig/Module_fontconfig.mk
index dba99fde6a50..a6e376157219 100644
--- a/external/fontconfig/Module_fontconfig.mk
+++ b/external/fontconfig/Module_fontconfig.mk
@@ -25,6 +25,7 @@ else
 $(eval $(call gb_Module_add_targets,fontconfig,\
        ExternalProject_fontconfig \
        $(if $(filter EMSCRIPTEN,$(OS)),ExternalPackage_fontconfig_data) \
+       $(if $(filter MACOSX,$(OS)),ExternalPackage_fontconfig_data) \
        $(if $(filter FONTCONFIG,$(BUILD_TYPE)),ExternalPackage_fontconfig) \
 ))
 
commit d52445127e1dde142266c21a01272c6c6567f8b9
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sun Nov 30 19:14:01 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Look for fonts also in WINDOWSUSERFONTDIR
    
    That is where fonts installed by the user goes.
    
    Change-Id: If23c542fee8a832da723d1165d38669b24b2fb57

diff --git a/external/fontconfig/configs/wnt_fonts.conf 
b/external/fontconfig/configs/wnt_fonts.conf
index 5dbcff5d2902..2aad205cc774 100644
--- a/external/fontconfig/configs/wnt_fonts.conf
+++ b/external/fontconfig/configs/wnt_fonts.conf
@@ -25,6 +25,7 @@
 <!-- Font directory list -->
 
        <dir>WINDOWSFONTDIR</dir>
+       <dir>WINDOWSUSERFONTDIR</dir>
 
 <!--
   Accept deprecated 'mono' alias, replacing it with 'monospace'
commit 965619c087fbbc58eaff9e07a97c8e7fbf92d933
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Wed Nov 5 11:47:22 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Don't fail assertion in Task::~Task() if LibreOfficeKit is active
    
    Apps using LibreOfficeKit often have unusual lifecycles.
    
    Change-Id: Ie113d7458cff10beba2e44181d0b6ce5758a7634

diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx
index 31f53de9ddfa..cf7078e096d9 100644
--- a/vcl/source/app/scheduler.cxx
+++ b/vcl/source/app/scheduler.cxx
@@ -41,6 +41,7 @@
 #include <salinst.hxx>
 #include <comphelper/emscriptenthreading.hxx>
 #include <comphelper/profilezone.hxx>
+#include <comphelper/lok.hxx>
 #include <schedulerimpl.hxx>
 
 namespace {
@@ -796,7 +797,7 @@ Task::~Task()
             mpSchedulerData->mpTask = nullptr;
     }
     else
-        assert(nullptr == mpSchedulerData || comphelper::IsFuzzing());
+        assert(nullptr == mpSchedulerData || comphelper::IsFuzzing() || 
comphelper::LibreOfficeKit::isActive());
 }
 
 bool Task::DecideTransferredExecution()
commit 652c05255b44bc3517b0fc934f72f1f9f319a6bb
Author:     Miklos Vajna <[email protected]>
AuthorDate: Tue Dec 9 14:17:42 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    cool#13770 lok: add a file save dialog callback
    
    Commit f4b9d6f024b27c4d8ddaabfe0eaa0b404137e3cf (Add horrible hack to
    ask the filename when exporting PDF in CODA-W, 2025-12-02) added a
    callback from core to the LOK client to trigger a file picker during PDF
    export.
    
    The problem is that in its current form, this callback is
    Windows-specific so other platforms (Linux, macOS) can't provide their
    implementation in a straightforward way.
    
    Fix the problem by reworkig this, so it works similar to the anyInput
    callback, which is cross-platform already.
    
    The behavior for the case when the new callback is not registered is
    meant to be unchanged.
    
    Change-Id: I27934774889fc827772b2665799eca358dd62e55
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195294
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Tested-by: Caolán McNamara <[email protected]>

diff --git a/comphelper/source/misc/lok.cxx b/comphelper/source/misc/lok.cxx
index c18e1da81a92..7e9373fc44cc 100644
--- a/comphelper/source/misc/lok.cxx
+++ b/comphelper/source/misc/lok.cxx
@@ -14,6 +14,9 @@
 #include <osl/process.h>
 #include <i18nlangtag/languagetag.hxx>
 #include <sal/log.hxx>
+#ifdef _WIN32
+#include <tools/UnixWrappers.h>
+#endif
 
 #include <iostream>
 
@@ -51,6 +54,8 @@ static std::function<bool(void*, int)> g_pAnyInputCallback;
 static void* g_pAnyInputCallbackData;
 static std::function<int()> g_pMostUrgentPriorityGetter;
 
+static std::function<void(const char*, char*, size_t)> 
g_pFileSaveDialogCallback;
+
 static std::function<void(int)> g_pViewSetter;
 static std::function<int()> g_pViewGetter;
 
@@ -374,6 +379,25 @@ bool anyInput()
     return bRet;
 }
 
+void setFileSaveDialogCallback(const std::function<void(const char*, char*, 
size_t)>& pFileSaveDialogCallback)
+{
+    g_pFileSaveDialogCallback = pFileSaveDialogCallback;
+}
+
+bool fileSaveDialog(const OUString& rSuggested, OUString& rResult)
+{
+    if (!g_pFileSaveDialogCallback)
+    {
+        return false;
+    }
+
+    OString aSuggested = rSuggested.toUtf8();
+    char aResult[PATH_MAX];
+    g_pFileSaveDialogCallback(aSuggested.getStr(), aResult, PATH_MAX);
+    rResult = OUString::fromUtf8(aResult);
+    return true;
+}
+
 void setViewSetter(const std::function<void(int)>& pViewSetter)
 {
     g_pViewSetter = pViewSetter;
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx 
b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index d1cd353b712a..dc52bcc39edd 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -4239,10 +4239,11 @@ void DesktopLOKTest::testABI()
     CPPUNIT_ASSERT_EQUAL(classOffset(23), offsetof(struct 
_LibreOfficeKitClass, extractDocumentStructureRequest));
     CPPUNIT_ASSERT_EQUAL(classOffset(24), offsetof(struct 
_LibreOfficeKitClass, registerAnyInputCallback));
     CPPUNIT_ASSERT_EQUAL(classOffset(25), offsetof(struct 
_LibreOfficeKitClass, getDocsCount));
+    CPPUNIT_ASSERT_EQUAL(classOffset(26), offsetof(struct 
_LibreOfficeKitClass, registerFileSaveDialogCallback));
 
     // When extending LibreOfficeKit with a new function pointer,  add new 
assert for the offsetof the
     // new function pointer and bump this assert for the size of the class.
-    CPPUNIT_ASSERT_EQUAL(classOffset(26), sizeof(struct _LibreOfficeKitClass));
+    CPPUNIT_ASSERT_EQUAL(classOffset(27), sizeof(struct _LibreOfficeKitClass));
 
     CPPUNIT_ASSERT_EQUAL(documentClassOffset(0), offsetof(struct 
_LibreOfficeKitDocumentClass, destroy));
     CPPUNIT_ASSERT_EQUAL(documentClassOffset(1), offsetof(struct 
_LibreOfficeKitDocumentClass, saveAs));
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index a19eb9a68a83..ffd4f597e153 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2743,6 +2743,9 @@ static void lo_registerAnyInputCallback(LibreOfficeKit* 
pThis,
                        LibreOfficeKitAnyInputCallback pAnyInputCallback,
                        void* pData);
 
+static void lo_registerFileSaveDialogCallback(LibreOfficeKit* pThis,
+                       LibreOfficeKitFileSaveDialogCallback 
pFileSaveDialogCallback);
+
 static void lo_sendDialogEvent(LibreOfficeKit* pThis,
                                unsigned long long int nLOKWindowId,
                                const char* pArguments);
@@ -2792,6 +2795,7 @@ LibLibreOffice_Impl::LibLibreOffice_Impl()
         m_pOfficeClass->setForkedChild = lo_setForkedChild;
         m_pOfficeClass->extractDocumentStructureRequest = 
lo_extractDocumentStructureRequest;
         m_pOfficeClass->registerAnyInputCallback = lo_registerAnyInputCallback;
+        m_pOfficeClass->registerFileSaveDialogCallback = 
lo_registerFileSaveDialogCallback;
         m_pOfficeClass->getDocsCount = lo_getDocsCount;
 
         gOfficeClass = m_pOfficeClass;
@@ -7907,6 +7911,13 @@ static void lo_registerAnyInputCallback(LibreOfficeKit* 
/*pThis*/,
     });
 }
 
+static void lo_registerFileSaveDialogCallback(LibreOfficeKit* /*pThis*/,
+                       LibreOfficeKitFileSaveDialogCallback 
pFileSaveDialogCallback)
+{
+    SolarMutexGuard aGuard;
+    
comphelper::LibreOfficeKit::setFileSaveDialogCallback(pFileSaveDialogCallback);
+}
+
 static int lo_getDocsCount(LibreOfficeKit* /*pThis*/)
 {
     SolarMutexGuard aGuard;
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h 
b/include/LibreOfficeKit/LibreOfficeKit.h
index 8d6ec5fa2646..4c94cb6041ad 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
@@ -179,6 +179,10 @@ struct _LibreOfficeKitClass
 
     /// @see lok::Office::getDocsCount().
     int (*getDocsCount) (LibreOfficeKit* pThis);
+
+    /// @see lok::Office::registerFileSaveDialogCallback()
+    void (*registerFileSaveDialogCallback)(LibreOfficeKit* pThis,
+            LibreOfficeKitFileSaveDialogCallback pCallback);
 };
 
 #define LIBREOFFICEKIT_DOCUMENT_HAS(pDoc,member) 
LIBREOFFICEKIT_HAS_MEMBER(LibreOfficeKitDocumentClass,member,(pDoc)->pClass->nSize)
diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx 
b/include/LibreOfficeKit/LibreOfficeKit.hxx
index 77facfb1867f..1b608d702504 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.hxx
+++ b/include/LibreOfficeKit/LibreOfficeKit.hxx
@@ -1325,6 +1325,14 @@ public:
         return mpThis->pClass->getDocsCount(mpThis);
     }
 
+    /**
+     * Registers a callback that can display an interactive file save dialog.
+     */
+    void registerFileSaveDialogCallback(LibreOfficeKitFileSaveDialogCallback 
pCallback)
+    {
+        return mpThis->pClass->registerFileSaveDialogCallback(mpThis, 
pCallback);
+    }
+
     /**
      * Frees the memory pointed to by pFree.
      *
diff --git a/include/LibreOfficeKit/LibreOfficeKitTypes.h 
b/include/LibreOfficeKit/LibreOfficeKitTypes.h
index 939766567607..167b4f65ca8d 100644
--- a/include/LibreOfficeKit/LibreOfficeKitTypes.h
+++ b/include/LibreOfficeKit/LibreOfficeKitTypes.h
@@ -10,6 +10,8 @@
 #ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_TYPES_H
 #define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_TYPES_H
 
+#include <stddef.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -28,6 +30,10 @@ typedef void (*LibreOfficeKitWakeCallback)(void* pData);
 /// @see lok::Office::registerAnyInputCallback()
 typedef bool (*LibreOfficeKitAnyInputCallback)(void* pData, int 
nMostUrgentPriority);
 
+/// @see lok::Office::registerFileSaveDialogCallback()
+typedef void (*LibreOfficeKitFileSaveDialogCallback)(const char* 
pSuggestedUri, char* pResultUri,
+                                                     size_t nResultUri);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/comphelper/lok.hxx b/include/comphelper/lok.hxx
index 9d28f839c9c0..ebdb8439ba0e 100644
--- a/include/comphelper/lok.hxx
+++ b/include/comphelper/lok.hxx
@@ -150,6 +150,10 @@ setAnyInputCallback(const std::function<bool(void*, int)>& 
pAnyInputCallback, vo
                     const std::function<int()>& pMostUrgentPriorityGetter);
 COMPHELPER_DLLPUBLIC bool anyInput();
 
+COMPHELPER_DLLPUBLIC void setFileSaveDialogCallback(
+    const std::function<void(const char*, char*, size_t)>& 
pFileSaveDialogCallback);
+COMPHELPER_DLLPUBLIC bool fileSaveDialog(const OUString& rSuggested, OUString& 
rResult);
+
 // These allow setting callbacks, so that set/get of a LOK view is possible 
even in code that is
 // below sfx2.
 COMPHELPER_DLLPUBLIC void setViewSetter(const std::function<void(int)>& 
pViewSetter);
diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index 12f2a701f457..3ba1ab5c947d 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -1720,25 +1720,18 @@ bool 
SfxStoringHelper::FinishGUIStoreModel(::comphelper::SequenceAsHashMap::cons
     {
         OUString aFileName;
         aFileNameIter->second >>= aFileName;
-#ifdef _WIN32
         if (comphelper::LibreOfficeKit::isActive())
         {
-            // FIXME: Horrible hack. In CODA-W, we didn't actually
-            // display any dialog yet, so call into a function in
-            // CODA.cpp.
-            typedef void (*ofd_t)(const std::wstring& suggestedURI, 
std::string& result);
-            // Use mangled name to catch changes in parameters...
-            ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), 
"?output_file_dialog_from_core@@YAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z");
-            if (ofd != NULL)
+            // In the LOK case, we didn't actually display any dialog yet, so 
invoke a callback if
+            // that's set.
+            OUString aNewURI;
+            if (comphelper::LibreOfficeKit::fileSaveDialog(aFileName, aNewURI))
             {
-                std::string newURI;
-                (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI);
-                if (newURI == "")
+                if (aNewURI.isEmpty())
                     return false;
-                aFileName = OUString::fromUtf8(newURI.c_str());
+                aFileName = aNewURI;
             }
         }
-#endif
 
         aURL.SetURL( aFileName );
         DBG_ASSERT( aURL.GetProtocol() != INetProtocol::NotValid, "Illegal 
URL!" );
commit 99b0e3478ebef09d75ea3e32c2d0b8d75b884f30
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue Nov 4 20:40:34 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Make the CODA-W PDF export file save dialog hack a bit more secure
    
    Look for the mangled ++ name, to catch a potential mismatch in
    function signature. Also, check that the returned function pointer is
    non-null before calling it.
    
    Change-Id: Ib2e0d1cd4b3e26081800b736b74e5972d0819736

diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index 2f18ac21a4fb..12f2a701f457 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -1727,12 +1727,16 @@ bool 
SfxStoringHelper::FinishGUIStoreModel(::comphelper::SequenceAsHashMap::cons
             // display any dialog yet, so call into a function in
             // CODA.cpp.
             typedef void (*ofd_t)(const std::wstring& suggestedURI, 
std::string& result);
-            ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), 
"output_file_dialog_from_core");
-            std::string newURI;
-            (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI);
-            if (newURI == "")
-                return false;
-            aFileName = OUString::fromUtf8(newURI.c_str());
+            // Use mangled name to catch changes in parameters...
+            ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), 
"?output_file_dialog_from_core@@YAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z");
+            if (ofd != NULL)
+            {
+                std::string newURI;
+                (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI);
+                if (newURI == "")
+                    return false;
+                aFileName = OUString::fromUtf8(newURI.c_str());
+            }
         }
 #endif
 
commit 4d307c81cc303f676ab40457468472627553efea
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue Nov 4 17:33:28 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Add horrible hack to ask the filename when exporting PDF in CODA-W
    
    The PDF export functionality displays a dialog from JavaScript that
    allows the user to choose various PDF parameters. But unlike export to
    other formats, no system file save dialog gets displayed by CODA. So
    do something horrible: Look up a function in CODA.cpp and call it
    directly. Sorry.
    
    Change-Id: I21932b2ba67d3aab72463d51f8ef71182ca5c736

diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index 9580778b3456..2f18ac21a4fb 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -107,6 +107,7 @@
 #include <vcl/abstdlg.hxx>
 
 #ifdef _WIN32
+#include <o3tl/char16_t2wchar_t.hxx>
 #include <Shlobj.h>
 #ifdef GetTempPath
 #undef GetTempPath
@@ -1719,6 +1720,22 @@ bool 
SfxStoringHelper::FinishGUIStoreModel(::comphelper::SequenceAsHashMap::cons
     {
         OUString aFileName;
         aFileNameIter->second >>= aFileName;
+#ifdef _WIN32
+        if (comphelper::LibreOfficeKit::isActive())
+        {
+            // FIXME: Horrible hack. In CODA-W, we didn't actually
+            // display any dialog yet, so call into a function in
+            // CODA.cpp.
+            typedef void (*ofd_t)(const std::wstring& suggestedURI, 
std::string& result);
+            ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), 
"output_file_dialog_from_core");
+            std::string newURI;
+            (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI);
+            if (newURI == "")
+                return false;
+            aFileName = OUString::fromUtf8(newURI.c_str());
+        }
+#endif
+
         aURL.SetURL( aFileName );
         DBG_ASSERT( aURL.GetProtocol() != INetProtocol::NotValid, "Illegal 
URL!" );
 
commit 646ddd85c68e6dcf25a2d254d546ab318feab0cf
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue May 27 10:48:36 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Add some DISABLE_DYNLOADING ifdefs to osl/w32, as for unx
    
    Lots of things will have to be tweaked to build core statically for
    Windows. This is just one small isolated and fairly obvious trivial
    commit. (Assuming that in the disable-dynloading case, for Windows we
    want to ´drop the same dynamic library loading functions in osl as for
    Unixish systems.)
    
    Change-Id: Ica0a00d7a3d5b85e5eb933ebd5722824fbf5deeb

diff --git a/sal/osl/w32/module.cxx b/sal/osl/w32/module.cxx
index 8286f6a095cb..bf42b5c961d6 100644
--- a/sal/osl/w32/module.cxx
+++ b/sal/osl/w32/module.cxx
@@ -32,6 +32,8 @@
 #include <systools/win32/extended_max_path.hxx>
 #include <vector>
 
+#ifndef DISABLE_DYNLOADING
+
 /*
     under WIN32, we use the void* oslModule
     as a WIN32 HANDLE (which is also a 32-bit value)
@@ -104,6 +106,8 @@ oslModule osl_loadModuleRelativeAscii(
     return osl_loadModuleRelative(baseModule, 
OUString::createFromAscii(relativePath).pData, mode);
 }
 
+#endif // !DISABLE_DYNLOADING
+
 sal_Bool SAL_CALL
 osl_getModuleHandle(rtl_uString *pModuleName, oslModule *pResult)
 {
commit 7fd529703fa59cff7a325ec655746db2c9cf79c9
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Mon Nov 24 16:26:02 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Don't use sub-pixel rendering in WASM and CODA-W
    
    We have no knowledge of the sub-pixel order of the display hardware.
    
    Change-Id: I7aee7797d5b4a976b34cc95e93b605cc23039617
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194615
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Meeks <[email protected]>

diff --git a/external/fontconfig/ExternalPackage_fontconfig_data.mk 
b/external/fontconfig/ExternalPackage_fontconfig_data.mk
index 32c81d0c446f..c7837c7ae7eb 100644
--- a/external/fontconfig/ExternalPackage_fontconfig_data.mk
+++ b/external/fontconfig/ExternalPackage_fontconfig_data.mk
@@ -26,7 +26,7 @@ $(eval $(call 
gb_ExternalPackage_add_files,fontconfig_data,$(FONTCONFIG_DATA_FOL
 $(eval $(call 
gb_ExternalPackage_add_unpacked_files,fontconfig_data,$(FONTCONFIG_DATA_FOLDER)/conf.d,\
     conf.d/10-hinting-slight.conf \
     conf.d/10-scale-bitmap-fonts.conf \
-    conf.d/10-sub-pixel-rgb.conf \
+    conf.d/10-sub-pixel-none.conf \
     conf.d/10-yes-antialias.conf \
     conf.d/11-lcdfilter-default.conf \
     conf.d/20-unhint-small-vera.conf \
commit 1eedeb4c503169f4ec296871dcd7bc2b0f347fbe
Author:     Andras Timar <[email protected]>
AuthorDate: Sun Nov 23 00:24:58 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    CODA-W: more tweaks to build config
    
    Change-Id: I1900d19d95e27a9a47ad2c17715ffba5b4eadd99
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194614
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Thorsten Behrens <[email protected]>

diff --git a/configure.ac b/configure.ac
index efdba98664c6..c7d7be668a66 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2260,6 +2260,11 @@ AC_ARG_ENABLE(opencl,
         [Disable OpenCL support.]),
 ,enable_opencl=yes)
 
+AC_ARG_ENABLE(opengl,
+    AS_HELP_STRING([--disable-opengl],
+        [Disable OpenGL support.]),
+,enable_opengl=yes)
+
 libo_FUZZ_ARG_ENABLE(librelogo,
     AS_HELP_STRING([--disable-librelogo],
         [Do not build LibreLogo.]),
@@ -12876,9 +12881,13 @@ AC_SUBST(GSTREAMER_1_0_CFLAGS)
 AC_SUBST(GSTREAMER_1_0_LIBS)
 AC_SUBST(ENABLE_GSTREAMER_1_0)
 
+dnl =================================================
+dnl Check whether to build with OpenGL support.
+dnl =================================================
+
 ENABLE_OPENGL_TRANSITIONS=
 ENABLE_OPENGL_CANVAS=
-if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
+if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE" -o 
"$enable_opengl" != "yes"; then
    : # disable
 elif test "$_os" = "Darwin"; then
     # We use frameworks on macOS, no need for detail checks
diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index bcae85b35ef5..cc27eacc2166 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -11,6 +11,9 @@
 --without-java
 --enable-symbols
 
+# Branding (unused, but...)
+--with-branding=icon-themes/galaxy/brand_cp
+
 # Features
 --disable-breakpad
 --disable-firebird-sdbc
@@ -24,6 +27,7 @@
 --enable-headless
 --enable-mergelibs
 --disable-opencl
+--disable-opengl
 --without-galleries
 
 # Sensible font bundling settings for desktop
@@ -33,7 +37,9 @@
 
 # MPLv2 subset
 --with-theme=colibre
+--disable-mariadb-sdbc
 --disable-postgresql-sdbc
 --disable-lotuswordpro
 --disable-lpsolve
 --disable-poppler
+--disable-gpgmepp
commit 78d5b982bf96f81d3ccd19c2ac4ba45c9c32d8ae
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sat Nov 22 09:31:33 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Don't package conflicting and pointless fontconfig configuration files
    
    For instance, having both 10-no-antialias.conf and
    10-yes-antialias.conf in the same conf.d folder is silly.
    
    Look at what Ubuntu has in /etc/fonts/conf.d and keep only those. Note
    that ExternalPackage_fontconfig_data is used only for WASM and CODA-W
    anyway, so the "local" and "user" ones are surely irrelevant.
    
    Change-Id: I76219eb38675f2e3018d84ab1fc845b1131cc4f5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194613
    Reviewed-by: Thorsten Behrens <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/external/fontconfig/ExternalPackage_fontconfig_data.mk 
b/external/fontconfig/ExternalPackage_fontconfig_data.mk
index 6635932f5144..32c81d0c446f 100644
--- a/external/fontconfig/ExternalPackage_fontconfig_data.mk
+++ b/external/fontconfig/ExternalPackage_fontconfig_data.mk
@@ -24,28 +24,12 @@ $(eval $(call 
gb_ExternalPackage_add_files,fontconfig_data,$(FONTCONFIG_DATA_FOL
 # The list below is created with
 # find workdir/UnpackedTarball/fontconfig/conf.d/ -name "*.conf" | 
LC_COLLATE=C sort | sed -e 's/^/    /' -e 's/$/ \/' -e 
's/workdir\/UnpackedTarball\/fontconfig\///'
 $(eval $(call 
gb_ExternalPackage_add_unpacked_files,fontconfig_data,$(FONTCONFIG_DATA_FOLDER)/conf.d,\
-    conf.d/05-reset-dirs-sample.conf \
-    conf.d/09-autohint-if-no-hinting.conf \
-    conf.d/10-autohint.conf \
-    conf.d/10-hinting-full.conf \
-    conf.d/10-hinting-medium.conf \
-    conf.d/10-hinting-none.conf \
     conf.d/10-hinting-slight.conf \
-    conf.d/10-no-antialias.conf \
     conf.d/10-scale-bitmap-fonts.conf \
-    conf.d/10-sub-pixel-bgr.conf \
-    conf.d/10-sub-pixel-none.conf \
     conf.d/10-sub-pixel-rgb.conf \
-    conf.d/10-sub-pixel-vbgr.conf \
-    conf.d/10-sub-pixel-vrgb.conf \
-    conf.d/10-unhinted.conf \
     conf.d/10-yes-antialias.conf \
     conf.d/11-lcdfilter-default.conf \
-    conf.d/11-lcdfilter-legacy.conf \
-    conf.d/11-lcdfilter-light.conf \
-    conf.d/11-lcdfilter-none.conf \
     conf.d/20-unhint-small-vera.conf \
-    conf.d/25-unhint-nonlatin.conf \
     conf.d/30-metric-aliases.conf \
     conf.d/35-lang-normalize.conf \
     conf.d/40-nonlatin.conf \
@@ -53,18 +37,13 @@ $(eval $(call 
gb_ExternalPackage_add_unpacked_files,fontconfig_data,$(FONTCONFIG
     conf.d/45-latin.conf \
     conf.d/48-spacing.conf \
     conf.d/49-sansserif.conf \
-    conf.d/50-user.conf \
-    conf.d/51-local.conf \
     conf.d/60-generic.conf \
     conf.d/60-latin.conf \
     conf.d/65-fonts-persian.conf \
     conf.d/65-khmer.conf \
     conf.d/65-nonlatin.conf \
     conf.d/69-unifont.conf \
-    conf.d/70-no-bitmaps-and-emoji.conf \
     conf.d/70-no-bitmaps-except-emoji.conf \
-    conf.d/70-no-bitmaps.conf \
-    conf.d/70-yes-bitmaps.conf \
     conf.d/80-delicious.conf \
     conf.d/90-synthetic.conf \
 ))
commit e8c292887c75b72f693d875e77943da8939ebc90
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sat Nov 22 07:52:34 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Package the fonts.conf file and the conf.d folder also for Windows
    
    On Windows, fontconfig looks for fonts.conf in a "fonts" subfolder of
    the folder where DLL is where the fontconfig code lives. Thus in our
    case, the "program" folder.
    
    Change-Id: I2d7ae5ea02c61bd22c2ae9ca19e1138ffd35881e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194612
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Thorsten Behrens <[email protected]>

diff --git a/external/fontconfig/ExternalPackage_fontconfig_data.mk 
b/external/fontconfig/ExternalPackage_fontconfig_data.mk
index e7d78142f456..6635932f5144 100644
--- a/external/fontconfig/ExternalPackage_fontconfig_data.mk
+++ b/external/fontconfig/ExternalPackage_fontconfig_data.mk
@@ -11,13 +11,19 @@ $(eval $(call 
gb_ExternalPackage_ExternalPackage,fontconfig_data,fontconfig))
 
 $(eval $(call 
gb_ExternalPackage_use_external_project,fontconfig_data,fontconfig))
 
-$(eval $(call 
gb_ExternalPackage_add_files,fontconfig_data,$(LIBO_SHARE_FOLDER)/fontconfig,\
+ifeq ($(COM),MSC)
+FONTCONFIG_DATA_FOLDER=$(LIBO_BIN_FOLDER)/fonts
+else
+FONTCONFIG_DATA_FOLDER=$(LIBO_SHARE_FOLDER)/fontconfig
+endif
+
+$(eval $(call 
gb_ExternalPackage_add_files,fontconfig_data,$(FONTCONFIG_DATA_FOLDER),\
     fonts.conf \
 ))
 
 # The list below is created with
 # find workdir/UnpackedTarball/fontconfig/conf.d/ -name "*.conf" | 
LC_COLLATE=C sort | sed -e 's/^/    /' -e 's/$/ \/' -e 
's/workdir\/UnpackedTarball\/fontconfig\///'
-$(eval $(call 
gb_ExternalPackage_add_unpacked_files,fontconfig_data,$(LIBO_SHARE_FOLDER)/fontconfig/conf.d,\
+$(eval $(call 
gb_ExternalPackage_add_unpacked_files,fontconfig_data,$(FONTCONFIG_DATA_FOLDER)/conf.d,\
     conf.d/05-reset-dirs-sample.conf \
     conf.d/09-autohint-if-no-hinting.conf \
     conf.d/10-autohint.conf \
diff --git a/external/fontconfig/Module_fontconfig.mk 
b/external/fontconfig/Module_fontconfig.mk
index b99b954bf827..dba99fde6a50 100644
--- a/external/fontconfig/Module_fontconfig.mk
+++ b/external/fontconfig/Module_fontconfig.mk
@@ -17,6 +17,7 @@ ifeq ($(COM),MSC)
 
 $(eval $(call gb_Module_add_targets,fontconfig,\
        StaticLibrary_fontconfig \
+       ExternalPackage_fontconfig_data \
 ))
 
 else
diff --git a/external/fontconfig/UnpackedTarball_fontconfig.mk 
b/external/fontconfig/UnpackedTarball_fontconfig.mk
index 0fb9557c0db8..1ac569ecf082 100644
--- a/external/fontconfig/UnpackedTarball_fontconfig.mk
+++ b/external/fontconfig/UnpackedTarball_fontconfig.mk
@@ -30,6 +30,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,fontconfig,\
        external/fontconfig/windowsfonts.patch \
 ))
 
+$(eval $(call 
gb_UnpackedTarball_add_file,fontconfig,fonts.conf,external/fontconfig/configs/wnt_fonts.conf))
 $(eval $(call 
gb_UnpackedTarball_add_file,fontconfig,config.h,external/fontconfig/configs/wnt_fontconfig_config.h))
 $(eval $(call 
gb_UnpackedTarball_add_file,fontconfig,fc-case/fccase.h,external/fontconfig/configs/wnt_fontconfig_fccase.h))
 $(eval $(call 
gb_UnpackedTarball_add_file,fontconfig,fc-lang/fclang.h,external/fontconfig/configs/wnt_fontconfig_fclang.h))
diff --git a/external/fontconfig/configs/wnt_fonts.conf 
b/external/fontconfig/configs/wnt_fonts.conf
new file mode 100644
index 000000000000..5dbcff5d2902
--- /dev/null
+++ b/external/fontconfig/configs/wnt_fonts.conf
@@ -0,0 +1,94 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<!-- /etc/fonts/fonts.conf file to configure system font access -->
+<fontconfig>
+       <description>Default configuration file</description>
+
+<!--
+       DO NOT EDIT THIS FILE.
+       IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
+       LOCAL CHANGES BELONG IN 'local.conf'.
+
+       The intent of this standard configuration file is to be adequate for
+       most environments.  If you have a reasonably normal environment and
+       have found problems with this configuration, they are probably
+       things that others will also want fixed.  Please submit any problems
+       to the fontconfig issue tracking system located at fontconfig.org
+
+       Note that the normal 'make install' procedure for fontconfig is to
+       replace any existing fonts.conf file with the new version.  Place
+       any local customizations in local.conf which this file references.
+
+       Keith Packard
+-->
+
+<!-- Font directory list -->
+
+       <dir>WINDOWSFONTDIR</dir>
+
+<!--
+  Accept deprecated 'mono' alias, replacing it with 'monospace'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>mono</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>monospace</string>
+               </edit>
+       </match>
+
+<!--
+  Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans serif</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>sans-serif</string>
+               </edit>
+       </match>
+
+<!--
+  Accept deprecated 'sans' alias, replacing it with 'sans-serif'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>sans-serif</string>
+               </edit>
+       </match>
+<!--
+  Accept alternate 'system ui' spelling, replacing it with 'system-ui'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>system ui</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>system-ui</string>
+               </edit>
+       </match>
+
+<!--
+  Load local system customization file
+-->
+       <include ignore_missing="yes">conf.d</include>
+
+<!-- Font cache directory list -->
+
+       <cachedir>WINDOWSTEMPDIR_FONTCONFIG_CACHE</cachedir>
+
+       <config>
+<!--
+  Rescan configuration every 30 seconds when FcFontSetList is called
+ -->
+               <rescan>
+                       <int>30</int>
+               </rescan>
+       </config>
+
+</fontconfig>
commit c8836ffc637d833a0d4c716c5bb21ce2c14fe545
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sat Nov 22 07:24:39 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    Also log successfully opened fontconfig configuration files on Windows
    
    Change-Id: Idb12ad6c5bee5f72c411ae5df713b0c86330e654
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194611
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Thorsten Behrens <[email protected]>

diff --git a/external/fontconfig/windowsfonts.patch 
b/external/fontconfig/windowsfonts.patch
index 1c390cdc42e3..f1a795a950d8 100644
--- a/external/fontconfig/windowsfonts.patch
+++ b/external/fontconfig/windowsfonts.patch
@@ -85,6 +85,17 @@ well.
            FcConfigMessage (parse, FcSevereError, "SHGetFolderPathA failed");
            goto bail;
        }
+@@ -3169,7 +3169,9 @@
+                            name);
+       ret = FcFalse;
+       goto bail0;
+-    }
++    } else
++        fprintf (stderr, "Fontconfig: Successfully opened directory %s
", dir);
++
+     /* freed below */
+     file = (FcChar8 *)malloc (strlen ((char *)dir) + 1 + FC_MAX_FILE_LEN + 1);
+     if (!file) {
 @@ -3363,9 +3363,6 @@
      FcStrBuf reason;
  
@@ -95,6 +106,16 @@ well.
  
      filename = FcConfigGetFilename (config, name);
      if (!filename) {
+@@ -3407,7 +3407,8 @@
+       FcStrBufString (&reason, (FcChar8 *)"Unable to open ");
+       FcStrBufString (&reason, realfilename);
+       goto bail1;
+-    }
++    } else
++        fprintf (stderr, "Fontconfig: Successfully opened file %s
", realfilename);
+ 
+     do {
+       len = read (fd, buf, BUFSIZ);
 @@ -3488,23 +3488,6 @@
      return FcConfigParseAndLoadFromMemoryInternal (config, (const FcChar8 
*)"memory", buffer, complain, FcTrue);
  }
commit 6b9db8055d818e6190356b14e506504a5f0c4518
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sat Nov 22 05:38:55 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:49 2026 +0100

    No need to look up SHGetFolderPathA dynamically
    
    There was perhaps a good reason for that over 20 years ago when
    fontconfig was initially ported to Windows, but surely not any longer.
    
    Change-Id: I6bbe37e0aaff1c58646fb75ade1ba216668795e0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194610
    Reviewed-by: Thorsten Behrens <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/external/fontconfig/windowsfonts.patch 
b/external/fontconfig/windowsfonts.patch
index f00e371f3098..1c390cdc42e3 100644
--- a/external/fontconfig/windowsfonts.patch
+++ b/external/fontconfig/windowsfonts.patch
@@ -9,19 +9,20 @@ well.
 
 --- src/fcint.h
 +++ src/fcint.h
-@@ -69,9 +69,7 @@
+@@ -69,10 +69,6 @@
  
  #ifdef _WIN32
  #  include "fcwindows.h"
 -typedef UINT (WINAPI *pfnGetSystemWindowsDirectory) (LPSTR, UINT);
- typedef HRESULT (WINAPI *pfnSHGetFolderPathA) (HWND, int, HANDLE, DWORD, 
LPSTR);
+-typedef HRESULT (WINAPI *pfnSHGetFolderPathA) (HWND, int, HANDLE, DWORD, 
LPSTR);
 -extern pfnGetSystemWindowsDirectory pGetSystemWindowsDirectory;
- extern pfnSHGetFolderPathA          pSHGetFolderPathA;
+-extern pfnSHGetFolderPathA          pSHGetFolderPathA;
  #  define FC_SEARCH_PATH_SEPARATOR ';'
  #  define FC_DIR_SEPARATOR         '\'
+ #  define FC_DIR_SEPARATOR_S       "\"
 --- src/fcxml.c
 +++ src/fcxml.c
-@@ -58,8 +58,9 @@
+@@ -58,11 +58,9 @@
  
  #ifdef _WIN32
  #  include <mbstring.h>
@@ -29,10 +30,20 @@ well.
 +#  include <Shlobj.h>
  extern FcChar8               fontconfig_instprefix[];
 -pfnGetSystemWindowsDirectory pGetSystemWindowsDirectory = NULL;
- pfnSHGetFolderPathA          pSHGetFolderPathA = NULL;
- static void
- _ensureWin32GettersReady ();
-@@ -1386,17 +1387,23 @@
+-pfnSHGetFolderPathA          pSHGetFolderPathA = NULL;
+-static void
+-_ensureWin32GettersReady ();
+ #endif
+ 
+ static FcChar8 *__fc_userdir = NULL;
+@@ -1330,23 +1330,29 @@
+       strcat ((char *)path, "\..\share\fonts");
+     } else if (strcmp ((const char *)path, "WINDOWSUSERFONTDIR") == 0) {
+       path = buffer;
+-      if (!(pSHGetFolderPathA && SUCCEEDED (pSHGetFolderPathA (NULL, /* 
CSIDL_LOCAL_APPDATA */ 28, NULL, 0, (char *)buffer)))) {
++      if (!SUCCEEDED (SHGetFolderPathA (NULL, CSIDL_LOCAL_APPDATA, NULL, 0, 
(char *)buffer))) {
+           FcConfigMessage (parse, FcSevereError, "SHGetFolderPathA failed");
+           return NULL;
        }
        strcat ((char *)path, "\Microsoft\Windows\Fonts");
      } else if (strcmp ((const char *)path, "WINDOWSFONTDIR") == 0) {
@@ -65,15 +76,46 @@ well.
      } else {
        if (!prefix) {
            if (!FcStrIsAbsoluteFilename (path) && path[0] != '~')
-@@ -3488,11 +3488,6 @@
- static void
- _ensureWin32GettersReady ()
- {
+@@ -2288,7 +2288,7 @@
+       char   szFPath[MAX_PATH + 1];
+       size_t len;
+ 
+-      if (!(pSHGetFolderPathA && SUCCEEDED (pSHGetFolderPathA (NULL, /* 
CSIDL_LOCAL_APPDATA */ 28, NULL, 0, szFPath)))) {
++      if (!SUCCEEDED (SHGetFolderPathA (NULL, CSIDL_LOCAL_APPDATA, NULL, 0, 
szFPath))) {
+           FcConfigMessage (parse, FcSevereError, "SHGetFolderPathA failed");
+           goto bail;
+       }
+@@ -3363,9 +3363,6 @@
+     FcStrBuf reason;
+ 
+     FcStrBufInit (&reason, NULL, 0);
+-#ifdef _WIN32
+-    _ensureWin32GettersReady();
+-#endif
+ 
+     filename = FcConfigGetFilename (config, name);
+     if (!filename) {
+@@ -3488,23 +3488,6 @@
+     return FcConfigParseAndLoadFromMemoryInternal (config, (const FcChar8 
*)"memory", buffer, complain, FcTrue);
+ }
+ 
+-#ifdef _WIN32
+-static void
+-_ensureWin32GettersReady ()
+-{
 -    if (!pGetSystemWindowsDirectory) {
 -      HMODULE hk32 = GetModuleHandleA ("kernel32.dll");
 -      if (!(pGetSystemWindowsDirectory = 
(pfnGetSystemWindowsDirectory)GetProcAddress (hk32, 
"GetSystemWindowsDirectoryA")))
 -          pGetSystemWindowsDirectory = 
(pfnGetSystemWindowsDirectory)GetWindowsDirectory;
 -    }
-     if (!pSHGetFolderPathA) {
-       HMODULE hSh = LoadLibraryA ("shfolder.dll");
-       /* the check is done later, because there is no provided fallback */
+-    if (!pSHGetFolderPathA) {
+-      HMODULE hSh = LoadLibraryA ("shfolder.dll");
+-      /* the check is done later, because there is no provided fallback */
+-      if (hSh)
+-          pSHGetFolderPathA = (pfnSHGetFolderPathA)GetProcAddress (hSh, 
"SHGetFolderPathA");
+-    }
+-}
+-#endif  // _WIN32
+
+ #define __fcxml__
+ #include "fcaliastail.h"
commit 0493c3f7687ddf9406c7ec46a4ed34ffd5764c57
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sat Nov 22 05:11:32 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    We don't use GetSystemWindowsDirectoryA() any more so don't look it up
    
    Change-Id: Ibafb12bbc1f7c474efae4bc07c3061f172318f70
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194609
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Thorsten Behrens <[email protected]>

diff --git a/external/fontconfig/windowsfonts.patch 
b/external/fontconfig/windowsfonts.patch
index dccad99db916..f00e371f3098 100644
--- a/external/fontconfig/windowsfonts.patch
+++ b/external/fontconfig/windowsfonts.patch
@@ -7,17 +7,31 @@ But probaly fontconfig asumes system codepage for pathnames 
it uses on
 Windows all over the place anyway, so things are really messed up. Oh
 well.
 
+--- src/fcint.h
++++ src/fcint.h
+@@ -69,9 +69,7 @@
+ 
+ #ifdef _WIN32
+ #  include "fcwindows.h"
+-typedef UINT (WINAPI *pfnGetSystemWindowsDirectory) (LPSTR, UINT);
+ typedef HRESULT (WINAPI *pfnSHGetFolderPathA) (HWND, int, HANDLE, DWORD, 
LPSTR);
+-extern pfnGetSystemWindowsDirectory pGetSystemWindowsDirectory;
+ extern pfnSHGetFolderPathA          pSHGetFolderPathA;
+ #  define FC_SEARCH_PATH_SEPARATOR ';'
+ #  define FC_DIR_SEPARATOR         '\'
 --- src/fcxml.c
 +++ src/fcxml.c
-@@ -58,6 +58,8 @@
+@@ -58,8 +58,9 @@
  
  #ifdef _WIN32
  #  include <mbstring.h>
 +#  include <wchar.h>
 +#  include <Shlobj.h>
  extern FcChar8               fontconfig_instprefix[];
- pfnGetSystemWindowsDirectory pGetSystemWindowsDirectory = NULL;
+-pfnGetSystemWindowsDirectory pGetSystemWindowsDirectory = NULL;
  pfnSHGetFolderPathA          pSHGetFolderPathA = NULL;
+ static void
+ _ensureWin32GettersReady ();
 @@ -1386,17 +1387,23 @@
        }
        strcat ((char *)path, "\Microsoft\Windows\Fonts");
@@ -51,3 +65,15 @@ well.
      } else {
        if (!prefix) {
            if (!FcStrIsAbsoluteFilename (path) && path[0] != '~')
+@@ -3488,11 +3488,6 @@
+ static void
+ _ensureWin32GettersReady ()
+ {
+-    if (!pGetSystemWindowsDirectory) {
+-      HMODULE hk32 = GetModuleHandleA ("kernel32.dll");
+-      if (!(pGetSystemWindowsDirectory = 
(pfnGetSystemWindowsDirectory)GetProcAddress (hk32, 
"GetSystemWindowsDirectoryA")))
+-          pGetSystemWindowsDirectory = 
(pfnGetSystemWindowsDirectory)GetWindowsDirectory;
+-    }
+     if (!pSHGetFolderPathA) {
+       HMODULE hSh = LoadLibraryA ("shfolder.dll");
+       /* the check is done later, because there is no provided fallback */
commit 8644a89373e1d3a7d229f6adf6fae37215b24647
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sat Nov 22 00:50:11 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    Make the weird FT_Done_MM_Var() trick in vcl work also on Windows
    
    For Windows we build freetype as a static library. But we must build
    freetype with DLL_EXPORT defined so that symbols like FT_Done_MM_Var
    get exported by the DLL into which the static freetype library is
    linked. That is mergedlo.dll or vcllo.dll.
    
    Then in vcl's dlFT_Done_MM_Var() we can't just call
    osl_getAsciiFunctionSymbol() with a nullptr for the first "module"
    parameter and expect it to look through all modules, like dlsym() does
    on Unixes. On Windows, osl_getAsciiFunctionSymbol() calls
    GetProcAddress(), and passing a NULL first parameter to tht is simply
    invalid. We must look for FT_Done_MM_Var in mergedlo.dll, or if that
    isn't loaded, vcllo.dll.
    
    Possibly it would be simpler to just pretend we don't HAVE_DLAPI in
    this case and call FT_Done_MM_Var() directly.
    
    Without this commit, FT_Done_MM_Var will not be found, so the code
    will just call free() instead of FT_Done_MM_Var(), and if built using
    the debugging C library that will lead to a strange assertion failure
    in the C library. With the non-debugging C library it might perhaps
    lead to some odd bug, or just not do whatever proper deallocation of
    resources or something it is that FT_Done_MM_Var() does.
    
    Change-Id: Ia7b726cc7167ba22ea8f3263ad85f8cd4ac5c483
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194608
    Reviewed-by: Thorsten Behrens <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/external/freetype/StaticLibrary_freetype.mk 
b/external/freetype/StaticLibrary_freetype.mk
index 978a904d62ba..4dc6a3ad634d 100644
--- a/external/freetype/StaticLibrary_freetype.mk
+++ b/external/freetype/StaticLibrary_freetype.mk
@@ -24,6 +24,7 @@ $(eval $(call gb_StaticLibrary_add_defs,freetype,\
        -DDLG_STATIC \
        -DZ_PREFIX \
        -DFT2_BUILD_LIBRARY \
+       -DDLL_EXPORT \
        -DFT_DEBUG_LOGGING \
 ))
 
diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx 
b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
index aa6da15885ff..8ebff2ada0a5 100644
--- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
+++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
@@ -183,9 +183,26 @@ namespace
     {
 #if !HAVE_DLAPI
         FT_Done_MM_Var(library, amaster);
+#else
+#ifdef _WIN32
+        // Unlike on Unixes, we can't pass a NULL module parameter to
+        // osl_getAsciiFunctionSymbol(), i.e. GetProcAddress(), and
+        // have it look through all modules loaded, like dlsym() does.
+        // Instead, we "know" that FT_Done_MM_Var will wither be in
+        // mergedlo.dll or vcllo.dll.
+        void(*func)(FT_Library, FT_MM_Var*) = nullptr;
+        oslModule module;
+        if (osl_getModuleHandle((u"mergedlo.dll"_ustr).pData, &module) ||
+            osl_getModuleHandle((u"vcllo.dll"_ustr).pData, &module))
+            func = reinterpret_cast<void(*)(FT_Library, FT_MM_Var*)>(
+                osl_getAsciiFunctionSymbol(module, "FT_Done_MM_Var"));
+        // If FT_Done_MM_Var is not found, we will crash or something,
+        // at least in a build with the debugging C runtime, as
+        // calling free() below is very wrong, I think.
 #else
         static auto func = reinterpret_cast<void(*)(FT_Library, FT_MM_Var*)>(
             osl_getAsciiFunctionSymbol(nullptr, "FT_Done_MM_Var"));
+#endif
         if (func)
             func(library, amaster);
         else
commit 44e9b90a95fbe4f3472eda5ec4ab6faa3c900238
Author:     Andras Timar <[email protected]>
AuthorDate: Mon Nov 17 12:04:21 2025 +0000
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    CODA-W: update default build config
    
    Change-Id: Ie4942ecd90c92b2651c9cbf144a6c2c3cec7f104
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194607
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index 8900e4013f3b..bcae85b35ef5 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -1,31 +1,39 @@
 # Collabora Online Desktop app for Windows
---disable-breakpad
---disable-firebird-sdbc
---disable-online-update
 
+# Build environment
+--with-visual-studio=2022
+--enable-python=fully-internal
+--without-lxml
 --without-export-validation
---without-helppack-integration
+--disable-ccache
+--disable-pch
+--without-doxygen
 --without-java
---without-junit
+--enable-symbols
 
---with-theme=colibre
+# Features
+--disable-breakpad
+--disable-firebird-sdbc
+--disable-online-update
+--without-helppack-integration
+--disable-avmedia
+--disable-odk
+--disable-skia
+--disable-cli
+--with-myspell-dicts
+--enable-headless
+--enable-mergelibs
+--disable-opencl
+--without-galleries
 
 # Sensible font bundling settings for desktop
 --with-fonts
 --with-docrepair-fonts
 --disable-noto-font
 
---disable-avahi
---disable-avmedia
---disable-compiler-plugins
---disable-cups
---disable-dconf
---disable-kf5
---disable-odk
+# MPLv2 subset
+--with-theme=colibre
+--disable-postgresql-sdbc
+--disable-lotuswordpro
+--disable-lpsolve
 --disable-poppler
---disable-skia
---disable-cli
-
---enable-python=fully-internal
-
-#--disable-dynamic-loading
commit 4ee7640a9b6a4a99e3f597732de09d5da593e707
Author:     Andras Timar <[email protected]>
AuthorDate: Sat Nov 15 09:52:43 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    CODA-M: we want bundled templates (disabled by LOKit config)
    
    Change-Id: Ibe340ce83cc11d89b09a124963831306ebde464b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194606
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/distro-configs/CPMacOS-LOKit.conf 
b/distro-configs/CPMacOS-LOKit.conf
index 36845ebf565d..bea3292fab29 100644
--- a/distro-configs/CPMacOS-LOKit.conf
+++ b/distro-configs/CPMacOS-LOKit.conf
@@ -9,6 +9,7 @@ INCLUDE:CPLinux-LOKit
 --without-package-format
 --enable-gui
 --without-system-dicts
+--with-templates
 
 # Sensible font bundling settings for desktop
 --with-fonts
commit 1d78ab2eb9a1937c2c47454d10a7b2cdd345d8e4
Author:     Andras Timar <[email protected]>
AuthorDate: Wed Nov 12 07:34:35 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    --disable-extensions disables hunspell dictionaries, let's remove it!
    
    Change-Id: I43bd5d0568ff61968ba91b96c0f6f720b97cea8e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194605
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index 06c622f212e4..8900e4013f3b 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -20,7 +20,6 @@
 --disable-compiler-plugins
 --disable-cups
 --disable-dconf
---disable-extensions
 --disable-kf5
 --disable-odk
 --disable-poppler
diff --git a/distro-configs/CPMacOS-LOKit.conf 
b/distro-configs/CPMacOS-LOKit.conf
index c1abc7bf3f52..36845ebf565d 100644
--- a/distro-configs/CPMacOS-LOKit.conf
+++ b/distro-configs/CPMacOS-LOKit.conf
@@ -34,7 +34,6 @@ INCLUDE:CPLinux-LOKit
 --disable-compiler-plugins
 --disable-cups
 --disable-dconf
---disable-extensions
 --disable-kf5
 --disable-odk
 --disable-openssl
commit 1b2797a0f1be03ed0445a3c27c0e6d58bd63d725
Author:     Andras Timar <[email protected]>
AuthorDate: Wed Nov 5 17:15:05 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    CODA-M: add --without-system-dicts to config
    
    We have --with-system-dicts inherited from CPLinux-LOKit.conf
    which is invalid on macOS.
    
    Change-Id: Ieabdc60676c8582741d1bd52b88d5f7e9878875a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194604
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/distro-configs/CPMacOS-LOKit.conf 
b/distro-configs/CPMacOS-LOKit.conf
index 99ef6ad85e1b..c1abc7bf3f52 100644
--- a/distro-configs/CPMacOS-LOKit.conf
+++ b/distro-configs/CPMacOS-LOKit.conf
@@ -8,6 +8,7 @@ INCLUDE:CPLinux-LOKit
 --disable-python
 --without-package-format
 --enable-gui
+--without-system-dicts
 
 # Sensible font bundling settings for desktop
 --with-fonts
commit e5dd6319202921e4d7612c954b70eb659cd660ff
Author:     Andras Timar <[email protected]>
AuthorDate: Mon Nov 3 17:17:43 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    CODA-W: disable CLI; this app is not for .NET automation
    
    Change-Id: I0a2c8df9aac7afc8ec0aa1f6d6b92acd65b05851
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194600
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index 3857b043a99d..06c622f212e4 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -25,6 +25,7 @@
 --disable-odk
 --disable-poppler
 --disable-skia
+--disable-cli
 
 --enable-python=fully-internal
 
commit e0a9efbf8970cf0da17acd7856b1421ff31d233e
Author:     Andras Timar <[email protected]>
AuthorDate: Mon Nov 3 11:17:21 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    CODA: Sensible font bundling settings for desktop
    
    Change-Id: Ic2dc242b653f248516dcdd550ab528c904e3d061
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194599
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index 26e69939490d..3857b043a99d 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -10,6 +10,11 @@
 
 --with-theme=colibre
 
+# Sensible font bundling settings for desktop
+--with-fonts
+--with-docrepair-fonts
+--disable-noto-font
+
 --disable-avahi
 --disable-avmedia
 --disable-compiler-plugins
diff --git a/distro-configs/CPMacOS-LOKit.conf 
b/distro-configs/CPMacOS-LOKit.conf
index 2f9de4cdaa63..99ef6ad85e1b 100644
--- a/distro-configs/CPMacOS-LOKit.conf
+++ b/distro-configs/CPMacOS-LOKit.conf
@@ -9,6 +9,11 @@ INCLUDE:CPLinux-LOKit
 --without-package-format
 --enable-gui
 
+# Sensible font bundling settings for desktop
+--with-fonts
+--with-docrepair-fonts
+--disable-noto-font
+
 # from LibreOfficeiOS (copied only, to avoid the --host setting)
 --disable-breakpad
 --disable-firebird-sdbc
commit 87b54aead9e56daa887e2932d4c5570d7ca58226
Author:     Andras Timar <[email protected]>
AuthorDate: Mon Nov 3 07:48:58 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    CODA: Disable build of Skia on Windows and macOS
    
    It should be implied with LOKit config (--disable-gui), for some
    reason --diable-gui was not added to these configs. It needs
    investigation why. We can still disable Skia, it's unused.
    
    Change-Id: If8700d859593d2c7db4f6dcc6c612a70433cd2c0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194598
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/distro-configs/CODAWindows.conf b/distro-configs/CODAWindows.conf
index 1c4077999a04..26e69939490d 100644
--- a/distro-configs/CODAWindows.conf
+++ b/distro-configs/CODAWindows.conf
@@ -19,6 +19,7 @@
 --disable-kf5
 --disable-odk
 --disable-poppler
+--disable-skia
 
 --enable-python=fully-internal
 
diff --git a/distro-configs/CPMacOS-LOKit.conf 
b/distro-configs/CPMacOS-LOKit.conf
index 0781801d2913..2f9de4cdaa63 100644
--- a/distro-configs/CPMacOS-LOKit.conf
+++ b/distro-configs/CPMacOS-LOKit.conf
@@ -34,5 +34,6 @@ INCLUDE:CPLinux-LOKit
 --disable-openssl
 --disable-poppler
 --disable-python
+--disable-skia
 
 --enable-headless
commit cd9356d5986887829b3e6434a0c22d582ad106e5
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sat Nov 1 23:15:36 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    Make pixman build for Windows on ARM64
    
    Also silence more warnings in pixman and cairo.
    
    Change-Id: Ic00c0ece203a0bdac5407f958c446ac8147093b1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194597
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/external/cairo/Library_cairo.mk b/external/cairo/Library_cairo.mk
index 732162c44b95..e850760ce51d 100644
--- a/external/cairo/Library_cairo.mk
+++ b/external/cairo/Library_cairo.mk
@@ -21,9 +21,19 @@ $(eval $(call gb_Library_set_include,cairo,\
 $(eval $(call gb_Library_add_defs,cairo,\
        -wd4057 \
        -wd4100 \
+       -wd4132 \
        -wd4146 \
+       -wd4200 \
+       -wd4245 \
        -wd4267 \
+       -wd4295 \
+       -wd4456 \
+       -wd4701 \
        -wd4702 \
+       -wd4703 \
+       -wd5294 \
+       -wd5286 \
+       -wd5287 \
 ))
 
 $(eval $(call gb_Library_use_static_libraries,cairo, \
diff --git a/external/cairo/StaticLibrary_pixman.mk 
b/external/cairo/StaticLibrary_pixman.mk
index 0272892a408a..94e998775736 100644
--- a/external/cairo/StaticLibrary_pixman.mk
+++ b/external/cairo/StaticLibrary_pixman.mk
@@ -21,7 +21,16 @@ $(eval $(call gb_StaticLibrary_add_defs,pixman,\
        -DHAVE_CONFIG_H \
        -wd4100 \
        -wd4127 \
+       -wd4132 \
+       -wd4146 \
        -wd4189 \
+       -wd4245 \
+       -wd4267 \
+       -wd4389 \
+       -wd4456 \
+       -wd4457 \
+       -wd4701 \
+       -wd5286 \
 ))
 
 $(eval $(call gb_StaticLibrary_add_generated_cobjects,pixman,\
@@ -48,15 +57,19 @@ $(eval $(call 
gb_StaticLibrary_add_generated_cobjects,pixman,\
                pixman-matrix \
                pixman-mips-dspr2 \
                pixman-mips \
-               pixman-mmx \
+               $(if $(filter-out AARCH64,$(CPUNAME)), \
+                       pixman-mmx \
+               ) \
                pixman-noop \
                pixman-ppc \
                pixman-radial-gradient \
                pixman-region16 \
                pixman-region32 \
                pixman-solid-fill \
-               pixman-sse2 \
-               pixman-ssse3 \
+               $(if $(filter-out AARCH64,$(CPUNAME)), \
+                       pixman-sse2 \
+                       pixman-ssse3 \
+               ) \
                pixman-timer \
                pixman-trap \
                pixman-utils \
diff --git a/external/cairo/configs/wnt_pixman_config.h 
b/external/cairo/configs/wnt_pixman_config.h
index 180a8f93df15..e038a711f4d5 100644
--- a/external/cairo/configs/wnt_pixman_config.h
+++ b/external/cairo/configs/wnt_pixman_config.h
@@ -159,10 +159,14 @@
 /* #undef USE_OPENMP */
 
 /* use SSE2 compiler intrinsics */
+#ifndef _M_ARM64
 #define USE_SSE2 1
+#endif
 
 /* use SSSE3 compiler intrinsics */
+#ifndef _M_ARM64
 #define USE_SSSE3 1
+#endif
 
 /* use VMX compiler intrinsics */
 /* #undef USE_VMX */
commit ef91a1b1679e33d44bb0c7833ef972ac1229bbbc
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Fri Jul 11 16:19:11 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    Clarify that freeError() despite its name is a generic LOKit deallocation 
API
    
    Especially on Windows it is important to not call free() in your own
    code on a pointer returned from some random other dynamic library
    (like the one the desktop/source/lib/init.cxx code goes into). It
    might have been allocated by calling malloc() (etc) in a C runtime
    library that is different from the one used by your code. That will
    lead to a crash.
    
    One should alays call the free() in the same C runtime where the
    malloc() that allocated the pointer is.
    
    Add a wrapper called freeMemory() to the C++ API.
    
    Change-Id: Ibf9cf6fad2c30c4416d2a1f6badbd161c7ba18a6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194594
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index c8e0f759dc98..a19eb9a68a83 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -7711,6 +7711,7 @@ static char* lo_getError (LibreOfficeKit *pThis)
 
 static void lo_freeError(char* pFree)
 {
+    // Do not try to do anything clever here. This should just call free() on 
the pointer.
     free(pFree);
 }
 
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h 
b/include/LibreOfficeKit/LibreOfficeKit.h
index 7860adf3c66b..8d6ec5fa2646 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
@@ -65,6 +65,20 @@ struct _LibreOfficeKitClass
                                                         const char* pURL,
                                                         const char* pOptions);
     /// @since LibreOffice 5.2
+
+    /// The name "freeError" is a historical accident, actually this
+    /// is a generic deallocation function for dynamically allocated
+    /// memory returned by other LibreOfficeKit functions.
+
+    /// Especially on Windows it is important to not call free() in
+    /// your own code on a pointer returned from some random other
+    /// dynamic library (like the one this code goes into) where it
+    /// might have been allocated by calling malloc() (etc) in a C
+    /// runtime library that is different from the one used by your
+    /// code. That will lead to a crash. Alays call the free() in the
+    /// same C runtime where the malloc() that allocated the pointer
+    /// is.
+
     void (*freeError) (char* pFree);
 
     /// @since LibreOffice 6.0
diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx 
b/include/LibreOfficeKit/LibreOfficeKit.hxx
index b6cdd929cb95..77facfb1867f 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.hxx
+++ b/include/LibreOfficeKit/LibreOfficeKit.hxx
@@ -486,6 +486,9 @@ public:
      * e.g. {commandName: ".uno:StyleApply", commandValues: {"familyName1" : 
["list of style names in the family1"], etc.}}
      * @param pCommand a UNO command for which the possible values are 
requested
      * @return {commandName: unoCmd, commandValues: {possible_values}}
+     *
+     * The return value is dynamically allocated and should be
+     * deallocated by calling the lok::Office::freeMemory() function.
      */
     char* getCommandValues(const char* pCommand)
     {
@@ -1009,7 +1012,8 @@ public:
         return new Document(pDoc);
     }
 
-    /// Returns the last error as a string, the returned pointer has to be 
freed by the caller.
+    /// Returns the last error as a string. The returned pointer has to be 
freed by the caller
+    /// by calling the freeError() member function.
     char* getError()
     {
         return mpThis->pClass->getError(mpThis);
@@ -1018,6 +1022,10 @@ public:
     /**
      * Frees the memory pointed to by pFree.
      *
+     * Use on dynamically allocated data returned by LibreOfficeKit
+     * functions. In other cases than the value returned by
+     * getError(), call freeMemory() instead for clarity.
+     *
      * @since LibreOffice 5.2
      */
     void freeError(char* pFree)
@@ -1316,6 +1324,17 @@ public:
     {
         return mpThis->pClass->getDocsCount(mpThis);
     }
+
+    /**
+     * Frees the memory pointed to by pFree.
+     *
+     * Use on dynamically allocated data returned by LibreOfficeKit
+     * functions. Just a wrapper for freeError() with a better name.
+     */
+    void freeMemory(char* pFree)
+    {
+        freeError(pFree);
+    }
 };
 
 /// Factory method to create a lok::Office instance.
commit 9c5d5933973cca86dcfdccfd7e0514d4c3e361be
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue Jul 15 09:23:41 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    Use more obvious macro names
    
    Instead of TARGET_LIB, just call it SOFFICEAPP_LIB, as it is the
    "sofficeapp" dynamic library that it always refers to. And instead of
    TARGET_MERGED_LIB, just call it MERGED_LIB, as that always refers to
    the "mergedlo" dynamic library.
    
    Change-Id: Ic3a8f29cd9b168f064bc2d02f15341b5ea1afef0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194593
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/include/LibreOfficeKit/LibreOfficeKitInit.h 
b/include/LibreOfficeKit/LibreOfficeKitInit.h
index e3b30dbb2615..28cb38cb3657 100644
--- a/include/LibreOfficeKit/LibreOfficeKitInit.h
+++ b/include/LibreOfficeKit/LibreOfficeKitInit.h
@@ -32,15 +32,15 @@
     #include <dlfcn.h>
 
     #ifdef __APPLE__
-        #define TARGET_LIB        "lib" "sofficeapp" ".dylib"
-        #define TARGET_MERGED_LIB "lib" "mergedlo" ".dylib"
+        #define SOFFICEAPP_LIB "libsofficeapp.dylib"
+        #define MERGED_LIB "libmergedlo.dylib"
 
         #if (!defined TARGET_OS_IPHONE || TARGET_OS_IPHONE == 0) && (!defined 
TARGET_OS_OSX || TARGET_OS_OSX == 0)
             #error LibreOfficeKit is not supported on tvOS, visionOS or watchOS
         #endif
     #else
-        #define TARGET_LIB        "lib" "sofficeapp" ".so"
-        #define TARGET_MERGED_LIB "lib" "mergedlo" ".so"
+        #define SOFFICEAPP_LIB "libsofficeapp.so"
+        #define MERGED_LIB "libmergedlo.so"
     #endif
     #define SEPARATOR         '/'
 
@@ -49,11 +49,11 @@
     #if !defined WIN32_LEAN_AND_MEAN
         #define WIN32_LEAN_AND_MEAN
     #endif
-    #include  <windows.h>
-    #define TARGET_LIB        "sofficeapp" ".dll"
-    #define TARGET_MERGED_LIB "mergedlo" ".dll"
-    #define SEPARATOR         '\'
-    #define UNOPATH           "\..\URE\bin"
+    #include <windows.h>
+    #define SOFFICEAPP_LIB "sofficeapp.dll"
+    #define MERGED_LIB "mergedlo.dll"
+    #define SEPARATOR '\'
+    #define UNOPATH "\..\URE\bin"
 
     #undef DELETE
 
@@ -202,7 +202,7 @@ static void *lok_dlopen( const char *install_path, char ** 
_imp_lib )
 
     // allocate large enough buffer
     partial_length = strlen(install_path);
-    imp_lib_size = partial_length + sizeof(TARGET_LIB) + 
sizeof(TARGET_MERGED_LIB) + 2;
+    imp_lib_size = partial_length + sizeof(SOFFICEAPP_LIB) + 
sizeof(MERGED_LIB) + 2;
     imp_lib = (char *) malloc(imp_lib_size);
     if (!imp_lib)
     {
@@ -215,10 +215,10 @@ static void *lok_dlopen( const char *install_path, char 
** _imp_lib )
     extendUnoPath(install_path);
 
     imp_lib[partial_length++] = SEPARATOR;
-    strncpy(imp_lib + partial_length, TARGET_LIB, imp_lib_size - 
partial_length);
+    strncpy(imp_lib + partial_length, SOFFICEAPP_LIB, imp_lib_size - 
partial_length);
 
     struct stat st;
-    // If TARGET_LIB exists but is ridiculously small, it is the
+    // If SOFFICEAPP_LIB exists but is ridiculously small, it is the
     // one-line text stub as in the --enable-mergedlib case.
     if (stat(imp_lib, &st) == 0 && st.st_size > 1000)
     {
@@ -235,7 +235,7 @@ static void *lok_dlopen( const char *install_path, char ** 
_imp_lib )
     }
     else
     {
-        strncpy(imp_lib + partial_length, TARGET_MERGED_LIB, imp_lib_size - 
partial_length);
+        strncpy(imp_lib + partial_length, MERGED_LIB, imp_lib_size - 
partial_length);
 
         dlhandle = lok_loadlib(imp_lib);
         if (!dlhandle)
commit c690bf94a00e88656586207ed060c4a03454807e
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Mon Apr 21 15:14:21 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:48 2026 +0100

    Accept Homebrew pkg-config also on an Intel Macs
    
    On Intel Macs, Homebrew sadly uses the installation prefix /usr/local
    and not /opt/homebrew.
    
    Change-Id: I96a15dc69292799168cb67514b841a977dc353ad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194588
    Reviewed-by: Tomaž Vajngerl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/configure.ac b/configure.ac
index 6c656ec8ac0d..efdba98664c6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7129,7 +7129,9 @@ if test $_os = Darwin; then
     if test -n "$PKG_CONFIG"; then
         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l 
/usr/bin/pkg-config | $GREP -q Mono.framework; then
             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please 
remove or hide $PKG_CONFIG])
-        elif test "$PKG_CONFIG" = "/opt/homebrew/bin/pkg-config"; then
+        elif test `uname -m` = "arm64" -a "$PKG_CONFIG" = 
"/opt/homebrew/bin/pkg-config"; then
+            AC_MSG_RESULT([yes, from Homebrew. This is OK.])
+        elif [[[ `uname -m` == "x86_64" && "$PKG_CONFIG" == 
"/usr/local/bin/pkg-config" && `readlink "$PKG_CONFIG"` == 
../Cellar/pkgconf/*/bin/pkg-config ]]]; then
             AC_MSG_RESULT([yes, from Homebrew. This is OK.])
         else
             if test "$enable_bogus_pkg_config" = "yes"; then
commit 8651eb94428dc0cb40fd70d647d7b253ae44b406
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Mon Jul 14 21:02:29 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:47 2026 +0100

    Don't even try to load a clearly bogus sofficeapp library
    
    If it is smaller than 1000 bytes it can't be real, it must be the
    dummy text file in the --enable-mergelibs case.
    
    Change-Id: Ib3a913830bf34dc1e17955626576e72f5f7cd2d7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194592
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/include/LibreOfficeKit/LibreOfficeKitInit.h 
b/include/LibreOfficeKit/LibreOfficeKitInit.h
index f7fe24475902..e3b30dbb2615 100644
--- a/include/LibreOfficeKit/LibreOfficeKitInit.h
+++ b/include/LibreOfficeKit/LibreOfficeKitInit.h
@@ -217,15 +217,13 @@ static void *lok_dlopen( const char *install_path, char 
** _imp_lib )
     imp_lib[partial_length++] = SEPARATOR;
     strncpy(imp_lib + partial_length, TARGET_LIB, imp_lib_size - 
partial_length);
 
-    dlhandle = lok_loadlib(imp_lib);
-    if (!dlhandle)
+    struct stat st;
+    // If TARGET_LIB exists but is ridiculously small, it is the
+    // one-line text stub as in the --enable-mergedlib case.
+    if (stat(imp_lib, &st) == 0 && st.st_size > 1000)
     {
-        // If TARGET_LIB exists, and likely is a real library (not a
-        // small one-line text stub as in the --enable-mergedlib
-        // case), but dlopen failed for some reason, don't try
-        // TARGET_MERGED_LIB.
-        struct stat st;
-        if (stat(imp_lib, &st) == 0 && st.st_size > 100)
+        dlhandle = lok_loadlib(imp_lib);
+        if (!dlhandle)
         {
             char *pErrMessage = lok_dlerror();
             fprintf(stderr, "failed to open library '%s': %s
",
@@ -234,7 +232,9 @@ static void *lok_dlopen( const char *install_path, char ** 
_imp_lib )
             free(imp_lib);
             return NULL;
         }
-
+    }
+    else
+    {
         strncpy(imp_lib + partial_length, TARGET_MERGED_LIB, imp_lib_size - 
partial_length);
 
         dlhandle = lok_loadlib(imp_lib);
commit d6508db9567b63190f28a4d217eb03ba8b281e79
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Mon Jul 14 11:31:05 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:47 2026 +0100

    Make avmediawin conditional on AVMEDIA
    
    Change-Id: I2cdec861d840d5987a70c26fd1b61ba1f39f0a30
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194591
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/solenv/gbuild/extensions/pre_MergedLibsList.mk 
b/solenv/gbuild/extensions/pre_MergedLibsList.mk
index b16cc2ddcccc..2c4e2c68e2b7 100644
--- a/solenv/gbuild/extensions/pre_MergedLibsList.mk
+++ b/solenv/gbuild/extensions/pre_MergedLibsList.mk
@@ -10,7 +10,9 @@
 # we link all object files from these libraries into one, merged library
 gb_MERGE_LIBRARY_LIST := \
        avmedia \
-       $(if $(filter WNT,$(OS)),avmediawin) \
+       $(call gb_Helper_optional,AVMEDIA, \
+               $(if $(filter WNT,$(OS)),avmediawin) \
+       ) \
        $(call gb_Helper_optional,SCRIPTING, \
                basctl \
                basprov \
commit f5f1b89744c417ffd80de32df739d3c9f69913be
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Mon Jan 20 09:37:08 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:47 2026 +0100

    _FORTIFY_SOURCE has a meaning only in glibc
    
    Change-Id: Ia087324841e4019d414d5ae3c845e80c7a7d1b73
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194566
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/configure.ac b/configure.ac
index 2d9294aa82b4..6c656ec8ac0d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7894,17 +7894,19 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
         [AC_MSG_RESULT([no])])
     CFLAGS=$save_CFLAGS
 
-    AC_MSG_CHECKING([whether $CC_BASE supports -D_FORTIFY_SOURCE=2])
-    save_CFLAGS=$CFLAGS
-    CFLAGS="$CFLAGS -Werror -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"
-    if test "$ENABLE_OPTIMIZED" = TRUE; then
-        CFLAGS="$CFLAGS -O2"
+    if test "$_os" = "Linux"; then
+        AC_MSG_CHECKING([whether $CC_BASE supports -D_FORTIFY_SOURCE=2])
+        save_CFLAGS=$CFLAGS
+        CFLAGS="$CFLAGS -Werror -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"
+        if test "$ENABLE_OPTIMIZED" = TRUE; then
+            CFLAGS="$CFLAGS -O2"
+        fi
+        AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM([[#include <string.h>]], [[return 0;]])],
+            [AC_MSG_RESULT([yes]); HARDENING_OPT_CFLAGS="$HARDENING_OPT_CFLAGS 
-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"],
+            [AC_MSG_RESULT([no])])
+        CFLAGS=$save_CFLAGS
     fi
-    AC_LINK_IFELSE(
-        [AC_LANG_PROGRAM([[#include <string.h>]], [[return 0;]])],
-        [AC_MSG_RESULT([yes]); HARDENING_OPT_CFLAGS="$HARDENING_OPT_CFLAGS 
-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"],
-        [AC_MSG_RESULT([no])])
-    CFLAGS=$save_CFLAGS
 
     AC_MSG_CHECKING([whether $CC_BASE supports -D_GLIBCXX_ASSERTIONS])
     save_CFLAGS=$CFLAGS
commit f20611c2589a518d55b7825271abc05e2403d757
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Mon Apr 14 18:54:35 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:47 2026 +0100

    Make the fontconfig Windows patch apply to fontconfig 2.16.1
    
    Note that this patch is for now just a start of work that is paused
    for now. The handling of non-ASCII filenames in the external libraries
    that in the CODA case are now used also on Windows is likely very
    broken, and needs to be carefully checked and modified. The new
    <tools/UnixWrappers.h> thing, with additional work, will probably be
    used.
    
    Change-Id: I30cb09747a8de8716608669a75c872b73812b3f0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194587
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/external/fontconfig/windowsfonts.patch 
b/external/fontconfig/windowsfonts.patch
index feaaf80937c5..dccad99db916 100644
--- a/external/fontconfig/windowsfonts.patch
+++ b/external/fontconfig/windowsfonts.patch
@@ -12,37 +12,35 @@ well.
 @@ -58,6 +58,8 @@
  
  #ifdef _WIN32
- #include <mbstring.h>
-+#include <wchar.h>
-+#include <Shlobj.h>
- extern FcChar8 fontconfig_instprefix[];
+ #  include <mbstring.h>
++#  include <wchar.h>
++#  include <Shlobj.h>
+ extern FcChar8               fontconfig_instprefix[];
  pfnGetSystemWindowsDirectory pGetSystemWindowsDirectory = NULL;
- pfnSHGetFolderPathA pSHGetFolderPathA = NULL;
-@@ -1386,18 +1387,25 @@
-     }
-     else if (strcmp ((const char *) path, "WINDOWSFONTDIR") == 0)
-     {
+ pfnSHGetFolderPathA          pSHGetFolderPathA = NULL;
+@@ -1386,17 +1387,23 @@
+       }
+       strcat ((char *)path, "\Microsoft\Windows\Fonts");
+     } else if (strcmp ((const char *)path, "WINDOWSFONTDIR") == 0) {
 -      int rc;
 -      path = buffer;
 -      _ensureWin32GettersReady();
--      rc = pGetSystemWindowsDirectory ((LPSTR) buffer, sizeof (buffer) - 20);
--      if (rc == 0 || rc > sizeof (buffer) - 20)
+-      rc = pGetSystemWindowsDirectory ((LPSTR)buffer, sizeof (buffer) - 20);
+-      if (rc == 0 || rc > sizeof (buffer) - 20) {
 +      wchar_t *wpath;
 +      int size_needed;
 +      
-+      if (!SUCCEEDED(SHGetKnownFolderPath(&FOLDERID_Fonts, 0, NULL, &wpath)))
-       {
++      if (!SUCCEEDED(SHGetKnownFolderPath(&FOLDERID_Fonts, 0, NULL, &wpath))) 
{
 -          FcConfigMessage (parse, FcSevereError, "GetSystemWindowsDirectory 
failed");
 +          FcConfigMessage (parse, FcSevereError, "SHGetKnownFolderPath for 
FOLDERID_Fonts failed");
            return NULL;
        }
--      if (path [strlen ((const char *) path) - 1] != '\')
--          strcat ((char *) path, "\");
--      strcat ((char *) path, "fonts");
+-      if (path[strlen ((const char *)path) - 1] != '\')
+-          strcat ((char *)path, "\");
+-      strcat ((char *)path, "fonts");
 +      /* We assume that the code using fontconfig handles UTF-8 strings and 
not system codepage */
 +      size_needed = WideCharToMultiByte (CP_UTF8, 0, wpath, wcslen(wpath), 
NULL, 0, NULL, NULL);
-+      if (size_needed <= 0 || size_needed > sizeof(buffer))
-+      {
++      if (size_needed <= 0 || size_needed > sizeof(buffer)) {
 +          FcConfigMessage (parse, FcSevereError, "WideCharToMultiByte 
failed");
 +          CoTaskMemFree (wpath);
 +          return NULL;
@@ -50,6 +48,6 @@ well.
 +      path = buffer;
 +      WideCharToMultiByte(CP_UTF8, 0, wpath, wcslen(wpath), path, 
size_needed, NULL, NULL);
 +      CoTaskMemFree (wpath);
-     }
-     else
-     {
+     } else {
+       if (!prefix) {
+           if (!FcStrIsAbsoluteFilename (path) && path[0] != '~')
commit bc1b5f6079d82ef5b1aaa5505a26b1b8903d8d8e
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue Apr 8 16:58:59 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:47 2026 +0100

    Add --enable-msvc-debug-runtime to use that even without dbgutil
    
    Adapt libxml2 build accordingly. It's MSVC_USE_DEBUG_RUNTIME we should
    check to see whether the ICU libraries have a 'd' suffix in their
    names, not ENABLE_DBGUTIL.
    
    Change-Id: Ic817e3c15e7164478ae557627047d3793e3a88c7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194584
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/configure.ac b/configure.ac
index 8253b3f95f9e..2d9294aa82b4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1732,6 +1732,12 @@ AC_ARG_ENABLE(avahi,
         [Determines whether to use Avahi to advertise Impress to remote 
controls.])
 )
 
+AC_ARG_ENABLE(msvc-debug-runtime,
+    AS_HELP_STRING([--enable-msvc-debug-runtime],
+        [Determines whether to use the Microsoft Visual Studio debugging 
runtime.
+         Automatically turned on by --enable-dbgutil but not by 
--enable-debug])
+)
+
 AC_ARG_ENABLE(msvc-analyze,
     AS_HELP_STRING([--enable-msvc-analyze],
         [Determines whether to enable the Microsoft Visual Studio /analyze 
flag to provide additional warnings.])
@@ -5013,7 +5019,11 @@ if test -n "$enable_dbgutil" -a "$enable_dbgutil" != 
"no"; then
     fi
 else
     ENABLE_DBGUTIL=""
-    MSVC_USE_DEBUG_RUNTIME=""
+    if test "$enable_msvc_debug_runtime" = "yes"; then
+        MSVC_USE_DEBUG_RUNTIME="TRUE"
+    else
+        MSVC_USE_DEBUG_RUNTIME=""
+    fi
     AC_MSG_RESULT([no])
 fi
 AC_SUBST(ENABLE_DBGUTIL)
diff --git a/external/libxml2/ExternalProject_libxml2.mk 
b/external/libxml2/ExternalProject_libxml2.mk
index 26005343d24a..e42cc4797477 100644
--- a/external/libxml2/ExternalProject_libxml2.mk
+++ b/external/libxml2/ExternalProject_libxml2.mk
@@ -27,7 +27,7 @@ $(call gb_ExternalProject_get_state_target,libxml2,build):
        $(call gb_ExternalProject_run,build,\
                cscript /e:javascript configure.js \
                        iconv=no icu=yes sax1=yes $(if 
$(MSVC_USE_DEBUG_RUNTIME),cruntime=/MDd) \
-                       $(if $(filter TRUE,$(ENABLE_DBGUTIL)),debug=yes) \
+                       $(if $(filter 
TRUE,$(MSVC_USE_DEBUG_RUNTIME)),debug=yes) \
                && nmake \
        ,win32)
        $(call gb_Trace_EndRange,libxml2,EXTERNAL)
commit 9be879b5b545e1d6c61e0d8019414f4a483c42b6
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue Apr 1 11:16:59 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:47 2026 +0100

    Add some missing gb_StaticLibrary_use_unpacked calls
    
    I had missed that such are needed, which explains why I had had to
    manually hand-hold the build of those externals. (These are built as
    static libraries, for now, only for CODA-W.)
    
    Change-Id: Ib19ed82e0ab443b7ddfab254ed5754efd013bdf1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194583
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/external/cairo/StaticLibrary_pixman.mk 
b/external/cairo/StaticLibrary_pixman.mk
index 7b52c0dab0c1..0272892a408a 100644
--- a/external/cairo/StaticLibrary_pixman.mk
+++ b/external/cairo/StaticLibrary_pixman.mk
@@ -9,6 +9,8 @@
 
 $(eval $(call gb_StaticLibrary_StaticLibrary,pixman))
 
+$(eval $(call gb_StaticLibrary_use_unpacked,pixman,cairo))
+
 $(eval $(call gb_StaticLibrary_set_include,pixman,\
        -I$(gb_UnpackedTarball_workdir)/pixman \
        -I$(gb_UnpackedTarball_workdir)/pixman/pixman \
diff --git a/external/fontconfig/StaticLibrary_fontconfig.mk 
b/external/fontconfig/StaticLibrary_fontconfig.mk
index 963e30a5b3cd..7ad137a7808f 100644
--- a/external/fontconfig/StaticLibrary_fontconfig.mk
+++ b/external/fontconfig/StaticLibrary_fontconfig.mk
@@ -11,6 +11,8 @@
 
 $(eval $(call gb_StaticLibrary_StaticLibrary,fontconfig))
 
+$(eval $(call gb_StaticLibrary_use_unpacked,fontconfig,fontconfig))
+
 $(eval $(call gb_StaticLibrary_set_include,fontconfig,\
        -I$(gb_UnpackedTarball_workdir)/fontconfig \
        -I$(gb_UnpackedTarball_workdir)/freetype/include \
diff --git a/external/freetype/StaticLibrary_freetype.mk 
b/external/freetype/StaticLibrary_freetype.mk
index c76f8613ef69..978a904d62ba 100644
--- a/external/freetype/StaticLibrary_freetype.mk
+++ b/external/freetype/StaticLibrary_freetype.mk
@@ -11,6 +11,8 @@
 
 $(eval $(call gb_StaticLibrary_StaticLibrary,freetype))
 
+$(eval $(call gb_StaticLibrary_use_unpacked,freetype,freetype))
+
 $(eval $(call gb_StaticLibrary_set_include,freetype,\
        -I$(gb_UnpackedTarball_workdir)/freetype/include \
        $$(INCLUDE) \
commit a6a3c761054f7eb306d645a895c996d9fc1a722f
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Mon Mar 31 09:01:48 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Jan 5 16:25:47 2026 +0100

    We seem to need postprocess_fontconfig also for CODA-W, for make check
    
    In that case, USE_HEADLESS_CODE will be non-empty, even if USING_X11
    and DISABLE_GUI are empty.
    
    Change-Id: I553407737395789acef2380e0b1edb824bbcbad8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194582
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/postprocess/Module_postprocess.mk 
b/postprocess/Module_postprocess.mk
index 56ecd75db150..79643e086bc4 100644
--- a/postprocess/Module_postprocess.mk
+++ b/postprocess/Module_postprocess.mk
@@ -41,7 +41,7 @@ $(eval $(call gb_Module_add_l10n_targets,postprocess,\
 # contain content from at least one of external/more_fonts/fc_local.snippet
 # (conditional on MORE_FONTS in BUILD_TYPE) and
 # extras/source/truetype/symbol/fc_local.snippet (unconditional):
-ifneq ($(USING_X11)$(DISABLE_GUI)$(filter ANDROID EMSCRIPTEN,$(OS)),)
+ifneq ($(USE_HEADLESS_CODE)$(USING_X11)$(DISABLE_GUI)$(filter ANDROID 
EMSCRIPTEN,$(OS)),)
 $(eval $(call gb_Module_add_targets,postprocess, \
     CustomTarget_fontconfig \
     Package_fontconfig \
commit e763d5148886f62db3e4d531c7584b6aae75355a
Author:     Tor Lillqvist <[email protected]>
-e 
... etc. - the rest is truncated

Reply via email to