Building LO against x11-less GTK

  • kernel 6.14.6
  • gnome-shell 48.1 (Wayland)
  • mutter 48.2 (-Dxwayland=false -Dx11=false)
  • gtk3 3.24.49 (-Dx11-backend=false)
  • gtk4 4.18.5 (-Dx11-backend=false)
  • libreoffice 25.3.2

In a native Wayland environment, with GTK3/4 both built without libx11, LO compilation bails at:

[build CXX] vcl/unx/gtk3/a11y/atkregistry.cxx
In file included from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkframe.hxx:51,
                 from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk3/a11y/atkfactory.cxx:20:
/build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkdata.hxx:28:10: fatal error: gdk/gdkx.h: No such file or directory
   28 | #include <gdk/gdkx.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [/build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/gbuild/LinkTarget.mk:339: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CxxObject/vcl/unx/gtk3/a11y/atkfactory.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:301: build] Error 2
==> ERROR: A failure occurred in build().
    Aborting...


I poked around the configuration and tried to brute force disabling x11, but ran into other issues.

--- a/configure.ac
+++ b/configure.ac
@@ -977,7 +977,7 @@
 
 linux-gnu*|k*bsd*-gnu*|linux-musl*)
     using_freetype_fontconfig=yes
-    using_x11=yes
+    using_x11=no
     build_skia=yes
     test_gdb_index=yes
     test_split_debug=yes


Eventually, this combo of options got me though compilation, but failed at the install portion of build:

Running './configure --with-extra-buildid=25.2.3-3.1 --with-vendor=Arch Linux --enable-split-app-modules --with-parallelism=24 --with-external-tar=/build/libreoffice-fresh/src/ext_sources --disable-fetch-external --enable-release-build --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --mandir=/usr/share/man --with-lang= --with-help=html --disable-avahi --enable-dbus --enable-evolution2 --enable-gio --disable-gtk3-kde5 --disable-kf5 --disable-kf6 --disable-qt5 --disable-qt6 --enable-gtk3 --enable-gtk4 --enable-lto --enable-openssl --enable-odk --enable-python=system --enable-scripting-beanshell --enable-scripting-javascript --disable-dconf --disable-report-builder --enable-ext-wiki-publisher --enable-ext-nlpsolver --without-fonts --with-system-libxml --with-system-libcdr --with-system-mdds --without-myspell-dicts --with-system-libvisio --with-system-libcmis --with-system-libmspub --with-system-libexttextcat --with-system-orcus --with-system-liblangtag --with-system-libodfgen --with-system-libmwaw --with-system-libetonyek --with-system-libfreehand --without-system-firebird --with-system-zxing --with-system-libtommath --with-system-libatomic-ops --with-system-libebook --with-system-libabw --with-system-coinmp --with-system-dicts --with-external-dict-dir=/usr/share/hunspell --with-external-hyph-dir=/usr/share/hyphen --with-external-thes-dir=/usr/share/mythes --with-system-beanshell --with-system-cppunit --with-system-graphite --with-system-glm --with-system-libnumbertext --with-system-libwpg --with-system-libwps --with-system-redland --with-system-libzmf --with-system-gpgmepp --with-system-libstaroffice --with-jdk-home=/usr/lib/jvm/default --with-ant-home=/usr/share/ant --with-system-boost --with-system-icu --with-system-cairo --with-system-libs --with-system-mythes --with-system-headers --without-system-hsqldb --without-junit --with-system-clucene --without-system-box2d --without-system-dragonbox --without-system-libfixmath --without-system-frozen --without-system-zxcvbn --without-system-java-websocket --with-system-rhino --with-gdrive-client-id=413772536636.apps.googleusercontent.com --with-gdrive-client-secret=0ZChLK6AxeA3Isu96MkwqDR4 --disable-dependency-tracking --srcdir=/build/libreoffice-fresh/src/libreoffice-25.2.3.2 --enable-option-checking=fatal'

: Setting Root Module: gid_Module_Root
: Using spellchecker file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/setup_native/source/packinfo/spellchecker_selection.txt 
: Collected spellchecker languages for spellchecker: en,es,fr 
: 
: *****************************************************************
: ERROR: The following files could not be found:
:   desktop_soffice_sh.filelist
:  at /build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/bin/modules/installer/scriptitems.pm line 1191.
: *****************************************************************

Tue May 13 13:59:59 2025 (00:01 min.)
Failed to install: No such file or directory at /build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/bin/ooinstall line 94.
make: *** [Makefile:359: install] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

Tail of the fail:

Click here to expand
: SUCCESS: INSTDIR Source for services.rdb: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/instdir/./program/services/services.rdb
: 
: ERROR: Removing file desktop_soffice_sh.filelist from file list.
: 
: 
: Removing directory /tmp/ooopackaging5EoVYC/i_1015491747144798
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Command line arguments:
: ######################################################
: -f
: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/instsetoo_native/util/openoffice.lst
: -l
: en-US
: -p
: LibreOffice
: -u
: /tmp
: -buildid
: 2
: -destdir
: /build/libreoffice-fresh/src/fakeinstall
: -simple
: /build/libreoffice-fresh/src/fakeinstall/usr/lib/libreoffice
: Separator: /
: 
: ########################################################
: Product list file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/instsetoo_native/util/openoffice.lst
: Taking setup script from workdir
: Unpackpath: /tmp
: PLATFORMID: linux_x86_64
: OS: LINUX
: CPUNAME: X86_64
: COM: GCC
: Product: LibreOffice
: BuildID: 2
: Build: 2520
: Product version
: Installpath: /usr/lib/libreoffice
: Package format: 
: Not calling epm
: No file stripping
: Unzip ARCHIVE files
: Languages:
: 	en-US
: ########################################################
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: zip list file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/instsetoo_native/util/openoffice.lst
: ######################################################
: Value of $installer::globals::addsystemintegration: 1
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Reading all directories: Start
: ######################################################
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/InstallScriptTarget contains 2 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/readlicense_oo/readme contains 1 files (including subdirs)
: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/sysui/{pkgtype} does not exist. (Can be removed from include path list?)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/setup_native contains 3 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/PackageSet contains 39 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/GeneratedPackage contains 8 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/Package contains 388 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/ExtensionPackage contains 1 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/helpcontent2/help3xsl/filelists contains 9 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/Extension contains 87 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/readlicense_oo/license contains 2 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/setup_native/source/packinfo contains 23 files (including subdirs)
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Reading all directories: End
: ######################################################
: 
: Including inc file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/cli_ure/version/version.txt 
: Setting of variable: CLI_URETYPES_NEW_VERSION = 1.0.9.0
: Setting of variable: CLI_URETYPES_OLD_VERSION = 1.0.0.0-1.0.8.0
: Setting of variable: CLI_URETYPES_POLICY_VERSION = 9.0.0.0
: Setting of variable: CLI_URETYPES_POLICY_ASSEMBLY = policy.1.0.cli_uretypes
: Setting of variable: CLI_BASETYPES_NEW_VERSION = 1.0.20.0
: Setting of variable: CLI_BASETYPES_OLD_VERSION = 1.0.0.0-1.0.19.0
: Setting of variable: CLI_BASETYPES_POLICY_VERSION = 20.0.0.0
: Setting of variable: CLI_BASETYPES_POLICY_ASSEMBLY = policy.1.0.cli_basetypes
: Setting of variable: CLI_URE_NEW_VERSION = 1.0.23.0
: Setting of variable: CLI_URE_OLD_VERSION = 1.0.0.0-1.0.22.0
: Setting of variable: CLI_URE_POLICY_VERSION = 23.0.0.0
: Setting of variable: CLI_URE_POLICY_ASSEMBLY = policy.1.0.cli_ure
: Setting of variable: CLI_CPPUHELPER_NEW_VERSION = 1.0.23.0
: Setting of variable: CLI_CPPUHELPER_OLD_VERSION = 1.0.0.0-1.0.22.0
: Setting of variable: CLI_CPPUHELPER_POLICY_VERSION = 23.0.0.0
: Setting of variable: CLI_CPPUHELPER_POLICY_ASSEMBLY = policy.1.0.cli_cppuhelper
: Including inc file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/unoil/climaker/version.txt 
: Setting of variable: CLI_OOOTYPES_NEW_VERSION = 1.0.9.0
: Setting of variable: CLI_OOOTYPES_OLD_VERSION = 1.0.0.0-1.0.8.0
: Setting of variable: CLI_OOOTYPES_POLICY_VERSION = 9.0.0.0
: Setting of variable: CLI_OOOTYPES_POLICY_ASSEMBLY = policy.1.0.cli_oootypes
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: setup script file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/InstallScriptTarget/setup_osl.ins
: ######################################################
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Replacing variables in setup script (start)
: ######################################################
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Replacing variables in setup script (end)
: ######################################################
: 
: Logging variable settings:
: WITHOUTDOTUNIXPACKAGENAME=libreoffice
: REGISTRYLAYERNAME=Layers
: CLI_URE_POLICY_VERSION=23.0.0.0
: ADDSYSTEMINTEGRATION=1
: CLI_URETYPES_POLICY_VERSION=9.0.0.0
: UPDATE_DATABASE=1
: SXWFORMATNAME=OpenOffice.org
: UPDATE_DATABASE_LISTNAME=finals_instsetoo.txt
: CLI_CPPUHELPER_POLICY_VERSION=23.0.0.0
: MANUFACTURER=Arch Linux
: BASISPACKAGEPREFIX=libobasis
: PACKAGEVERSION=25.2.3.2
: UNIXPRODUCTNAME=libreoffice
: PROGRESSBARCOLOR=0,0,0
: PACKAGEREVISION=2
: PROGRESSTEXTCOLOR=0,0,0
: PROGRESSTEXTBASELINE=170
: REFERENCEOOOMAJORMINOR=4.1
: HIDELICENSEDIALOG=1
: LCONEWORDPRODUCTNAME=libreoffice
: DEFAULTDESTPATH=/opt
: PRODUCTVERSION=25.2
: PROGRESSSIZEHIGH=650,12
: PATCHCODEFILE=ooo_patchcodes.txt
: LIBO_VERSION_MAJOR=25
: PROGRESSFRAMECOLOR=102,102,102
: MASKEDPRODUCTNAME=LibreOffice
: SOLARISBRANDPACKAGENAME=libreoffice
: UREPACKAGEPREFIX=libreoffice
: WINDOWSBASISROOTNAME=LibreOffice
: SYSTEMINTUNIXPACKAGENAME=libreoffice
: PCPFILENAME=libreoffice.pcp
: CLI_BASETYPES_NEW_VERSION=1.0.20.0
: SERVICEPACK=1
: CLI_OOOTYPES_POLICY_VERSION=9.0.0.0
: WINDOWSSDKVERSION=
: USERDIRPRODUCTVERSION=4
: UNIXBASISROOTNAME=libreoffice25.2
: CLI_URE_OLD_VERSION=1.0.0.0-1.0.22.0
: CLI_URETYPES_POLICY_ASSEMBLY=policy.1.0.cli_uretypes
: SPELLCHECKERFILE=spellchecker_selection.txt
: SXWFORMATVERSION=1.1
: ADD_INCLUDE_FILES=cli_ure/version/version.txt,unoil/climaker/version.txt
: BRANDPACKAGEVERSION=25.2
: NATIVEPROGRESS=false
: UNIXPACKAGENAME=libreoffice
: PRODUCTMAJOR=520
: WINDOWSPATCHLEVEL=8
: ROOTMODULEGID=gid_Module_Root
: WITHOUTDOTPRODUCTVERSION=252
: PRODUCTEXTENSION=.3.2
: PRODUCTNAME=LibreOffice
: UREPACKAGEVERSION=25.2.3.2
: BASEPRODUCTVERSION=25.2
: CLI_URE_NEW_VERSION=1.0.23.0
: CLI_CPPUHELPER_OLD_VERSION=1.0.0.0-1.0.22.0
: LCPRODUCTNAME=libreoffice
: GLOBALPATCHFILEGID=gid_File_Txt_Patchfiles
: PRODUCTBUILDID=2
: SOLSUREPACKAGEPREFIX=libreoffice
: CLI_URE_POLICY_ASSEMBLY=policy.1.0.cli_ure
: UPDATEURL=https://update.libreoffice.org/check.php
: CHANGETARGETDIR=1
: PRODUCTADDON=
: PROGRESSPOSITIONHIGH=30,200
: CLI_OOOTYPES_POLICY_ASSEMBLY=policy.1.0.cli_oootypes
: UPDATEFOR=${UPDATEFOR}
: STYLES=(KEEP_OLD_VERSION)
: CLI_OOOTYPES_OLD_VERSION=1.0.0.0-1.0.8.0
: CLI_OOOTYPES_NEW_VERSION=1.0.9.0
: PATCHLEVEL=
: ONEWORDPRODUCTNAME=LibreOffice
: BUNDLEIDENTIFIER=
: CLI_BASETYPES_OLD_VERSION=1.0.0.0-1.0.19.0
: PROGRESSPOSITION=30,145
: CLI_CPPUHELPER_POLICY_ASSEMBLY=policy.1.0.cli_cppuhelper
: CLI_CPPUHELPER_NEW_VERSION=1.0.23.0
: PACKAGEPREFIX=
: LCPRODUCTEXTENSION=.3.2
: CLI_BASETYPES_POLICY_VERSION=20.0.0.0
: CLI_URETYPES_OLD_VERSION=1.0.0.0-1.0.8.0
: CLI_URETYPES_NEW_VERSION=1.0.9.0
: WITHOUTDOTUNIXPRODUCTNAME=libreoffice
: CLI_BASETYPES_POLICY_ASSEMBLY=policy.1.0.cli_basetypes
: LICENSENAME=LGPL
: PROGRESSSIZE=385,8
: POSTVERSIONEXTENSION=
: 64BITPRODUCT=
: CRASHDUMPENABLE=true
: PACKAGEMAP=package_names.txt,package_names_ext.txt
: URELAYERVERSION=1
: 
: 
: 
: Setting Root Module: gid_Module_Root
: Using spellchecker file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/setup_native/source/packinfo/spellchecker_selection.txt 
: Collected spellchecker languages for spellchecker: en,es,fr 
: 
: *****************************************************************
: ERROR: The following files could not be found:
:   desktop_soffice_sh.filelist
:  at /build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/bin/modules/installer/scriptitems.pm line 1191.
: *****************************************************************

Tue May 13 13:59:59 2025 (00:01 min.)
Failed to install: No such file or directory at /build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/bin/ooinstall line 94.
make: *** [Makefile:359: install] Error 2
==> ERROR: A failure occurred in build().
    Aborting...


Happy to provide a full build log.

I likely just need the right combination of options, but I’m unfamiliar with this build.

And the failure when building only against x11-less GTK4:

        --disable-gtk3-kde5 \
        --disable-kf5 \
        --disable-kf6 \
        --disable-qt5 \
        --disable-qt6 \
        --disable-gtk3 \
        --enable-gtk4 \
[build CXX] vcl/unx/gtk4/a11y.cxx
[build CXX] vcl/unx/gtk4/convert3to4.cxx
In file included from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/fpicker/../../gtk3/fpicker/SalGtkFilePicker.cxx:38,
                 from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/fpicker/SalGtkFilePicker.cxx:10:
/build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkdata.hxx:26:10: fatal error: gdk/x11/gdkx.h: No such file or directory
   26 | #include <gdk/x11/gdkx.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [/build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/gbuild/LinkTarget.mk:339: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CxxObject/vcl/unx/gtk4/fpicker/SalGtkFilePicker.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/fpicker/../../gtk3/fpicker/SalGtkPicker.cxx:32,
                 from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/fpicker/SalGtkPicker.cxx:10:
/build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkdata.hxx:26:10: fatal error: gdk/x11/gdkx.h: No such file or directory
   26 | #include <gdk/x11/gdkx.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [/build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/gbuild/LinkTarget.mk:336: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CxxObject/vcl/unx/gtk4/fpicker/SalGtkPicker.o] Error 1
In file included from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkframe.hxx:51,
                 from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/a11y.cxx:18:
/build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkdata.hxx:26:10: fatal error: gdk/x11/gdkx.h: No such file or directory
   26 | #include <gdk/x11/gdkx.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [/build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/gbuild/LinkTarget.mk:336: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CxxObject/vcl/unx/gtk4/a11y.o] Error 1
make: *** [Makefile:301: build] Error 2
==> ERROR: A failure occurred in build().
    Aborting...


Also, it seems --without-x && enable-gtk3 are mutually exclusive?

But, that’s what I’m trying to achieve here. Any guidance would be appreciated.

in this highly compartimentalized LO-verse, your question rather belongs to dev@ → Development - The Document Foundation Wiki

If you need help getting started, contact us:

Okay, thanks. I didn’t want to annoy any devs with what might be a simple compilation mistake.

If gtk-11 usage is limited to this quick grep result…

inc/unx/saldisp.hxx:    // this is an equivalent of gdk_x11_get_server_time()
inc/unx/gtk/gtkframe.hxx:#include <gtk/gtkx.h>
inc/unx/gtk/gtkinst.hxx:class SalGtkXWindow final : public weld::TransportAsXWindow
inc/unx/gtk/gtkinst.hxx:    SalGtkXWindow(weld::Window* pWeldWidget, GtkWidget* pWidget)
inc/unx/gtk/gtkdata.hxx:#include <gdk/x11/gdkx.h>
inc/unx/gtk/gtkdata.hxx:#include <gdk/gdkx.h>
inc/unx/gtk/gtkbackend.hxx:#include <gdk/x11/gdkx.h>
inc/unx/gtk/gtkbackend.hxx:#include <gdk/gdkx.h>
unx/gtk3/gtkdata.cxx:            MAP_BUILTIN( PointerStyle::Text, GDK_XTERM, "text" );
unx/gtk3/gtkdata.cxx:        gdk_x11_display_error_trap_push(pGdkDisp);
unx/gtk3/gtkdata.cxx:            gdk_x11_display_error_trap_pop_ignored(pGdkDisp); // faster
unx/gtk3/gtkdata.cxx:        return gdk_x11_display_error_trap_pop(pGdkDisp) != 0;
unx/gtk3/gtksys.cxx:    GdkX11Screen *pScreen = gdk_x11_display_get_screen(mpDisplay);
unx/gtk3/gtksys.cxx:    return SalX11Screen(gdk_x11_screen_get_screen_number(pScreen));
unx/gtk3/gtksys.cxx:        GdkMonitor* pPrimary = gdk_x11_display_get_primary_monitor(mpDisplay);
unx/gtk3/gtkframe.cxx:#   define gdk_x11_surface_get_xid gdk_x11_window_get_xid
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_ID", "org.libreoffice" );
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_MENUBAR_OBJECT_PATH", aDBusMenubarPath );
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_WINDOW_OBJECT_PATH", aDBusWindowPath );
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_OBJECT_PATH", "/org/libreoffice" );
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_UNIQUE_BUS_NAME", g_dbus_connection_get_unique_name( pSessionBus ) );
unx/gtk3/gtkframe.cxx:        m_aSystemData.pDisplay = gdk_x11_display_get_xdisplay(pDisplay);
unx/gtk3/gtkframe.cxx:        m_aSystemData.pVisual = gdk_x11_visual_get_xvisual(pVisual);
unx/gtk3/gtkframe.cxx:    m_pForeignTopLevel = gdk_x11_window_foreign_new_for_display( getGdkDisplay(), m_aForeignTopLevelWindow );
unx/gtk3/gtkframe.cxx:    m_pForeignParent = gdk_x11_window_foreign_new_for_display( getGdkDisplay(), m_aForeignParentWindow );
unx/gtk3/gtkframe.cxx:    Display *display = gdk_x11_display_get_xdisplay(getGdkDisplay());
unx/gtk3/gtkframe.cxx:        aDisplay = gdk_x11_display_get_xdisplay(getGdkDisplay());
unx/gtk3/gtkframe.cxx:            nTimestamp = gdk_x11_display_get_user_time(pDisplay);
unx/gtk3/gtkframe.cxx:        return gdk_x11_surface_get_xid(pSurface);
unx/gtk3/fpicker/SalGtkFilePicker.cxx:        if (SalGtkXWindow* pGtkXWindow = dynamic_cast<SalGtkXWindow*>(xParentWindow.get()))
unx/gtk3/fpicker/SalGtkFilePicker.cxx:            pParentWidget = pGtkXWindow->getGtkWidget();
unx/gtk3/gtkobject.cxx:        m_aSystemData.pDisplay = gdk_x11_display_get_xdisplay(pDisplay);
unx/gtk3/gtkobject.cxx:        m_aSystemData.pVisual = gdk_x11_visual_get_xvisual(pVisual);
unx/gtk3/gtkinst.cxx:            aPollFD.fd = ConnectionNumber(gdk_x11_display_get_xdisplay(pDisplay));
unx/gtk3/gtkinst.cxx:    static auto get_type = reinterpret_cast<GType (*) (void)>(dlsym(nullptr, "gdk_x11_display_get_type"));
unx/gtk3/gtkinst.cxx:    rtl::Reference<SalGtkXWindow> m_xWindow; //uno api
unx/gtk3/gtkinst.cxx:            m_xWindow.set(new SalGtkXWindow(this, m_pWidget));
unx/gtk3/gtkinst.cxx:    if (SalGtkXWindow* pGtkXWindow = dynamic_cast<SalGtkXWindow*>(rWindow.get()))
unx/gtk3/gtkinst.cxx:        return pGtkXWindow->getFrameWeld();


… I can probably code around it.

I was able to hack and slash my way through.

Successfully built and running against X11-less builds of GTK3 and GTK4.

As git master has the same relevant code as the stable branch, I’ll file an issue to support this configuration.

Hi, I’d also like to build libreoffice X11-less.
What did you modify to build it? Did you file the issue as you said?
Thanks.

I filed an issue regarding the build failure:

https://bugs.documentfoundation.org/show_bug.cgi?id=167463