[Libreoffice-commits] core.git: Branch 'private/thb/wasm-upstreaming' - 326 commits - accessibility/inc accessibility/Library_acc.mk accessibility/source android/source animations/source autogen.sh avmedia/source basctl/source basic/qa basic/source binaryurp/source bin/convwatch.py bin/run bin/ui-checkdomain.sh bridges/Module_bridges.mk bridges/source canvas/Library_directx9canvas.mk canvas/Library_gdipluscanvas.mk canvas/Module_canvas.mk canvas/source canvas/StaticLibrary_directxcanvas.mk chart2/Module_chart2.mk chart2/qa chart2/source chart2/uiconfig codemaker/source comphelper/CppunitTest_comphelper_test.mk comphelper/Library_comphelper.mk comphelper/qa comphelper/source compilerplugins/clang config_host.mk.in configmgr/source configure.ac connectivity/inc connectivity/source cppcanvas/source cppuhelper/source cppu/Module_cppu.mk cppu/qa cppu/source cpputools/Module_cpputools.mk cui/inc cui/Library_cui.mk cui/source cui/uiconfig dbaccess/Module_dbaccess.mk dbaccess/qa dbaccess/source desktop/E xecutable_oosplash.mk desktop/inc desktop/Library_sofficeapp.mk desktop/Module_desktop.mk desktop/source distro-configs/LibreOfficeWASM32.conf download.lst drawinglayer/README.md drawinglayer/source editeng/inc editeng/qa editeng/source embeddedobj/source emfio/qa emfio/source extensions/Module_extensions.mk extensions/source external/apr external/boost external/breakpad external/cairo external/coinmp external/cppunit external/curl external/epm external/expat external/firebird external/fontconfig external/freetype external/gpgmepp external/harfbuzz external/hunspell external/hyphen external/icu external/lcms2 external/libabw external/libassuan external/libatomic_ops external/libcdr external/libebook external/libeot external/libepubgen external/libetonyek external/libexttextcat external/libffi external/libfreehand external/libgpg-error external/libjpeg-turbo external/liblangtag external/libmspub external/libmwaw external/libnumbertext external/libodfgen external/liborcus external/lib pagemaker external/libqxp external/librevenge external/libstaroffice external/libvisio external/libwpd external/libwpg external/libwps external/libxml2 external/libxslt external/libzmf external/more_fonts external/mythes external/neon external/openldap external/openssl external/poppler external/postgresql external/python3 external/redland external/serf external/xmlsec external/zxing extras/Package_gallsystemstr.mk extras/source filter/qa filter/source forms/source formula/source fpicker/source framework/inc framework/source .git-hooks/pre-commit .gitignore helpcontent2 i18nlangtag/source i18npool/Library_i18npool.mk i18npool/source i18nutil/source icon-themes/karasa_jaga icon-themes/karasa_jaga_svg icon-themes/sifr icon-themes/sifr_dark icon-themes/sifr_dark_svg icon-themes/sifr_svg idlc/Module_idlc.mk idlc/source idl/source include/basic include/codemaker include/comphelper include/connectivity include/cppuhelper include/cui include/dbaccess include/drawinglayer include/editeng inc lude/framework include/LibreOfficeKit include/linguistic include/oox include/osl include/sal include/sfx2 include/svl include/svtools include/svx include/toolkit include/tools include/ucbhelper include/unoidl include/unotools include/vcl include/xmloff include/xmlreader io/source linguistic/source lotuswordpro/source Makefile.gbuild Makefile.in nlpsolver/src offapi/com offapi/UnoApi_offapi.mk officecfg/registry oox/inc oox/source package/source postprocess/Rdb_services.mk readlicense_oo/license README.md README.wasm registry/Module_registry.mk reportbuilder/java reportdesign/source RepositoryExternal.mk RepositoryFixes.mk Repository.mk RepositoryModule_host.mk sal/Library_cppunitmain.mk sal/Library_sal.mk sal/Library_sal_textenc.mk sal/Module_sal.mk sal/osl sal/qa sal/util sax/source sccomp/Module_sccomp.mk schema/libreoffice sc/inc sc/Library_scui.mk sc/Module_sc.mk scp2/source sc/qa scripting/Module_scripting.mk scripting/source sc/sdi sc/source sc/uiconfig sdext/source sd/inc sd/ Library_sdui.mk sd/qa sd/source sd/uiconfig setup_native/source sfx2/inc sfx2/sdi sfx2/source sfx2/uiconfig shell/Module_shell.mk shell/source slideshow/source solenv/bin solenv/clang-format solenv/CompilerTest_compilerplugins_clang.mk solenv/flatpak-manifest.in solenv/gbuild solenv/gdb sot/source starmath/inc starmath/qa starmath/source starmath/uiconfig static/CustomTarget_components.mk static/Library_components.mk static/Makefile static/Module_static.mk static/README stoc/source svgio/CppunitTest_svgio_tools.mk svgio/inc svgio/Library_svgio.mk svgio/Module_svgio.mk svgio/qa svgio/source svl/Library_svl.mk svl/source svtools/source svx/inc svx/Library_svx.mk svx/qa svx/sdi svx/source svx/util sw/CppunitTest_sw_apitests.mk sw/CppunitTest_sw_macros_test.mk sw/CppunitTest_sw_uwriter.mk sw/inc sw/Library_swui.mk sw/Module_sw.mk sw/qa sw/sdi sw/source sw/uiconfig sw/UITest_sw_ui_index.mk sysui/desktop test/Module_test.mk testtools/source toolkit/inc toolkit/source tools/qa tools/source translations ucbhelper/source ucb/source uitest/uitest UnoControls/inc UnoControls/source unoidl/Executable_unoidl-read.mk unoidl/source unotest/Module_unotest.mk unotest/source unotools/source unoxml/inc unoxml/source vcl/Executable_ui-previewer.mk vcl/Executable_vcldemo.mk vcl/headless vcl/inc vcl/ios vcl/jsdialog vcl/Library_vcl.mk vcl/Library_vclplug_gen.mk vcl/Library_vclplug_gtk3_kde5.mk vcl/Library_vclplug_gtk3.mk vcl/Library_vclplug_kf5.mk vcl/Library_vclplug_osx.mk vcl/Library_vclplug_qt5.mk vcl/Library_vclplug_win.mk vcl/Module_vcl.mk vcl/osx vcl/qa vcl/qt5 vcl/quartz vcl/skia vcl/source vcl/unx vcl/wasm vcl/win wasm-qt/CustomTarget_wasm-qt5-mandelbrot_moc.mk wasm-qt/Executable_wasm-qt5-mandelbrot.mk wasm-qt/Makefile wasm-qt/Module_wasm-qt.mk wasm-qt/README wasm-qt/source wizards/com wizards/source writerfilter/source writerperfect/Module_writerperfect.mk writerperfect/source xmlhelp/source xmloff/inc xmloff/source xmlscript/source xmlsecurity/inc xmlsecurity/Library_xmls ecurity.mk xmlsecurity/Library_xsec_xmlsec.mk xmlsecurity/Module_xmlsecurity.mk xmlsecurity/source

Armin Le Grand (Allotropia) (via logerrit) logerrit at kemper.freedesktop.org
Wed May 5 21:18:56 UTC 2021


Rebased ref, commits from common ancestor:
commit 5d81d48cfd6d436e77ffa732440119723c3054a3
Author:     Armin Le Grand (Allotropia) <Armin.Le.Grand at me.com>
AuthorDate: Sat May 1 15:21:00 2021 +0200
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:44:09 2021 +0200

    Remove RecoveryCore
    
    Change-Id: I523ff4db762589e6fe57a736c32cdbfb2b102157

diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index 61d9d39066c7..1f1c820cd4f2 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -85,6 +85,7 @@ $(eval $(call gb_Library_use_externals,svx,\
 
 ifneq ($(ENABLE_WASM_STRIP),TRUE)
 $(eval $(call gb_Library_add_exception_objects,svx,\
+    svx/source/dialog/docrecovery \
     svx/source/unodraw/recoveryui \
 ))
 endif
@@ -133,7 +134,6 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
     svx/source/dialog/dialcontrol \
     svx/source/dialog/dlgctl3d \
     svx/source/dialog/dlgctrl \
-    svx/source/dialog/docrecovery \
     svx/source/dialog/fntctrl \
     svx/source/dialog/fontwork \
     svx/source/dialog/frmdirlbox \
commit 7ddc75826d244987d185f9126a9cbde73996c415
Author:     Armin Le Grand (Allotropia) <Armin.Le.Grand at me.com>
AuthorDate: Sat May 1 14:03:32 2021 +0200
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:44:09 2021 +0200

    Remove RecoveryUI, correct spl stuff
    
    Also removed components, learned a lot about
    doing so, corrected spl stuff.
    Also had to take a deep look at static linking
    mechanism/native-code.py
    
    Change-Id: I3ff9b29feba93f011f8699f6ae3f6e39061f9e81

diff --git a/Repository.mk b/Repository.mk
index 558cb3be3ed0..95235d879a4d 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -417,7 +417,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
 	slideshow \
 	sot \
 	spell \
-	$(if $(DISABLE_GUI) || $(ENABLE_WASM_STRIP),,spl) \
+	$(if $(or $(DISABLE_GUI),$(ENABLE_WASM_STRIP)),,spl) \
 	storagefd \
 	$(call gb_Helper_optional,SCRIPTING,stringresource) \
 	svgio \
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index a76e6f80cb1b..af383bad1626 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -957,6 +957,7 @@ struct RefClearGuard
     @param  bEmergencySave
             differs between EMERGENCY_SAVE and RECOVERY
 */
+#ifndef ENABLE_WASM_STRIP
 bool impl_callRecoveryUI(bool bEmergencySave     ,
                          bool bExistsRecoveryData)
 {
@@ -988,6 +989,7 @@ bool impl_callRecoveryUI(bool bEmergencySave     ,
     aRet >>= bRet;
     return bRet;
 }
+#endif
 
 bool impl_bringToFrontRecoveryUI()
 {
@@ -1137,9 +1139,11 @@ void Desktop::Exception(ExceptionCategory nCategory)
         // Save all open documents so they will be reopened
         // the next time the application is started
         // returns true if at least one document could be saved...
+#ifndef ENABLE_WASM_STRIP
         bRestart = impl_callRecoveryUI(
                         true , // force emergency save
                         false);
+#endif
     }
 
     FlushConfiguration();
@@ -2007,6 +2011,7 @@ void Desktop::OpenClients()
 
         impl_checkRecoveryState(bCrashed, bExistsRecoveryData, bExistsSessionData);
 
+#ifndef ENABLE_WASM_STRIP
         if ( !bDisableRecovery &&
             (
                 bExistsRecoveryData || // => crash with files    => recovery
@@ -2025,6 +2030,7 @@ void Desktop::OpenClients()
                 TOOLS_WARN_EXCEPTION( "desktop.app", "Error during recovery");
             }
         }
+#endif
 
         Reference< XSessionManagerListener2 > xSessionListener;
         try
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index c30199ec0234..2bc78aebb12f 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -271,7 +271,7 @@ $(eval $(call gb_Rdb_add_components,services,\
 	desktop/source/migration/services/migrationoo2 \
 	desktop/source/migration/services/migrationoo3 \
 	desktop/source/offacc/offacc \
-	$(if $(DISABLE_GUI) || $(ENABLE_WASM_STRIP),,desktop/source/splash/spl) \
+	$(if $(or $(DISABLE_GUI),$(ENABLE_WASM_STRIP)),,desktop/source/splash/spl) \
 	$(if $(ENABLE_LDAP),extensions/source/config/ldap/ldapbe2) \
 	$(if $(filter WNT,$(OS)),\
 		extensions/source/config/WinUserInfo/WinUserInfoBe \
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index 20526f3db8ba..bcddaf566b46 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -819,7 +819,7 @@ desktop_constructor_list = [
     "com_sun_star_comp_svx_Impl_FindbarDispatcher_get_implementation",
     "com_sun_star_comp_svx_LineSpacingToolBoxControl_get_implementation",
     "com_sun_star_comp_svx_NumberingToolBoxControl_get_implementation",
-    "com_sun_star_comp_svx_RecoveryUI_get_implementation",
+    ("com_sun_star_comp_svx_RecoveryUI_get_implementation", "#ifndef ENABLE_WASM_STRIP"),
     "com_sun_star_comp_svx_StyleToolBoxControl_get_implementation",
     "com_sun_star_comp_svx_TableToolBoxControl_get_implementation",
     "com_sun_star_comp_svx_TableToolBoxControl_get_implementation",
diff --git a/solenv/gbuild/extensions/pre_MergedLibsList.mk b/solenv/gbuild/extensions/pre_MergedLibsList.mk
index 12fd14edf522..81c1d97ff283 100644
--- a/solenv/gbuild/extensions/pre_MergedLibsList.mk
+++ b/solenv/gbuild/extensions/pre_MergedLibsList.mk
@@ -70,7 +70,7 @@ MERGE_LIBRARY_LIST := \
 	sofficeapp \
 	sot \
 	spell \
-	$(if $(DISABLE_GUI),,spl) \
+	$(if $(or $(DISABLE_GUI),$(ENABLE_WASM_STRIP)),,spl) \
 	srtrs1 \
 	$(call gb_Helper_optional,SCRIPTING,stringresource) \
 	svgio \
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index c951d91169f3..61d9d39066c7 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -21,6 +21,10 @@ $(eval $(call gb_Library_Library,svx))
 
 $(eval $(call gb_Library_set_componentfile,svx,svx/util/svx))
 
+ifneq ($(ENABLE_WASM_STRIP),TRUE)
+$(eval $(call gb_Library_set_componentfile,svx,svx/util/svx.extended))
+endif
+
 $(eval $(call gb_Library_set_include,svx,\
     -I$(SRCDIR)/svx/inc \
     -I$(SRCDIR)/svx/source/inc \
@@ -79,6 +83,12 @@ $(eval $(call gb_Library_use_externals,svx,\
 	icu_headers \
 ))
 
+ifneq ($(ENABLE_WASM_STRIP),TRUE)
+$(eval $(call gb_Library_add_exception_objects,svx,\
+    svx/source/unodraw/recoveryui \
+))
+endif
+
 $(eval $(call gb_Library_add_exception_objects,svx,\
     svx/source/accessibility/AccessibleControlShape \
     svx/source/accessibility/AccessibleEmptyEditSource \
@@ -242,7 +252,6 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
     svx/source/tbxctrls/tbxdrctl \
     svx/source/tbxctrls/verttexttbxctrl \
     svx/source/uitest/uiobject \
-    svx/source/unodraw/recoveryui \
     svx/source/unodraw/unoctabl \
     svx/source/unodraw/UnoNamespaceMap \
     svx/source/unodraw/unopool \
diff --git a/svx/util/svx.component b/svx/util/svx.component
index ff8d802394ac..262e9d6b9bc9 100644
--- a/svx/util/svx.component
+++ b/svx/util/svx.component
@@ -28,10 +28,6 @@
     <service name="com.sun.star.comp.svx.FindbarDispatcher"/>
     <service name="com.sun.star.frame.ProtocolHandler"/>
   </implementation>
-  <implementation name="com.sun.star.comp.svx.RecoveryUI"
-      constructor="com_sun_star_comp_svx_RecoveryUI_get_implementation">
-    <service name="com.sun.star.dialog.RecoveryUI"/>
-  </implementation>
   <implementation name="com.sun.star.comp.svx.CrashReportUI"
       constructor="com_sun_star_comp_svx_CrashReportUI_get_implementation">
     <service name="com.sun.star.dialog.CrashReportUI"/>
diff --git a/svx/util/svx.extended.component b/svx/util/svx.extended.component
new file mode 100644
index 000000000000..fe07d346be18
--- /dev/null
+++ b/svx/util/svx.extended.component
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ -->
+
+<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
+    xmlns="http://openoffice.org/2010/uno-components">
+  <implementation name="com.sun.star.comp.svx.RecoveryUI"
+      constructor="com_sun_star_comp_svx_RecoveryUI_get_implementation">
+    <service name="com.sun.star.dialog.RecoveryUI"/>
+  </implementation>
+</component>
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 9d1f869c1467..cd463613b4d6 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -149,7 +149,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/source/window/dockwin \
     vcl/source/window/event \
     vcl/source/window/floatwin \
-    vcl/source/window/introwin \
+    $(if $(ENABLE_WASM_STRIP),,vcl/source/window/introwin) \
     vcl/source/window/keycod \
     vcl/source/window/keyevent \
     vcl/source/window/layout \
commit c9760700b03c11d133964e84ec647fb9d7a507d3
Author:     Armin Le Grand (Allotropia) <Armin.Le.Grand at me.com>
AuthorDate: Fri Apr 30 17:26:41 2021 +0200
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:44:08 2021 +0200

    SplashScreen and Startup
    
    SplashScreens spl.lib removed, services no longer register
    to UNO services (services.rdb)
    Startup uses hard-coded flags "-nolockcheck -norestore -nologo
    -writer"
    
    Change-Id: I276f8775176e750e56f76b66aece2169bada3652

diff --git a/Repository.mk b/Repository.mk
index 84c3aff700c7..558cb3be3ed0 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -417,7 +417,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
 	slideshow \
 	sot \
 	spell \
-	$(if $(DISABLE_GUI),,spl) \
+	$(if $(DISABLE_GUI) || $(ENABLE_WASM_STRIP),,spl) \
 	storagefd \
 	$(call gb_Helper_optional,SCRIPTING,stringresource) \
 	svgio \
diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx
index e2ecf5920aa0..ba9d6eafaa63 100644
--- a/desktop/inc/app.hxx
+++ b/desktop/inc/app.hxx
@@ -142,8 +142,10 @@ class Desktop final : public Application
         static OUString         CreateErrorMsgString( utl::Bootstrap::FailureCode nFailureCode,
                                                       const OUString& aFileURL );
 
+#ifndef ENABLE_WASM_STRIP
         css::uno::Reference<css::task::XStatusIndicator> m_rSplashScreen;
         void                    OpenSplashScreen();
+#endif
         void                    CloseSplashScreen();
 
         DECL_STATIC_LINK( Desktop, ImplInitFilterHdl, ::ConvertData&, bool );
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index b0c4fac53e10..a76e6f80cb1b 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -1153,8 +1153,10 @@ void Desktop::Exception(ExceptionCategory nCategory)
             osl_removeSignalHandler( pSignalHandler );
 
         restartOnMac(false);
+#ifndef ENABLE_WASM_STRIP
         if ( m_rSplashScreen.is() )
             m_rSplashScreen->reset();
+#endif
 
         _exit( EXITHELPER_CRASH_WITH_RESTART );
     }
@@ -1257,7 +1259,9 @@ int Desktop::Main()
     Translate::SetReadStringHook(ReplaceStringHookProc);
 
     // Startup screen
+#ifndef ENABLE_WASM_STRIP
     OpenSplashScreen();
+#endif
 
     SetSplashScreenProgress(10);
 
@@ -1697,8 +1701,10 @@ int Desktop::doShutdown()
     if ( bRR )
     {
         restartOnMac(true);
+#ifndef ENABLE_WASM_STRIP
         if ( m_rSplashScreen.is() )
             m_rSplashScreen->reset();
+#endif
 
         return EXITHELPER_NORMAL_RESTART;
     }
@@ -2377,6 +2383,7 @@ void Desktop::HandleAppEvent( const ApplicationEvent& rAppEvent )
     }
 }
 
+#ifndef ENABLE_WASM_STRIP
 void Desktop::OpenSplashScreen()
 {
     const CommandLineArgs &rCmdLine = GetCommandLineArgs();
@@ -2426,33 +2433,39 @@ void Desktop::OpenSplashScreen()
 
     if(m_rSplashScreen.is())
             m_rSplashScreen->start("SplashScreen", 100);
-
 }
+#endif
 
 void Desktop::SetSplashScreenProgress(sal_Int32 iProgress)
 {
+#ifndef ENABLE_WASM_STRIP
     if(m_rSplashScreen.is())
     {
         m_rSplashScreen->setValue(iProgress);
     }
+#endif
 }
 
 void Desktop::SetSplashScreenText( const OUString& rText )
 {
+#ifndef ENABLE_WASM_STRIP
     if( m_rSplashScreen.is() )
     {
         m_rSplashScreen->setText( rText );
     }
+#endif
 }
 
 void Desktop::CloseSplashScreen()
 {
+#ifndef ENABLE_WASM_STRIP
     if(m_rSplashScreen.is())
     {
         SolarMutexGuard ensureSolarMutex;
         m_rSplashScreen->end();
         m_rSplashScreen = nullptr;
     }
+#endif
 }
 
 
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
index 4d5a3bb78396..6c64502e9d38 100644
--- a/desktop/source/app/cmdlineargs.cxx
+++ b/desktop/source/app/cmdlineargs.cxx
@@ -275,6 +275,26 @@ CommandLineArgs::CommandLineArgs( Supplier& supplier )
 
 void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
 {
+#ifdef ENABLE_WASM_STRIP
+    // use hard-coded init-params for wasm '-nolockcheck -norestore -nologo -writer'
+    // no restore tries
+    m_norestore = true;
+    // no logo needed
+    m_nologo = true;
+#if HAVE_FEATURE_MULTIUSER_ENVIRONMENT
+    // no lock-checks needed
+    m_nolockcheck = true;
+#endif
+    // start with writer only
+    m_writer = true;
+    m_bDocumentArgs = true;
+
+    m_bEmpty = false;
+
+    // return to avoid #elif
+    return;
+#endif
+
     m_cwdUrl = supplier.getCwdUrl();
     CommandLineEvent eCurrentEvent = CommandLineEvent::Open;
 
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index ddfb22a84ae5..c30199ec0234 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -271,7 +271,7 @@ $(eval $(call gb_Rdb_add_components,services,\
 	desktop/source/migration/services/migrationoo2 \
 	desktop/source/migration/services/migrationoo3 \
 	desktop/source/offacc/offacc \
-	$(if $(DISABLE_GUI),,desktop/source/splash/spl) \
+	$(if $(DISABLE_GUI) || $(ENABLE_WASM_STRIP),,desktop/source/splash/spl) \
 	$(if $(ENABLE_LDAP),extensions/source/config/ldap/ldapbe2) \
 	$(if $(filter WNT,$(OS)),\
 		extensions/source/config/WinUserInfo/WinUserInfoBe \
commit 27bbfcc1de69409d9878ec4940c81c41a64cc962
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Thu Mar 25 13:13:53 2021 +0100
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:44:06 2021 +0200

    Hack Windows static build stuff
    
    Change-Id: Ied05b72e95fceb47881f080d2b10eca29dfce73f

diff --git a/configure.ac b/configure.ac
index 5b89993046da..62aca8b1fad2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3724,7 +3724,7 @@ fi
 
 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
     # To allow building Windows multi-arch releases without cross-tooling
-    if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
+    if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" -o -n "$DISABLE_DYNLOADING"; then
         cross_compiling="yes"
     fi
 fi
@@ -5579,8 +5579,23 @@ if test "$USING_X11" != TRUE; then
     test_qt5=no
     test_gtk3_kde5=no
     enable_cairo_canvas=no
+    test_gtk3_kde5=no
+    if test "$DISABLE_DYNLOADING" = "TRUE" -a "$OS" != "WNT"; then
+        enable_cairo_canvas=yes
+        test_qt5=yes
+        enable_qt5=yes
+    else
+        enable_cairo_canvas=no
+        test_qt5=no
+    fi
 fi
 
+if test "$OS" = "EMSCRIPTEN"; then
+    test_qt5=yes
+    enable_cairo_canvas=yes
+    enable_qt5=yes
+sfi
+
 if test "$OS" = "HAIKU"; then
     enable_cairo_canvas=yes
     test_kf5=yes
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 1bc2c22e1b1c..9d1f869c1467 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -775,7 +775,7 @@ endif
 ifeq ($(OS),WNT)
 $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/source/opengl/win/WinDeviceInfo \
-    vcl/source/app/salplug \
+    $(if $(DISABLE_DYNLOADING),vcl/wasm/salplug,vcl/source/app/salplug) \
     vcl/win/app/fileregistration \
 ))
 
commit 759b936f2f8b05316dc6650ee0aa15bab1052721
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Thu Mar 25 09:59:51 2021 +0100
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:41:52 2021 +0200

    Working static Writer (use SAL_VCL_QT5_USE_CAIRO)
    
    Change-Id: Ie1aab718cbf36b43621e2be644328fdc3fa1c90b

diff --git a/configure.ac b/configure.ac
index aa033a0c13ea..5b89993046da 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5172,7 +5172,7 @@ if test "$enable_gui" = "no"; then
     fi
     USING_X11=
     DISABLE_GUI=TRUE
-    AC_DEFINE(HAVE_FEATURE_UI,0)
+#    AC_DEFINE(HAVE_FEATURE_UI,0)
     test_cairo=yes
 fi
 AC_SUBST(DISABLE_GUI)
diff --git a/cppuhelper/source/paths.cxx b/cppuhelper/source/paths.cxx
index 0172e4c94a16..25e006d07c96 100644
--- a/cppuhelper/source/paths.cxx
+++ b/cppuhelper/source/paths.cxx
@@ -20,6 +20,7 @@
 #include <config_folders.h>
 
 #include <sal/config.h>
+#include <sal/log.hxx>
 
 #include <cassert>
 
@@ -85,7 +86,9 @@ OUString cppu::getUnoIniUri() {
     }
 #endif
 #endif
-    return uri + "/" SAL_CONFIGFILE("uno");
+    uri += "/" SAL_CONFIGFILE("uno");
+    SAL_INFO("cppuhelper", "expected uno config: " << uri);
+    return uri;
 }
 
 bool cppu::nextDirectoryItem(osl::Directory & directory, OUString * url) {
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index a8c0f078c6a7..4bb63a89054e 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -3157,7 +3157,7 @@ static void doc_paintTile(LibreOfficeKitDocument* pThis,
         return;
     }
 
-#if defined(UNX) && !defined(MACOSX) && !defined(ENABLE_HEADLESS)
+#if defined(UNX) && !defined(MACOSX) && !defined(DISABLE_GUI)
 
     // Painting of zoomed or HiDPI spreadsheets is special, we actually draw everything at 100%,
     // and only set cairo's (or CoreGraphic's, in the iOS case) scale factor accordingly, so that
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index be437b9801b1..ddfb22a84ae5 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -284,8 +284,8 @@ $(eval $(call gb_Rdb_add_components,services,\
 		shell/source/unix/exec/syssh \
 	) \
 	$(if $(filter-out MACOSX WNT,$(OS)), \
-		$(if $(DISABLE_GUI),, \
 			shell/source/backends/desktopbe/desktopbe1 \
+		$(if $(DISABLE_GUI),, \
 			vcl/vcl.unx \
 		) \
 	) \
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index 9ee5d41cc234..20526f3db8ba 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -739,7 +739,187 @@ desktop_factory_list = [
     ]
 
 desktop_constructor_list = [
+    "com_sun_star_comp_bridge_BridgeFactory_get_implementation",
+    "com_sun_star_comp_bridge_BridgeFactory_get_implementation",
+    "com_sun_star_comp_configuration_ConfigurationProvider_get_implementation",
+    "com_sun_star_comp_configuration_ConfigurationRegistry_get_implementation",
+    "com_sun_star_comp_configuration_DefaultProvider_get_implementation",
+    "com_sun_star_comp_configuration_ReadOnlyAccess_get_implementation",
+    "com_sun_star_comp_configuration_ReadWriteAccess_get_implementation",
+    "com_sun_star_comp_deployment_component_PackageRegistryBackend_get_implementation",
+    "com_sun_star_comp_deployment_configuration_PackageRegistryBackend_get_implementation",
+    "com_sun_star_comp_deployment_executable_PackageRegistryBackend_get_implementation",
     "com_sun_star_comp_deployment_ExtensionManager_get_implementation",
+    "com_sun_star_comp_deployment_ExtensionManager_get_implementation",
+    "com_sun_star_comp_deployment_help_PackageRegistryBackend_get_implementation",
+    "com_sun_star_comp_deployment_PackageManagerFactory_get_implementation",
+    "com_sun_star_comp_deployment_PackageManagerFactory_get_implementation",
+    "com_sun_star_comp_deployment_ProgressLog_get_implementation",
+    "com_sun_star_comp_deployment_script_PackageRegistryBackend_get_implementation",
+    "com_sun_star_comp_deployment_sfwk_PackageRegistryBackend_get_implementation",
+    "com_sun_star_comp_extensions_xml_sax_ParserExpat_get_implementation",
+    "com_sun_star_comp_frame_SessionListener_get_implementation",
+    "com_sun_star_comp_framework_AddonsToolBarFactory_get_implementation",
+    "com_sun_star_comp_framework_Desktop_get_implementation",
+    "com_sun_star_comp_framework_DocumentAcceleratorConfiguration_get_implementation",
+    "com_sun_star_comp_framework_Frame_get_implementation",
+    "com_sun_star_comp_framework_GenericPopupToolbarController_get_implementation",
+    "com_sun_star_comp_framework_GenericPopupToolbarController_get_implementation",
+    "com_sun_star_comp_framework_GlobalAcceleratorConfiguration_get_implementation",
+    "com_sun_star_comp_framework_JobExecutor_get_implementation",
+    "com_sun_star_comp_framework_LangSelectionStatusbarController_get_implementation",
+    "com_sun_star_comp_framework_LayoutManager_get_implementation",
+    "com_sun_star_comp_framework_MenuBarFactory_get_implementation",
+    "com_sun_star_comp_framework_MenuBarFactory_get_implementation",
+    "com_sun_star_comp_framework_ModuleAcceleratorConfiguration_get_implementation",
+    "com_sun_star_comp_framework_ModuleManager_get_implementation",
+    "com_sun_star_comp_framework_ModuleUIConfigurationManager_get_implementation",
+    "com_sun_star_comp_framework_ModuleUIConfigurationManagerSupplier_get_implementation",
+    "com_sun_star_comp_framework_ObjectMenuController_get_implementation",
+    "com_sun_star_comp_framework_PathSettings_get_implementation",
+    "com_sun_star_comp_framework_PathSubstitution_get_implementation",
+    "com_sun_star_comp_framework_PopupMenuControllerFactory_get_implementation",
+    "com_sun_star_comp_framework_RecentFilesMenuController_get_implementation",
+    "com_sun_star_comp_framework_RecentFilesMenuController_get_implementation",
+    "com_sun_star_comp_framework_ResourceMenuController_get_implementation",
+    "com_sun_star_comp_framework_SaveToolbarController_get_implementation",
+    "com_sun_star_comp_framework_SaveToolbarController_get_implementation",
+    "com_sun_star_comp_framework_StatusBarControllerFactory_get_implementation",
+    "com_sun_star_comp_framework_StatusBarFactory_get_implementation",
+    "com_sun_star_comp_framework_StatusIndicatorFactory_get_implementation",
+    "com_sun_star_comp_framework_SubToolBarController_get_implementation",
+    "com_sun_star_comp_framework_SubToolBarController_get_implementation",
+    "com_sun_star_comp_framework_TaskCreator_get_implementation",
+    "com_sun_star_comp_framework_ToolbarAsMenuController_get_implementation",
+    "com_sun_star_comp_framework_ToolBarControllerFactory_get_implementation",
+    "com_sun_star_comp_framework_ToolBarFactory_get_implementation",
+    "com_sun_star_comp_framework_ToolBarFactory_get_implementation",
+    "com_sun_star_comp_framework_UICommandDescription_get_implementation",
+    "com_sun_star_comp_framework_UICommandDescription_get_implementation",
+    "com_sun_star_comp_framework_UIConfigurationManager_get_implementation",
+    "com_sun_star_comp_framework_UIElementFactoryManager_get_implementation",
+    "com_sun_star_comp_framework_URLTransformer_get_implementation",
+    "com_sun_star_comp_framework_WindowListMenuController_get_implementation",
+    "com_sun_star_comp_framework_WindowListMenuController_get_implementation",
+    "com_sun_star_comp_framework_WindowStateConfiguration_get_implementation",
+    "com_sun_star_comp_graphic_GraphicProvider_get_implementation",
+    "com_sun_star_comp_office_FrameLoader_get_implementation",
+    "com_sun_star_comp_sfx2_AppDispatchProvider_get_implementation",
+    "com_sun_star_comp_sfx2_BackingComp_get_implementation",
+    "com_sun_star_comp_sfx2_GlobalEventBroadcaster_get_implementation",
+    "com_sun_star_comp_sfx2_InsertSymbolToolBoxControl_get_implementation",
+    "com_sun_star_comp_sfx2_InsertSymbolToolBoxControl_get_implementation",
+    "com_sun_star_comp_stoc_CoreReflection_get_implementation",
+    "com_sun_star_comp_stoc_Introspection_get_implementation",
+    "com_sun_star_comp_svx_CharacterSpacingToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_ColorToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_CTLToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_FontNameToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_Impl_FindbarDispatcher_get_implementation",
+    "com_sun_star_comp_svx_Impl_FindbarDispatcher_get_implementation",
+    "com_sun_star_comp_svx_LineSpacingToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_NumberingToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_RecoveryUI_get_implementation",
+    "com_sun_star_comp_svx_StyleToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_TableToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_TableToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_UnderlineToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_UndoRedoToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_UndoRedoToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_VertTextToolBoxControl_get_implementation",
+    "com_sun_star_comp_svx_VertTextToolBoxControl_get_implementation",
+    "com_sun_star_comp_uri_ExternalUriReferenceTranslator_get_implementation",
+    "com_sun_star_comp_uri_UriReferenceFactory_get_implementation",
+    "com_sun_star_comp_uri_UriSchemeParser_vndDOTsunDOTstarDOTexpand_get_implementation",
+    "com_sun_star_comp_uri_UriSchemeParser_vndDOTsunDOTstarDOTscript_get_implementation",
+    "com_sun_star_comp_uui_UUIInteractionHandler_get_implementation",
+    "com_sun_star_extensions_xml_sax_Writer_get_implementation",
+    "com_sun_star_frame_VCLSessionManagerClient_get_implementation",
+    "com_sun_star_i18n_BreakIterator_get_implementation",
+    "com_sun_star_i18n_BreakIterator_Unicode_get_implementation",
+    "com_sun_star_i18n_CharacterClassification_get_implementation",
+    "com_sun_star_i18n_CharacterClassification_Unicode_get_implementation",
+    "com_sun_star_i18n_Collator_get_implementation",
+    "com_sun_star_i18n_LocaleDataImpl_get_implementation",
+    "com_sun_star_i18n_NumberFormatCodeMapper_get_implementation",
+    "com_sun_star_i18n_Transliteration_get_implementation",
+    "com_sun_star_i18n_Transliteration_IGNORE_CASE_get_implementation",
+    "com_sun_star_i18n_Transliteration_IGNORE_KANA_get_implementation",
+    "com_sun_star_i18n_Transliteration_IGNORE_WIDTH_get_implementation",
+    "com_sun_star_svx_DownSearchToolboxController_get_implementation",
+    "com_sun_star_svx_ExitFindbarToolboxController_get_implementation",
+    "com_sun_star_svx_FindAllToolboxController_get_implementation",
+    "com_sun_star_svx_FindTextToolboxController_get_implementation",
+    "com_sun_star_svx_FontHeightToolBoxController_get_implementation",
+    "com_sun_star_svx_MatchCaseToolboxController_get_implementation",
+    "com_sun_star_svx_SearchLabelToolboxController_get_implementation",
+    "com_sun_star_svx_UpSearchToolboxController_get_implementation",
+    "com_sun_star_text_DefaultNumberingProvider_get_implementation",
+    "dtrans_CMimeContentTypeFactory_get_implementation",
+    "filter_ConfigFlush_get_implementation",
+    "filter_ContentHandlerFactory_get_implementation",
+    "filter_FilterFactory_get_implementation",
+    "filter_FrameLoaderFactory_get_implementation",
+    "filter_TypeDetection_get_implementation",
+    "framework_FooterMenuController_get_implementation",
+    "framework_FooterMenuController_get_implementation",
+    "framework_HeaderMenuController_get_implementation",
+    "framework_HeaderMenuController_get_implementation",
+    "framework_LanguageSelectionMenuController_get_implementation",
+    "framework_LanguageSelectionMenuController_get_implementation",
+    "framework_MacrosMenuController_get_implementation",
+    "framework_MacrosMenuController_get_implementation",
+    "framework_NewMenuController_get_implementation",
+    "framework_NewMenuController_get_implementation",
+    "framework_ServiceHandler_get_implementation",
+    "framework_ServiceHandler_get_implementation",
+    "framework_ToolbarsMenuController_get_implementation",
+    "framework_ToolbarsMenuController_get_implementation",
+    "i18npool_Collator_Unicode_get_implementation",
+    "IndexedPropertyValuesContainer_get_implementation",
+    "lingucomponent_Hyphenator_get_implementation",
+    "lingucomponent_LangGuess_get_implementation",
+    "lingucomponent_SpellChecker_get_implementation",
+    "lingucomponent_Thesaurus_get_implementation",
+    "linguistic_DicList_get_implementation",
+    "linguistic_GrammarCheckingIterator_get_implementation",
+    "linguistic_LinguProps_get_implementation",
+    "linguistic_LngSvcMgr_get_implementation",
+    "lo_writer_NavElementToolBoxController_get_implementation",
+    "lo_writer_NextScrollToolboxController_get_implementation",
+    "lo_writer_PreviousScrollToolboxController_get_implementation",
+    "org_apache_openoffice_comp_framework_ContextChangeEventMultiplexer_get_implementation",
+    "org_apache_openoffice_comp_framework_NewToolbarController_get_implementation",
+    "org_apache_openoffice_comp_framework_NewToolbarController_get_implementation",
+    "org_apache_openoffice_comp_svx_sidebar_PanelFactory_get_implementation",
+    "package_ManifestReader_get_implementation",
+    "package_OStorageFactory_get_implementation",
+    "package_OZipFileAccess_get_implementation",
+    "package_ZipPackage_get_implementation",
+    "SfxDocumentMetaData_get_implementation",
+    "shell_DesktopBackend_get_implementation",
+    "shell_LocaleBackend_get_implementation",
+    "stardiv_Toolkit_VCLXPopupMenu_get_implementation",
+    "stardiv_Toolkit_VCLXToolkit_get_implementation",
+    "stoc_FactoryImpl_get_implementation",
+    "svl_FSStorageFactory_get_implementation",
+    "ucb_expand_ExpandContentProviderImpl_get_implementation",
+    "ucb_file_FileProvider_get_implementation",
+    "ucb_OFileAccess_get_implementation",
+    "ucb_tdoc_ContentProvider_get_implementation",
+    "ucb_tdoc_DocumentContentFactory_get_implementation",
+    "ucb_UcbContentProviderProxyFactory_get_implementation",
+    "ucb_UcbStore_get_implementation",
+    "ucb_UniversalContentBroker_get_implementation",
+    "unotools_OTempFileService_get_implementation",
+    "unoxml_CDocumentBuilder_get_implementation",
+    "unoxml_CURI_get_implementation",
+    "unoxml_CXPathAPI_get_implementation",
+    "unoxml_rdfRepository_get_implementation",
+    "vcl_SystemClipboard_get_implementation",
+    "Writer_SwTextDocument_get_implementation",
+    "com_sun_star_comp_svx_FrameToolBoxControl_get_implementation",
+    "com_sun_star_i18n_InputSequenceChecker_get_implementation",
     ]
 
 factory_map = {
diff --git a/sw/source/uibase/app/swmodule.cxx b/sw/source/uibase/app/swmodule.cxx
index f8e5c016db90..55d795719cc8 100644
--- a/sw/source/uibase/app/swmodule.cxx
+++ b/sw/source/uibase/app/swmodule.cxx
@@ -176,9 +176,14 @@ OUString SwResId(const char* pId, int nCardinality)
 uno::Reference< scanner::XScannerManager2 > const &
 SwModule::GetScannerManager()
 {
-    if (!m_xScannerManager.is())
+    static bool bTestScannerManager = true;
+    if (bTestScannerManager && !m_xScannerManager.is())
     {
-        m_xScannerManager = scanner::ScannerManager::create( comphelper::getProcessComponentContext() );
+        try {
+            m_xScannerManager = scanner::ScannerManager::create( comphelper::getProcessComponentContext() );
+        }
+        catch (...) {}
+        bTestScannerManager = false;
     }
     return m_xScannerManager;
 }
commit 793fb3beba8e0bcb87228ceda344d387e09e47f4
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Wed Mar 24 16:46:09 2021 +0100
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:41:52 2021 +0200

    catchall vcldemo
    
    Change-Id: I07c8b12b9926e2228fc69b173ac4acf3dd6ef075

diff --git a/bin/run b/bin/run
index ea3a551d9e50..1fcbd07a8626 100755
--- a/bin/run
+++ b/bin/run
@@ -64,7 +64,7 @@ else
 
     export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}"${dir}"/instdir/program
     SEARCH_PATH="${LD_LIBRARY_PATH}"
-
+    export UNO_HOME="file://${dir}/instdir/program"
 fi
 
 # echo "setting URE_BOOTSTRAP to: ${URE_BOOTSTRAP}"
diff --git a/cppu/source/uno/lbmap.cxx b/cppu/source/uno/lbmap.cxx
index cdaa21ff7200..685bf6d4a2a8 100644
--- a/cppu/source/uno/lbmap.cxx
+++ b/cppu/source/uno/lbmap.cxx
@@ -328,14 +328,12 @@ static void setNegativeBridge( const OUString & rBridgeName )
 
 static uno_ext_getMappingFunc selectMapFunc( const OUString & rBridgeName )
 {
-#if 0
     if (rBridgeName.equalsAscii( CPPU_CURRENT_LANGUAGE_BINDING_NAME "_uno" ))
         return CPPU_ENV_uno_ext_getMapping;
 #if HAVE_FEATURE_JAVA
     if (rBridgeName.equalsAscii( "java" "_uno" ))
         return java_uno_ext_getMapping;
 #endif
-#endif
 
 #if 0
     // I don't think the affine or log bridges will be needed on any
diff --git a/cppuhelper/source/paths.cxx b/cppuhelper/source/paths.cxx
index 0f59fb1272da..0172e4c94a16 100644
--- a/cppuhelper/source/paths.cxx
+++ b/cppuhelper/source/paths.cxx
@@ -26,6 +26,7 @@
 #include <com/sun/star/uno/DeploymentException.hpp>
 #include <osl/file.hxx>
 #include <osl/module.hxx>
+#include <osl/thread.h>
 #include <rtl/ustring.hxx>
 #include <sal/types.h>
 
@@ -62,7 +63,14 @@ OUString cppu::getUnoIniUri() {
     // clean here is hardish.
     OUString uri("file:///assets/program");
 #else
+
     OUString uri(get_this_libpath());
+    static const char* uno_home = getenv("UNO_HOME");
+    if (!uno_home)
+        uri = get_this_libpath();
+    else
+        uri = OStringToOUString(uno_home, osl_getThreadTextEncoding());
+
 #ifdef MACOSX
     // We keep both the LO and URE dylibs directly in "Frameworks"
     // (that is, LIBO_LIB_FOLDER) and rc files in "Resources"
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index 30e62b99ef32..9ee5d41cc234 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -735,6 +735,13 @@ writer_constructor_list = [
     "com_sun_star_comp_Writer_EPUBExportFilter_get_implementation",
     ]
 
+desktop_factory_list = [
+    ]
+
+desktop_constructor_list = [
+    "com_sun_star_comp_deployment_ExtensionManager_get_implementation",
+    ]
+
 factory_map = {
     'core' : core_factory_list,
     'edit' : edit_factory_list,
@@ -742,6 +749,7 @@ factory_map = {
     'calc' : calc_factory_list,
     'draw' : draw_factory_list,
     'writer' : writer_factory_list,
+    'desktop' : desktop_factory_list,
     }
 
 constructor_map = {
@@ -751,6 +759,7 @@ constructor_map = {
     'calc' : calc_constructor_list,
     'draw' : draw_constructor_list,
     'writer' : writer_constructor_list,
+    'desktop' : desktop_constructor_list,
     }
 
 custom_widgets = [
diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk
index 296b8e379a0c..711509cd846d 100644
--- a/solenv/gbuild/CppunitTest.mk
+++ b/solenv/gbuild/CppunitTest.mk
@@ -80,6 +80,7 @@ gb_CppunitTest_CPPTESTCOMMAND := $(call gb_Executable_get_target_for_build,cppun
 else
 gb_CppunitTest_RUNTIMEDEPS :=
 gb_CppunitTest_CPPTESTCOMMAND :=
+#gb_CppunitTest_CPPTESTCOMMAND := strace -o trace.log
 endif
 
 # i18npool dlopens localedata_* libraries.
diff --git a/static/CustomTarget_components.mk b/static/CustomTarget_components.mk
index 384985426a2a..9bd72a0b1f26 100644
--- a/static/CustomTarget_components.mk
+++ b/static/CustomTarget_components.mk
@@ -19,6 +19,6 @@ $(static_WORKDIR)/component_maps.cxx: \
 	    $(SRCDIR)/solenv/bin/native-code.py \
 	    | $(static_WORKDIR)/.dir
 	$(call gb_Output_announce,$(subst $(BUILDDIR)/,,$@),$(true),GEN,2)
-	$(call gb_Helper_abbreviate_dirs,$(call gb_ExternalExecutable_get_command,python) $< -g core -g writer) > $@
+	$(call gb_Helper_abbreviate_dirs,$(call gb_ExternalExecutable_get_command,python) $< -g core -g writer -g desktop) > $@
 
 # vim: set noet sw=4:
diff --git a/vcl/wasm/salplug.cxx b/vcl/wasm/salplug.cxx
index b5ba480dd104..6e498742b5c1 100644
--- a/vcl/wasm/salplug.cxx
+++ b/vcl/wasm/salplug.cxx
@@ -33,7 +33,12 @@ const OUString& SalGetDesktopEnvironment()
     return aEnv;
 }
 
-SalInstance* CreateSalInstance() { return create_SalInstance(); }
+SalInstance* CreateSalInstance()
+{
+    SalInstance* pInst = create_SalInstance();
+    pInst->AcquireYieldMutex();
+    return pInst;
+}
 
 void DestroySalInstance(SalInstance* pInst)
 {
commit 5c8fe6488a4a2e90f5f3dbbadd0dff3e77d85dd4
Author:     Thorsten Behrens <thorsten.behrens at allotropia.de>
AuthorDate: Mon Mar 15 00:17:41 2021 +0100
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:41:52 2021 +0200

    Add docs for container build setup
    
    Change-Id: Ib250ae58e0dc36169125707a8c523d59239cabf6

diff --git a/README.wasm b/README.wasm
index 525a9baf1864..c1f1c618a973 100644
--- a/README.wasm
+++ b/README.wasm
@@ -121,6 +121,36 @@ The lode setup expects, inside the lode/docker subdir, the following directories
 - tarballs (external project tarballs gets written and cached there)
 
 
+== Using Docker to cross-build with emscripten ==
+
+If you prefer a controlled environment (sadly emsdk install/activate
+is _not_ stable over time, as e.g. nodejs versions evolve), that is
+easy to replicate across different machines - consider the docker
+images we're providing.
+
+Config/setup file see
+https://git.libreoffice.org/lode/+/ccb36979563635b51215477455953252c99ec013
+
+Run
+
+ docker-compose build
+
+in the lode/docker dir to get the container prepared. Run
+
+ PARALLELISM=4 BUILD_OPTIONS= BUILD_TARGET=build docker-compose run --rm -e PARALLELISM -e BUILD_TARGET -e BUILD_OPTIONS builder
+
+to perform an actual srcdir != buildir build; the container mounts
+checked-out git repo and output dir via docker-compose.yml (so make
+sure the path names there match your setup):
+
+The lode setup expects, inside the lode/docker subdir, the following directories:
+
+- core (git checkout)
+- workdir (the output dir - gets written into)
+- cache (ccache tree)
+- tarballs (external project tarballs gets written and cached there)
+
+
 = Ideas for an UNO bridge implementation =
 
 My post to Discord #emscripten: "I'm looking for a way to do an abstract call
commit e4c05e03c05cd2ceb0b68d52e5e2d9ee2fd9b173
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Sat Mar 13 00:13:30 2021 +0100
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:41:50 2021 +0200

    catchall
    
    Change-Id: I8b4dea6870dc6698a03cd2607f98eb57971eca4b

diff --git a/Repository.mk b/Repository.mk
index fdaa075101dc..84c3aff700c7 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -201,9 +201,7 @@ $(eval $(call gb_Helper_register_executables_for_install,OOO,ooo, \
 	gengal \
 	$(if $(filter WNT,$(OS)),,uri-encode) \
 	$(if $(ENABLE_MACOSX_SANDBOX),, \
-		$(if $(DISABLE_GUI),, \
 			ui-previewer \
-		) \
 	) \
 	$(if $(filter WNT,$(OS)), \
 		senddoc \
@@ -326,7 +324,6 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ogltrans, \
 ))
 
 $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
-	acc \
 	$(call gb_Helper_optional,AVMEDIA,avmedia) \
 	$(if $(filter MACOSX,$(OS)),\
 		avmediaMacAVF \
@@ -345,10 +342,8 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
 	$(call gb_Helper_optional,OPENCL,clew) \
 	$(if $(filter $(OS),WNT),,cmdmail) \
 	cppcanvas \
-	$(if $(filter $(OS),EMSCRIPTEN),components) \
 	configmgr \
 	ctl \
-	cui \
 	dba \
 	dbahsql \
 	$(call gb_Helper_optional,DBCONNECTIVITY, \
@@ -480,12 +475,15 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
 ))
 
 $(eval $(call gb_Helper_register_plugins_for_install,OOOLIBS,ooo, \
+    acc \
+    $(if $(DISABLE_DYNLOADING),components) \
+    cui \
     gie \
     sdui \
     $(if $(USING_X11),vclplug_gen) \
     $(if $(filter $(OS),WNT),vclplug_win) \
     $(if $(filter $(OS),MACOSX),vclplug_osx) \
-    $(if $(filter EMSCRIPTEN,$(OS)),vclplug_qt5) \
+    vclplug_qt5 \
 ))
 
 $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,postgresqlsdbc, \
diff --git a/RepositoryFixes.mk b/RepositoryFixes.mk
index 741f6bbfee21..5f149631919a 100644
--- a/RepositoryFixes.mk
+++ b/RepositoryFixes.mk
@@ -69,11 +69,6 @@ else
 # libpyuno_wrapper.so => pyuno.so
 gb_Library_FILENAMES := $(patsubst pyuno_wrapper:libpyuno_wrapper.so,pyuno_wrapper:pyuno.so,$(gb_Library_FILENAMES))
 endif
-
-ifneq ($(OS),ANDROID)
-gb_Library_FILENAMES := $(patsubst unobootstrapprotector:libuno%,unobootstrapprotector:uno%,$(gb_Library_FILENAMES))
-gb_Library_FILENAMES := $(patsubst unoexceptionprotector:libuno%,unoexceptionprotector:uno%,$(gb_Library_FILENAMES))
-endif
 endif
 
 ifeq ($(OS),WNT)
diff --git a/RepositoryModule_host.mk b/RepositoryModule_host.mk
index 64068ffc0e49..ff07e415e25f 100644
--- a/RepositoryModule_host.mk
+++ b/RepositoryModule_host.mk
@@ -111,6 +111,7 @@ $(eval $(call gb_Module_add_moduledirs,libreoffice,\
 	solenv \
 	soltools \
 	sot \
+	static \
 	stoc \
 	store \
 	svl \
@@ -140,20 +141,20 @@ $(eval $(call gb_Module_add_moduledirs,libreoffice,\
 	uui \
 	vbahelper \
 	vcl \
-	wasm \
 	wasm-qt \
 	winaccessibility \
 	wizards \
 	writerfilter \
 	writerperfect \
 	xmerge \
-	$(call gb_Helper_optional,DESKTOP,xmlhelp) \
+	$(call gb_Helper_optional,DESKTOP,$(if $(DISABLE_DYNLOADING),,xmlhelp)) \
 	xmloff \
 	xmlreader \
 	xmlscript \
 	xmlsecurity \
 ))
 
+ifeq (,$(DISABLE_DYNLOADING))
 # Especially when building everything with symbols, the linking of the largest
 # libraries takes enormous amounts of RAM.	To prevent annoying OOM situations
 # etc., try to prevent linking these in parallel by adding artificial build
@@ -186,5 +187,6 @@ $(eval $(call repositorymodule_serialize,\
 		svx svxcore xo sfx fwk svt vcl) \
 ))
 endif
+endif # !$(DISABLE_DYNLOADING)
 
 # vim: set noet sw=4 ts=4:
diff --git a/accessibility/Library_acc.mk b/accessibility/Library_acc.mk
index 6e4c90eba50d..cf63cf5836a8 100644
--- a/accessibility/Library_acc.mk
+++ b/accessibility/Library_acc.mk
@@ -9,6 +9,8 @@
 
 $(eval $(call gb_Library_Library,acc))
 
+$(eval $(call gb_Library_set_plugin_for,acc,tk))
+
 $(eval $(call gb_Library_set_include,acc,\
     $$(INCLUDE) \
     -I$(SRCDIR)/accessibility/inc \
@@ -31,7 +33,6 @@ $(eval $(call gb_Library_use_libraries,acc,\
     sot \
     svl \
     svt \
-    tk \
     tl \
     utl \
     vcl \
diff --git a/bin/run b/bin/run
index 523da3c0e178..ea3a551d9e50 100755
--- a/bin/run
+++ b/bin/run
@@ -71,6 +71,7 @@ fi
 # echo "setting search path to: ${SEARCH_PATH}"
 # echo "execing: ${exedir}/$1"
 
+env | sort
 exec ${LO_TRACE} "${exedir}/$@"
 
 # vi:set shiftwidth=4 expandtab:
diff --git a/chart2/Module_chart2.mk b/chart2/Module_chart2.mk
index 37acfdc3730f..02a56e276205 100644
--- a/chart2/Module_chart2.mk
+++ b/chart2/Module_chart2.mk
@@ -24,23 +24,6 @@ $(eval $(call gb_Module_add_check_targets,chart2,\
 	CppunitTest_chart2_common_functors \
 ))
 
-$(eval $(call gb_Module_add_slowcheck_targets,chart2,\
-    CppunitTest_chart2_export \
-    CppunitTest_chart2_import \
-    CppunitTest_chart2_trendcalculators \
-    CppunitTest_chart2_dump \
-    CppunitTest_chart2_pivot_chart_test \
-    CppunitTest_chart2_geometry \
-))
-
-ifeq ($(ENABLE_CHART_TESTS),TRUE)
-ifeq ($(WITH_FONTS), TRUE)
-$(eval $(call gb_Module_add_slowcheck_targets,chart2,\
-    CppunitTest_chart2_xshape \
-))
-endif
-endif
-
 $(eval $(call gb_Module_add_subsequentcheck_targets,chart2,\
     JunitTest_chart2_unoapi \
 ))
diff --git a/cppu/Module_cppu.mk b/cppu/Module_cppu.mk
index 17f6936f7878..f00558a4056a 100644
--- a/cppu/Module_cppu.mk
+++ b/cppu/Module_cppu.mk
@@ -26,7 +26,6 @@ $(eval $(call gb_Module_add_check_targets,cppu,\
 	CppunitTest_cppu_qa_recursion \
 	CppunitTest_cppu_qa_reference \
 	CppunitTest_cppu_qa_unotype \
-	CppunitTest_cppu_test_cppumaker \
 	CppunitTest_cppu_typelib \
 ))
 
diff --git a/cpputools/Module_cpputools.mk b/cpputools/Module_cpputools.mk
index de043ea9bf45..72b2b4307dbf 100644
--- a/cpputools/Module_cpputools.mk
+++ b/cpputools/Module_cpputools.mk
@@ -14,7 +14,6 @@ ifneq ($(OS),EMSCRIPTEN)
 
 $(eval $(call gb_Module_add_targets,cpputools,\
     Executable_sp2bv \
-    Executable_uno \
 ))
 
 endif
diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
index d6fa68e0d194..01e2bd8cd191 100644
--- a/cui/Library_cui.mk
+++ b/cui/Library_cui.mk
@@ -9,6 +9,8 @@
 
 $(eval $(call gb_Library_Library,cui))
 
+$(eval $(call gb_Library_set_plugin_for,cui,vcl))
+
 $(eval $(call gb_Library_set_componentfile,cui,cui/util/cui))
 
 $(eval $(call gb_Library_set_include,cui,\
@@ -58,7 +60,6 @@ $(eval $(call gb_Library_use_libraries,cui,\
     tl \
     ucbhelper \
     utl \
-    vcl \
     $(if $(ENABLE_BREAKPAD), \
         crashreport \
     ) \
diff --git a/desktop/Executable_oosplash.mk b/desktop/Executable_oosplash.mk
index a14acd626b74..ae7b3dfaa74e 100644
--- a/desktop/Executable_oosplash.mk
+++ b/desktop/Executable_oosplash.mk
@@ -56,6 +56,8 @@ endif
 ifeq ($(OS),LINUX)
 $(eval $(call gb_Executable_add_libs,oosplash,\
     -lm \
+    -lstdc++ \
+    -pthread \
 ))
 endif
 
diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk
index 31bbf9d3a472..64717578b26f 100644
--- a/desktop/Module_desktop.mk
+++ b/desktop/Module_desktop.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Module_add_l10n_targets,desktop,\
 ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
 $(eval $(call gb_Module_add_targets,desktop,\
     Executable_soffice_bin \
-    Executable_unopkg_bin \
     $(if $(ENABLE_BREAKPAD),Executable_minidump_upload) \
     Library_migrationoo2 \
     Library_migrationoo3 \
@@ -44,10 +43,7 @@ $(eval $(call gb_Module_add_targets,desktop,\
 ifneq ($(OS),MACOSX)
 ifneq ($(OS),WNT)
 $(eval $(call gb_Module_add_targets,desktop,\
-    Pagein_calc \
     Pagein_common \
-    Pagein_draw \
-    Pagein_impress \
     Pagein_writer \
     CustomTarget_soffice \
 ))
@@ -142,7 +138,6 @@ $(eval $(call gb_Module_add_check_targets,desktop, \
 
 ifeq ($(OS),LINUX)
 $(eval $(call gb_Module_add_check_targets,desktop, \
-    CppunitTest_desktop_lib \
     CppunitTest_desktop_lokinit \
 ))
 endif
diff --git a/extensions/Module_extensions.mk b/extensions/Module_extensions.mk
index c3f87aca815c..f0a4784b8b56 100644
--- a/extensions/Module_extensions.mk
+++ b/extensions/Module_extensions.mk
@@ -13,7 +13,7 @@ $(eval $(call gb_Module_add_l10n_targets,extensions,\
 	AllLangMoTarget_pcr \
 ))
 
-ifneq ($(filter-out EMSCRIPTEN iOS ANDROID,$(OS)),)
+ifeq (,$(DISABLE_DYNLOADING))
 $(eval $(call gb_Module_add_targets,extensions,\
 	Library_abp \
 	Library_scn \
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index 1f5d530a81f6..be437b9801b1 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -196,9 +196,6 @@ $(eval $(call gb_Rdb_add_components,services,\
 		extensions/source/update/check/updchk.uno \
 		extensions/source/update/ui/updchk \
 	) \
-	$(if $(ENABLE_OPENGL_TRANSITIONS), \
-		slideshow/source/engine/opengl/ogltrans \
-	) \
 	$(if $(ENABLE_JAVA), \
 		xmerge/source/bridge/XMergeBridge \
 		scripting/java/ScriptFramework \
@@ -275,15 +272,11 @@ $(eval $(call gb_Rdb_add_components,services,\
 	desktop/source/migration/services/migrationoo3 \
 	desktop/source/offacc/offacc \
 	$(if $(DISABLE_GUI),,desktop/source/splash/spl) \
-	extensions/source/abpilot/abp \
 	$(if $(ENABLE_LDAP),extensions/source/config/ldap/ldapbe2) \
 	$(if $(filter WNT,$(OS)),\
 		extensions/source/config/WinUserInfo/WinUserInfoBe \
 	) \
 	extensions/source/logging/log \
-	extensions/source/scanner/scn \
-	extensions/source/update/feed/updatefeed \
-	xmlhelp/util/ucpchelp1 \
 	$(if $(filter-out WNT,$(OS)),\
 		shell/source/cmdmail/cmdmail \
 	) \
diff --git a/sal/StaticLibrary_cppunitmain.mk b/sal/Library_cppunitmain.mk
similarity index 60%
rename from sal/StaticLibrary_cppunitmain.mk
rename to sal/Library_cppunitmain.mk
index 30c64d7b3980..07f51e0c4821 100644
--- a/sal/StaticLibrary_cppunitmain.mk
+++ b/sal/Library_cppunitmain.mk
@@ -8,30 +8,32 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 #
 
-$(eval $(call gb_StaticLibrary_StaticLibrary,cppunitmain))
+$(eval $(call gb_Library_Library,cppunitmain))
 
-$(eval $(call gb_StaticLibrary_set_include,cppunitmain,\
+$(eval $(call gb_Library_set_include,cppunitmain,\
     $$(INCLUDE) \
     -I$(SRCDIR)/sal/inc \
 ))
 
-$(eval $(call gb_StaticLibrary_use_libraries,cppunitmain,\
+$(eval $(call gb_Library_use_libraries,cppunitmain,\
     sal \
     unoexceptionprotector \
+    unobootstrapprotector \
+    vclbootstrapprotector \
 ))
 
-$(eval $(call gb_StaticLibrary_use_externals,cppunitmain,\
+$(eval $(call gb_Library_use_externals,cppunitmain,\
     boost_headers \
     cppunit \
 ))
 
-$(eval $(call gb_StaticLibrary_add_exception_objects,cppunitmain,\
+$(eval $(call gb_Library_add_exception_objects,cppunitmain,\
     sal/cppunittester/cppunittester \
 ))
 
 ifeq ($(COM),MSC)
 
-$(eval $(call gb_StaticLibrary_add_ldflags,cppunitmain,\
+$(eval $(call gb_Library_add_ldflags,cppunitmain,\
     /STACK:10000000 \
 ))
 
diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk
index a24fe27ab869..d7076bf31e70 100644
--- a/sal/Module_sal.mk
+++ b/sal/Module_sal.mk
@@ -10,7 +10,7 @@
 $(eval $(call gb_Module_Module,sal))
 
 $(eval $(call gb_Module_add_targets,sal,\
-	$(if $(or $(CROSS_COMPILING),$(DISABLE_DYNLOADING)),StaticLibrary_cppunitmain,Executable_cppunittester) \
+	$(if $(or $(CROSS_COMPILING),$(DISABLE_DYNLOADING)),Library_cppunitmain,Executable_cppunittester) \
 	$(if $(filter $(OS),ANDROID), \
 		Library_lo-bootstrap) \
 	Library_sal \
diff --git a/solenv/bin/image-sort.py b/solenv/bin/image-sort.py
index 75b5da6ce0e7..5d248684b4a6 100644
--- a/solenv/bin/image-sort.py
+++ b/solenv/bin/image-sort.py
@@ -30,7 +30,7 @@ def read_icons(fname):
     full_path = os.path.join(args.base_path, fname)
     if not os.path.exists(full_path):
         if not args.quiet:
-            print("Skipping non-existent {}\n".format(full_path), file=sys.stderr)
+            print("Skipping non-existent {}".format(full_path), file=sys.stderr)
         return images
     with open(full_path) as fp:
         for line in fp:
diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk
index 6255fc0544c8..296b8e379a0c 100644
--- a/solenv/gbuild/CppunitTest.mk
+++ b/solenv/gbuild/CppunitTest.mk
@@ -74,8 +74,13 @@ endif
 
 # defined by platform
 #  gb_CppunitTest_get_filename
+ifeq (,$(DISABLE_DYNLOADING))
 gb_CppunitTest_RUNTIMEDEPS := $(call gb_Executable_get_runtime_dependencies,cppunittester)
 gb_CppunitTest_CPPTESTCOMMAND := $(call gb_Executable_get_target_for_build,cppunittester)
+else
+gb_CppunitTest_RUNTIMEDEPS :=
+gb_CppunitTest_CPPTESTCOMMAND :=
+endif
 
 # i18npool dlopens localedata_* libraries.
 gb_CppunitTest_RUNTIMEDEPS += \
@@ -206,7 +211,8 @@ $(call gb_CppunitTest_get_target,$(1)) : EXTRA_ENV_VARS :=
 $$(eval $$(call gb_Module_register_target,$(call gb_CppunitTest_get_target,$(1)),$(call gb_CppunitTest_get_clean_target,$(1))))
 $(call gb_Helper_make_userfriendly_targets,$(1),CppunitTest)
 ifneq (,$(DISABLE_DYNLOADING))
-$$(eval $$(call  gb_CppunitTest_use_static_libraries,$(1),cppunitmain))
+$$(eval $$(call gb_CppunitTest_use_libraries,$(1),cppunitmain))
+$$(eval $$(call gb_CppunitTest_add_defs,$(1),-D__EMSCRIPTEN__))
 endif
 $(if $(filter $(1),$(gb_CppunitTest_KNOWN)),,gb_CppunitTest_KNOWN += $(1))
 
diff --git a/solenv/gbuild/platform/linux.mk b/solenv/gbuild/platform/linux.mk
index ece7a88bd71f..823190490589 100644
--- a/solenv/gbuild/platform/linux.mk
+++ b/solenv/gbuild/platform/linux.mk
@@ -17,12 +17,20 @@ gb_LinkTarget_LDFLAGS += $(gb__LinkTarget_LDFLAGS_zdefs)
 
 include $(GBUILDDIR)/platform/unxgcc.mk
 
+gb_STDLIBS :=
+
 ifeq ($(DISABLE_DYNLOADING),TRUE)
-gb_STDLIBS := -ldl
+gb_STDLIBS += -ldl -lm
 endif
 
+gb_STDLIBS_CXX :=
+
 ifneq ($(ATOMIC_LIB),)
-gb_STDLIBS_CXX := $(ATOMIC_LIB)
+gb_STDLIBS_CXX += $(ATOMIC_LIB)
+endif
+
+ifeq ($(DISABLE_DYNLOADING),TRUE)
+gb_STDLIBS_CXX += -lstdc++
 endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index 515a2b37c9d4..43579bd0c6aa 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -136,7 +136,7 @@ $(call gb_Helper_abbreviate_dirs,\
 		    $(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(patsubst %.$(gb_Library_UDK_MAJORVER),%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))))) \
 		    $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
 		    $(T_LIBS) \
-		    $(if $(CXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS)$(filter-out XTRUE,X$(ENABLE_RUNTIME_OPTIMIZATIONS)),$(T_STDLIBS_CXX)) \
+		    $(T_STDLIBS_CXX) $(T_STDLIBS) \
 		    -Wl$(COMMA)--end-group \
 		, \
 		    -Wl$(COMMA)--start-group \
diff --git a/solenv/gbuild/static.mk b/solenv/gbuild/static.mk
index 7928a699d42f..be30960b0d3e 100644
--- a/solenv/gbuild/static.mk
+++ b/solenv/gbuild/static.mk
@@ -83,9 +83,9 @@ $(if $(strip $(filter-out GBUILD_TOUCHED, \
 
 ifeq (,$(gb_PARTIAL_BUILD))
 
-ifeq ($(OS),EMSCRIPTEN)
+#ifeq ($(OS),EMSCRIPTEN)
 $(foreach lib,$(gb_Library_KNOWNLIBS),$(if $(call gb_Library__get_component,$(lib)),$(eval $(call gb_Library_use_libraries,components,$(lib)))))
-endif
+#endif
 
 define gb_LinkTarget__add_x_template
 
@@ -147,6 +147,7 @@ endef
 define gb_LinkTarget__remove_touch
 $(call gb_LinkTarget__get_all_libraries_var,$(1)) := $(filter-out GBUILD_TOUCHED,$(call gb_LinkTarget__get_all_libraries,$(1)))
 $(call gb_LinkTarget__get_all_externals_var,$(1)) := $(filter-out GBUILD_TOUCHED,$(call gb_LinkTarget__get_all_externals,$(1)))
+$(call gb_LinkTarget__get_all_statics_var,$(1)) := $(filter-out GBUILD_TOUCHED,$(call gb_LinkTarget__get_all_statics,$(1)))
 
 endef
 
@@ -160,9 +161,10 @@ endef
 define gb_LinkTarget__fill_all_x_template
 
 define gb_LinkTarget__fill_all_$(if $(5),$(5),$(1))
-$$(if $$(filter GBUILD_TOUCHED,$$(call gb_$(2)__get_all_$(1),$$(1))),,
+$$(if $$(filter GBUILD_TOUCHED,$$(call gb_$(if $(6),$(6),$(2))__get_all_$(1),$$(1))),,
 	$(if $(gb_DEBUG_STATIC),$$(info gb_LinkTarget__fill_all_$(if $(5),$(5),$(1)) $(1) for $$(1) in: $$(call gb_$(if $(6),$(6),$(2))__get_all_$(1),$$(1))))
 	$(if $(gb_DEBUG_STATIC),$$(info gb_LinkTarget__fill_all_$(if $(5),$(5),$(1)) $(3) for $$(1) in: $$(call gb_$(if $(6),$(6),$(2))__get_all_$(3),$$(1))))
+	$$(eval $$(call gb_LinkTarget__add_touch,$$(call gb_$(if $(6),$(6),$(2))__get_workdir_linktargetname,$$(1))))
 	$$(foreach item,$$(call gb_$(if $(6),$(6),$(2))__get_all_$(1),$$(1)),
 		$$(call gb_LinkTarget__fill_all_$(1),$$(item))
 		$$(foreach dep,$$(call gb_$(2)__get_all_$(1),$$(item)),
@@ -179,7 +181,6 @@ $$(if $$(filter GBUILD_TOUCHED,$$(call gb_$(2)__get_all_$(1),$$(1))),,
 		$$(foreach dep,$$(call gb_$(4)__get_all_$(3),$$(item)),
 			$$(if $$(filter $$(dep),GBUILD_TOUCHED $$(call gb_$(if $(6),$(6),$(2))__get_all_$(3),$$(1))),,
 				$$(eval $$(call gb_LinkTarget__add_$(3),$$(call gb_$(if $(6),$(6),$(2))__get_workdir_linktargetname,$$(1)),$$(dep))))))
-	$$(eval $$(call gb_LinkTarget__add_touch,$$(call gb_$(if $(6),$(6),$(2))__get_workdir_linktargetname,$$(1))))
 	$(if $(gb_DEBUG_STATIC),$$(info gb_LinkTarget__fill_all_$(if $(5),$(5),$(1)) $(1) for $$(1) out: $$(call gb_$(if $(6),$(6),$(2))__get_all_$(1),$$(1))))
 	$(if $(gb_DEBUG_STATIC),$$(info gb_LinkTarget__fill_all_$(if $(5),$(5),$(1)) $(3) for $$(1) out: $$(call gb_$(if $(6),$(6),$(2))__get_all_$(3),$$(1)))))
 
@@ -203,13 +204,17 @@ $(eval $(call gb_LinkTarget__fill_all_x_template,libraries,Library,externals,Ext
 gb_Executable__LAST_KNOWN =
 gb_CppunitTest__LAST_KNOWN =
 
+#$(eval $(call gb_Library_use_libraries,cppuhelper,components))
+
 # The comment exists To help decipering / verifying the following block. Most later items depends on previous one(s).
 #
 # * Expand all libraries. It's not strictly needed, as we only need the info for the executables,
 #   but this way we can implement updating single gbuild-module dependencies as needed.
 # * For all executables (incl. CppunitTest(s)):
-#   * For EMSCRIPTEN, add components library to any cppuhelper user, as it contains the call to the mapper functions
-#   * Find any loader libraries and add the needed plugin dependences
+#   * Expand all normal dependencies
+#   * Check if cppuhelper loader for components is requested and add the needed plugin dependences
+#     This is a *HACK*, so we don't have to recursively check loader libraries - at least currently
+#   * Find any other loader libraries and add the needed plugin dependences
 #   * Add all statics to the executables
 #   * Add icudata as needed (it should be a plugin somehow declared in RepositoryExternal.mk, but that didn't work)
 #   * Serialize the linking of executables for EMSCRIPTEN, because wasm-opt is multi-threaded using all cores.
@@ -217,10 +222,11 @@ gb_CppunitTest__LAST_KNOWN =
 $(foreach lib,$(gb_Library_KNOWNLIBS),$(eval $(call gb_LinkTarget__fill_all_libraries,$(lib))))
 
 define gb_LinkTarget__expand_executable
-$$(if $$(and $$(filter EMSCRIPTEN,$$(OS)),$$(filter cppuhelper,$$(call gb_$(2)__get_all_libraries,$(3)))), \
-	$$(eval $$(call gb_$(2)_use_libraries,$(3),components))) \
 $$(eval $$(call gb_LinkTarget__fill_all_$(1),$(3))) \
-$$(foreach loader,$$(filter $$(gb_Library_KNOWNLOADERS),$$(call gb_$(2)__get_all_libraries,$(3))), \
+$$(if $$(filter cppuhelper,$$(filter $$(gb_Library_KNOWNLOADERS),$$(call gb_$(2)__get_all_libraries,$(3)))), \
+	$$(eval $$(call gb_$(2)_use_libraries,$(3),$$(call gb_Library__get_plugins,cppuhelper))) \
+	$$(eval $$(call gb_$(2)__add_libraries,$(3),$$(call gb_Library__get_plugins,cppuhelper)))) \
+$$(foreach loader,$$(filter $$(filter-out cppuhelper,$$(gb_Library_KNOWNLOADERS)),$$(call gb_$(2)__get_all_libraries,$(3))), \
 	$$(eval $$(call gb_$(2)_use_libraries,$(3),$$(call gb_Library__get_plugins,$$(loader)))) \
 	$$(eval $$(call gb_$(2)__add_libraries,$(3),$$(call gb_Library__get_plugins,$$(loader))))) \
 $$(if $$(filter-out GBUILD_TOUCHED,$$(call gb_$(2)__get_all_libraries,$(3))), \
diff --git a/wasm/CustomTarget_components.mk b/static/CustomTarget_components.mk
similarity index 67%
rename from wasm/CustomTarget_components.mk
rename to static/CustomTarget_components.mk
index cb188166d894..384985426a2a 100644
--- a/wasm/CustomTarget_components.mk
+++ b/static/CustomTarget_components.mk
@@ -8,16 +8,16 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 #
 
-$(eval $(call gb_CustomTarget_CustomTarget,wasm/components))
+$(eval $(call gb_CustomTarget_CustomTarget,static/components))
 
-wasm_WORKDIR := $(call gb_CustomTarget_get_workdir,wasm)
+static_WORKDIR := $(call gb_CustomTarget_get_workdir,static)
 
-$(call gb_CustomTarget_get_target,wasm/components): \
-	$(wasm_WORKDIR)/component_maps.cxx
+$(call gb_CustomTarget_get_target,static/components): \
+	$(static_WORKDIR)/component_maps.cxx
 
-$(wasm_WORKDIR)/component_maps.cxx: \
+$(static_WORKDIR)/component_maps.cxx: \
 	    $(SRCDIR)/solenv/bin/native-code.py \
-	    | $(wasm_WORKDIR)/.dir
+	    | $(static_WORKDIR)/.dir
 	$(call gb_Output_announce,$(subst $(BUILDDIR)/,,$@),$(true),GEN,2)
 	$(call gb_Helper_abbreviate_dirs,$(call gb_ExternalExecutable_get_command,python) $< -g core -g writer) > $@
 
diff --git a/wasm/Library_components.mk b/static/Library_components.mk
similarity index 72%
rename from wasm/Library_components.mk
rename to static/Library_components.mk
index 128a3c12c2df..d3e7a0d149c1 100644
--- a/wasm/Library_components.mk
+++ b/static/Library_components.mk
@@ -9,8 +9,14 @@
 
 $(eval $(call gb_Library_Library,components))
 
+$(eval $(call gb_Library_set_plugin_for,components,cppuhelper))
+
 $(eval $(call gb_Library_add_generated_exception_objects,components,\
-    CustomTarget/wasm/component_maps \
+    CustomTarget/static/component_maps \
+))
+
+$(eval $(call gb_Library_use_libraries,acc,\
+    $(gb_CPPU_ENV)_uno \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/wasm/Makefile b/static/Makefile
similarity index 100%
rename from wasm/Makefile
rename to static/Makefile
diff --git a/wasm/Module_wasm.mk b/static/Module_static.mk
similarity index 77%
rename from wasm/Module_wasm.mk
rename to static/Module_static.mk
index eff9d0d7d1e9..f8909994ab7b 100644
--- a/wasm/Module_wasm.mk
+++ b/static/Module_static.mk
@@ -6,11 +6,11 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-$(eval $(call gb_Module_Module,wasm))
+$(eval $(call gb_Module_Module,static))
 
-ifeq ($(OS),EMSCRIPTEN)
+ifeq ($(DISABLE_DYNLOADING),TRUE)
 
-$(eval $(call gb_Module_add_targets,wasm,\
+$(eval $(call gb_Module_add_targets,static,\
     CustomTarget_components \
     Library_components \
 ))
diff --git a/static/README b/static/README
new file mode 100644
index 000000000000..d1254dd22da3
--- /dev/null
+++ b/static/README
@@ -0,0 +1,2 @@
+Static components library, containing a map from all component names
+to their constructor function calls.
diff --git a/sw/CppunitTest_sw_apitests.mk b/sw/CppunitTest_sw_apitests.mk
index d65c058fc97c..4124c32be618 100644
--- a/sw/CppunitTest_sw_apitests.mk
+++ b/sw/CppunitTest_sw_apitests.mk
@@ -53,7 +53,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_apitests, \
     ucbhelper \
     unotest \
     utl \
-    vbahelper \
+    $(call gb_Helper_optional,SCRIPTING,vbahelper) \
     vcl \
     xo \
 ))
diff --git a/sw/CppunitTest_sw_macros_test.mk b/sw/CppunitTest_sw_macros_test.mk
index 7f38c45180bb..bb675c609df3 100644
--- a/sw/CppunitTest_sw_macros_test.mk
+++ b/sw/CppunitTest_sw_macros_test.mk
@@ -48,7 +48,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_macros_test, \
     ucbhelper \
 	unotest \
     utl \
-    vbahelper \
+    $(call gb_Helper_optional,SCRIPTING,vbahelper) \
     vcl \
     xo \
 ))
diff --git a/sw/CppunitTest_sw_uwriter.mk b/sw/CppunitTest_sw_uwriter.mk
index e6a490c5dff1..b0c36f396ba0 100644
--- a/sw/CppunitTest_sw_uwriter.mk
+++ b/sw/CppunitTest_sw_uwriter.mk
@@ -56,7 +56,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_uwriter, \
     ucbhelper \
     unotest \
     utl \
-    vbahelper \
+    $(call gb_Helper_optional,SCRIPTING,vbahelper) \
     vcl \
 	xmlreader \
     xo \
diff --git a/unotest/source/cpp/bootstrapfixturebase.cxx b/unotest/source/cpp/bootstrapfixturebase.cxx
index 5c5b3bcc3a9c..348ecb796e85 100644
--- a/unotest/source/cpp/bootstrapfixturebase.cxx
+++ b/unotest/source/cpp/bootstrapfixturebase.cxx
@@ -8,10 +8,13 @@
  */
 
 #include <sal/config.h>
+#include <config_features.h>
 
 #include <unotest/bootstrapfixturebase.hxx>
 #include <comphelper/processfactory.hxx>
+#if HAVE_FEATURE_SCRIPTING
 #include <basic/sbstar.hxx>
+#endif
 
 using namespace ::com::sun::star;
 
@@ -30,6 +33,11 @@ void test::BootstrapFixtureBase::setUp()
     m_xSFactory.set(m_xFactory, uno::UNO_QUERY_THROW);
 }
 
-void test::BootstrapFixtureBase::tearDown() { StarBASIC::DetachAllDocBasicItems(); }
+void test::BootstrapFixtureBase::tearDown()
+{
+#if HAVE_FEATURE_SCRIPTING
+    StarBASIC::DetachAllDocBasicItems()
+#endif
+}
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/Executable_ui-previewer.mk b/vcl/Executable_ui-previewer.mk
index f853ce40864e..7b846a2d3c29 100644
--- a/vcl/Executable_ui-previewer.mk
+++ b/vcl/Executable_ui-previewer.mk
@@ -41,6 +41,7 @@ $(eval $(call gb_Executable_add_defs,ui-previewer,\
 ))
 
 ifeq ($(OS), $(filter LINUX %BSD SOLARIS, $(OS)))
+ifneq (,$(USING_X11))
 $(eval $(call gb_Executable_add_libs,ui-previewer,\
     -lm $(DLOPEN_LIBS) \
     -lX11 \
@@ -50,6 +51,7 @@ $(eval $(call gb_Executable_use_static_libraries,ui-previewer,\
     glxtest \
 ))
 endif
+endif
 
 $(eval $(call gb_Executable_add_default_nativeres,ui-previewer))
 
diff --git a/vcl/Executable_vcldemo.mk b/vcl/Executable_vcldemo.mk
index a9a8d195fdc9..7b8ecadab3cf 100644
--- a/vcl/Executable_vcldemo.mk
+++ b/vcl/Executable_vcldemo.mk
@@ -55,6 +55,7 @@ $(eval $(call gb_Executable_use_static_libraries,vcldemo,\
 ))
 
 ifeq ($(OS), $(filter LINUX %BSD SOLARIS, $(OS)))
+ifneq (,$(USING_X11))
 $(eval $(call gb_Executable_add_libs,vcldemo,\
 	-lm $(DLOPEN_LIBS) \
     -lX11 \
@@ -64,5 +65,6 @@ $(eval $(call gb_Executable_use_static_libraries,vcldemo,\
 	glxtest \
 ))
 endif
+endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 95a6cf9ab878..1bc2c22e1b1c 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -580,7 +580,7 @@ vcl_headless_freetype_code=\
 
 ifeq ($(USING_X11),TRUE)
 $(eval $(call gb_Library_add_exception_objects,vcl,\
-    vcl/source/app/salplug \
+    $(if $(DISABLE_DYNLOADING),,vcl/source/app/salplug) \
     vcl/unx/generic/printer/jobdata \
     vcl/unx/generic/printer/ppdparser \
     vcl/unx/generic/window/screensaverinhibitor \
@@ -622,6 +622,12 @@ $(eval $(call gb_Library_use_externals,vcl,\
     fontconfig \
     freetype \
 ))
+else
+ifneq (,$(DISABLE_DYNLOADING))
+$(eval $(call gb_Library_add_exception_objects,vcl,\
+    vcl/wasm/salplug \
+))
+endif
 endif
 
 ifeq ($(OS), $(filter LINUX %BSD SOLARIS, $(OS)))
diff --git a/vcl/Library_vclplug_qt5.mk b/vcl/Library_vclplug_qt5.mk
index a91841ec32e4..cbf279ca179e 100644
--- a/vcl/Library_vclplug_qt5.mk
+++ b/vcl/Library_vclplug_qt5.mk
@@ -99,7 +99,6 @@ $(eval $(call gb_Library_add_exception_objects,vclplug_qt5,\
     vcl/qt5/Qt5MainWindow \
     vcl/qt5/Qt5Menu \
     vcl/qt5/Qt5Object \
-    vcl/qt5/Qt5OpenGLContext \
     vcl/qt5/Qt5Painter \
     vcl/qt5/Qt5Printer \
     vcl/qt5/Qt5SvpGraphics \
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index f01de5e0a89c..2e2034d131f9 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -32,19 +32,9 @@ $(eval $(call gb_Module_add_targets,vcl,\
     $(if $(filter DESKTOP,$(BUILD_TYPE))$(filter EMSCRIPTEN,$(OS)), \
         StaticLibrary_vclmain \
         $(if $(ENABLE_MACOSX_SANDBOX),, \
-            $(if $(DISABLE_GUI),, \
-                Executable_ui-previewer)) \
+                Executable_ui-previewer) \
         $(if $(filter EMSCRIPTEN LINUX MACOSX SOLARIS WNT %BSD,$(OS)), \
-            $(if $(DISABLE_GUI),, \
-                Executable_vcldemo ))) \
-))
-
-$(eval $(call gb_Module_add_targets,vcl,\
-    $(if $(filter-out EMSCRIPTEN ANDROID iOS WNT,$(OS)), \
-        Executable_svdemo \
-        Executable_fftester \
-        Executable_svptest \
-        Executable_svpclient) \
+                Executable_vcldemo )) \
 ))
 
 $(eval $(call gb_Module_add_l10n_targets,vcl,\
diff --git a/wasm/README b/wasm/README
deleted file mode 100644
index a23bd6a45ea9..000000000000
--- a/wasm/README
+++ /dev/null
@@ -1 +0,0 @@
-See /README.wasm
commit bf8f4cd1000e77b997c51d85b40b16c69e90bc6c
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Fri Feb 26 14:42:02 2021 +0100
Commit:     Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Wed May 5 21:41:11 2021 +0200

    catchall
    
    Change-Id: If3eadcc396ab500f1a08a334a957ee0494aef033

diff --git a/RepositoryModule_host.mk b/RepositoryModule_host.mk
index 25a314e9785a..64068ffc0e49 100644
--- a/RepositoryModule_host.mk
+++ b/RepositoryModule_host.mk
@@ -107,12 +107,10 @@ $(eval $(call gb_Module_add_moduledirs,libreoffice,\
 	$(call gb_Helper_optional,DESKTOP,setup_native) \
 	sfx2 \
 	shell \
-	slideshow \
 	smoketest \
 	solenv \
 	soltools \
 	sot \
-	starmath \
 	stoc \
 	store \
 	svl \
@@ -143,6 +141,7 @@ $(eval $(call gb_Module_add_moduledirs,libreoffice,\
 	vbahelper \
 	vcl \
 	wasm \
+	wasm-qt \
 	winaccessibility \
 	wizards \
 	writerfilter \
@@ -177,11 +176,10 @@ endef
 # the default goal is build (see Module.mk)
 ifeq (,$(filter-out build check unitcheck slowcheck screenshot subsequentcheck uicheck,$(MAKECMDGOALS)))
 $(eval $(call repositorymodule_serialize,\
-	scfilt \
 	$(call gb_Helper_optional,SCRIPTING,vbaobj) \
-	sc msword \
+	msword \
 	$(call gb_Helper_optional,DESKTOP,swui) \
-	sw sd \
+	sw \
 	$(call gb_Helper_optional,DBCONNECTIVITY,dbu) \
 	writerfilter cui chartcontroller chartcore oox \
 	$(if $(MERGELIBS), merged, \
diff --git a/configure.ac b/configure.ac
index 7e714ccc78f5..aa033a0c13ea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4401,6 +4401,10 @@ if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no"
     else
         AC_MSG_RESULT([yes])
     fi
+    if test "$_os" = "Emscripten" -a -z "$enable_optimized"; then
+        # Otherwise binaries simply become too large (linker OOM + browser fails to load)
+        enable_optimized=debug
+    fi
 else
     ENABLE_DEBUG=""
     AC_MSG_RESULT([no])
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index 0154db097caf..1f5d530a81f6 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -101,20 +101,6 @@ $(eval $(call gb_Rdb_add_components,services,\
 	    lotuswordpro/util/lwpfilter \
 	) \
 	oox/util/oox \
-	sc/util/sc \
-	sc/util/scd \
-	sc/util/scfilt \
-	scaddins/source/analysis/analysis \
-	scaddins/source/datefunc/date \
-	scaddins/source/pricing/pricing \
-	sd/util/sd \
-	sd/util/sdd \
-	sd/util/sdfilt \
-	sdext/source/presenter/presenter \
-	sdext/source/minimizer/minimizer \
-	slideshow/util/slideshow \
-	starmath/util/sm \
-	starmath/util/smd \
 	svx/util/svx \
 	svx/util/textconversiondlgs \
 	sw/util/msword \
@@ -144,7 +130,6 @@ $(eval $(call gb_Rdb_add_components,services,\
 	$(if $(ENABLE_LPSOLVE), \
 		sccomp/source/solver/lpsolvesolver \
 	) \
-	sccomp/source/solver/swarmsolver \
 	writerfilter/util/writerfilter \
 	writerperfect/source/draw/wpftdraw \
 	writerperfect/source/impress/wpftimpress \
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index 404b394d4e0c..f71525c835de 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -45,10 +45,9 @@ gb_LinkTarget__symbols_enabled = \
 
 # debug flags, if the LinkTarget is named in the list of libraries of ENABLE_SYMBOLS_FOR
 gb_LinkTarget__get_debugflags= \
-$(if $(ENABLE_OPTIMIZED),$(gb_COMPILEROPTFLAGS), \
-$(if $(ENABLE_OPTIMIZED_DEBUG),$(gb_COMPILERDEBUGOPTFLAGS), \
-$(gb_COMPILERNOOPTFLAGS))) \
-$(if $(call gb_LinkTarget__symbols_enabled,$(1)),$(gb_DEBUGINFO_FLAGS))
+    $(if $(ENABLE_OPTIMIZED),$(gb_COMPILEROPTFLAGS), \
+        $(if $(ENABLE_OPTIMIZED_DEBUG),$(gb_COMPILERDEBUGOPTFLAGS),$(gb_COMPILERNOOPTFLAGS))) \
+    $(if $(call gb_LinkTarget__symbols_enabled,$(1)),$(gb_DEBUGINFO_FLAGS))
 
 # T_LDFLAGS is just expanded once. Override the flags here, so that the linker and compiler use the same.
 ifeq (EMSCRIPTEN,$(OS))
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index d56b642382d2..515a2b37c9d4 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -158,7 +158,7 @@ $(call gb_Helper_abbreviate_dirs,\
 			$(WORKDIR)/LinkTarget/$(2).exports,$(1))))
 	$(if $(and $(filter CppunitTest Executable,$(TARGETTYPE)),$(filter EMSCRIPTEN,$(OS)),$(filter TRUE,$(ENABLE_QT5))), \
 		cp $(QT5_PLATFORMS_SRCDIR)/qtlogo.svg $(QT5_PLATFORMS_SRCDIR)/qtloader.js $(dir $(1)) ; \
-		sed -e 's/@APPNAME@/$(subst $(gb_Executable_EXT),,$(notdir $(1)))/' $(QT5_PLATFORMS_SRCDIR)/wasm_shell.html > $(1))
+		sed -e 's/@APPNAME@/$(subst $(gb_Executable_EXT),,$(notdir $(1)))/' $(QT5_PLATFORMS_SRCDIR)/wasm_shell.html > $(dir $(1))qt_$(notdir $(1)))
 endef
 
 define gb_LinkTarget__command_staticlink
diff --git a/solenv/gbuild/static.mk b/solenv/gbuild/static.mk
index da16724520d2..7928a699d42f 100644
--- a/solenv/gbuild/static.mk
+++ b/solenv/gbuild/static.mk
@@ -232,7 +232,7 @@ $$(if $$(filter-out GBUILD_TOUCHED,$$(call gb_$(2)__get_all_externals,$(3))), \
 	$$(eval $$(call gb_$(2)_use_externals,$(3),$$(filter-out GBUILD_TOUCHED,$$(call gb_$(2)__get_all_externals,$(3)))))) \
 $$(if $$(filter icui28n icuuc,$$(call gb_$(2)__get_all_externals,$(3))), \
 	$$(eval $$(call gb_$(2)_use_externals,$(3),icudata))) \
-$$(if $$(and $$(filter EMSCRIPTEN,$$(OS)),$$(call gb_$(2)__has_any_dependencies,$(3))), \
+$$(if $$(and $$(filter EMSCRIPTEN,$$(OS)),$$(call gb_$(2)__has_any_dependencies,$(3)),), \
 	$$(if $$(gb_$(2)__LAST_KNOWN), \
 		$$(if $$(gb_DEBUG_STATIC),$$(info $$(call gb_$(2)_get_linktargetfile,$(3)) => $$(call gb_$(2)_get_linktargetfile,$$(gb_$(2)__LAST_KNOWN)))) \
 		$$(eval $$(call gb_$(2)_get_linktargetfile,$(3)) : $$(call gb_$(2)_get_linktargetfile,$$(gb_$(2)__LAST_KNOWN)))) \
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index 3cf84ac21210..f01de5e0a89c 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -31,6 +31,9 @@ $(eval $(call gb_Module_add_targets,vcl,\
         Package_skia_denylist ) \
     $(if $(filter DESKTOP,$(BUILD_TYPE))$(filter EMSCRIPTEN,$(OS)), \
         StaticLibrary_vclmain \
+        $(if $(ENABLE_MACOSX_SANDBOX),, \
+            $(if $(DISABLE_GUI),, \
+                Executable_ui-previewer)) \
         $(if $(filter EMSCRIPTEN LINUX MACOSX SOLARIS WNT %BSD,$(OS)), \
             $(if $(DISABLE_GUI),, \
                 Executable_vcldemo ))) \
diff --git a/wasm/CustomTarget_wasm-qt5-mandelbrot_moc.mk b/wasm/CustomTarget_wasm-qt5-mandelbrot_moc.mk
deleted file mode 100644
index 52b7447d22e9..000000000000
--- a/wasm/CustomTarget_wasm-qt5-mandelbrot_moc.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_CustomTarget_CustomTarget,wasm/qt5-mandelbrot))
-
-$(call gb_CustomTarget_get_target,wasm/qt5-mandelbrot) : \
-	$(call gb_CustomTarget_get_workdir,wasm/qt5-mandelbrot)/renderthread.moc \
-	$(call gb_CustomTarget_get_workdir,wasm/qt5-mandelbrot)/mandelbrotwidget.moc \
-
-qt5_mandelbrot_MOCDEFS_H := $(call gb_CustomTarget_get_workdir,wasm/qt5-mandelbrot)/moc_predefs.h
-qt5_mandelbrot_MOCDEFS_CXX := $(call gb_CustomTarget_get_workdir,wasm/qt5-mandelbrot)/moc_dummy.cxx
-qt5_mandelbrot_WORKDIR :=  $(call gb_CustomTarget_get_workdir,wasm/qt5-mandelbrot)/.dir
-
-$(qt5_mandelbrot_MOCDEFS_CXX): | $(qt5_mandelbrot_WORKDIR)
-	touch $@
-
-$(qt5_mandelbrot_MOCDEFS_H): $(qt5_mandelbrot_MOCDEFS_CXX) | $(qt5_mandelbrot_WORKDIR)
-	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),CXX,1)
-	$(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),CXX)
-	$(CXX) -pipe -O2 -std=gnu++11 -fno-exceptions $(gb_EMSCRIPTEN_CPPFLAGS) -dM -E -o $@ $<
-	$(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),MOC)
-
-$(call gb_CustomTarget_get_workdir,wasm/qt5-mandelbrot)/%.moc : \
-		$(SRCDIR)/wasm/source/qt5-mandelbrot/%.h \
-		$(qt5_mandelbrot_MOCDEFS_H) | $(qt5_mandelbrot_WORKDIR)
-	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),MOC,1)
-	$(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),MOC)
-	$(MOC5) --include $(qt5_mandelbrot_MOCDEFS_H) $(gb_EMSCRIPTEN_QTDEFS) $< -o $@
-	$(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),MOC)
-
-# vim: set noet sw=4:
diff --git a/wasm/Executable_wasm-qt5-mandelbrot.mk b/wasm/Executable_wasm-qt5-mandelbrot.mk
deleted file mode 100644
index 7afaa81c0dc4..000000000000
--- a/wasm/Executable_wasm-qt5-mandelbrot.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_Executable_Executable,wasm-qt5-mandelbrot))
-
-$(eval $(call gb_Executable_use_custom_headers,wasm-qt5-mandelbrot,wasm/qt5-mandelbrot))
-
-$(eval $(call gb_Executable_use_externals,wasm-qt5-mandelbrot,\
-    graphite \
-    freetype \
-    harfbuzz \
-    libpng \
-    qt5 \
-))
-
-$(eval $(call gb_Executable_add_exception_objects,wasm-qt5-mandelbrot,\
-    wasm/source/qt5-mandelbrot/main \
-    wasm/source/qt5-mandelbrot/mandelbrotwidget \
-    wasm/source/qt5-mandelbrot/renderthread \
-))
-
-$(eval $(call gb_Executable_add_defs,wasm-qt5-mandelbrot,\
-    -DVCL_INTERNALS \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/wasm/Module_wasm.mk b/wasm/Module_wasm.mk
index d6f507a005df..eff9d0d7d1e9 100644
--- a/wasm/Module_wasm.mk
+++ b/wasm/Module_wasm.mk
@@ -11,8 +11,6 @@ $(eval $(call gb_Module_Module,wasm))
 ifeq ($(OS),EMSCRIPTEN)
 
 $(eval $(call gb_Module_add_targets,wasm,\
-    CustomTarget_wasm-qt5-mandelbrot_moc \
-    Executable_wasm-qt5-mandelbrot \
     CustomTarget_components \
     Library_components \
 ))
diff --git a/wasm/source/qt5-mandelbrot/main.cxx b/wasm/source/qt5-mandelbrot/main.cxx
deleted file mode 100644
index 037c63153cf2..000000000000
--- a/wasm/source/qt5-mandelbrot/main.cxx
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of The Qt Company Ltd nor the names of its
-**     contributors may be used to endorse or promote products derived
-**     from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "mandelbrotwidget.h"
-
-#include <QtWidgets/QApplication>
-#include <QtCore/QtPlugin>
-
-Q_IMPORT_PLUGIN(QWasmIntegrationPlugin)
-
-int main(int argc, char* argv[])
-{
-    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
-    QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
-    QApplication app(argc, argv);
-    MandelbrotWidget widget;
-    widget.show();
-    return app.exec();
-}
diff --git a/wasm/source/qt5-mandelbrot/mandelbrotwidget.cxx b/wasm/source/qt5-mandelbrot/mandelbrotwidget.cxx
deleted file mode 100644
index 5886dd2664c0..000000000000
--- a/wasm/source/qt5-mandelbrot/mandelbrotwidget.cxx
+++ /dev/null
@@ -1,228 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of The Qt Company Ltd nor the names of its
-**     contributors may be used to endorse or promote products derived
-**     from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "mandelbrotwidget.h"
-#include "mandelbrotwidget.moc"
-
-#include <QtGui/QPainter>
-#include <QtGui/QKeyEvent>
-
-#include <math.h>
-
-const double DefaultCenterX = -0.637011;
-const double DefaultCenterY = -0.0395159;
-const double DefaultScale = 0.00403897;
-
-const double ZoomInFactor = 0.8;
-const double ZoomOutFactor = 1 / ZoomInFactor;
-const int ScrollStep = 20;
-
-MandelbrotWidget::MandelbrotWidget(QWidget* parent)
-    : QWidget(parent)
-    , centerX(DefaultCenterX)
-    , centerY(DefaultCenterY)
-    , pixmapScale(DefaultScale)
-    , curScale(DefaultScale)
-{
-    connect(&thread, &RenderThread::renderedImage, this, &MandelbrotWidget::updatePixmap);
-
-    setWindowTitle(tr("Mandelbrot"));
-#if QT_CONFIG(cursor)
-    setCursor(Qt::CrossCursor);
-#endif
-    resize(550, 400);
-}
-
-void MandelbrotWidget::paintEvent(QPaintEvent* /* event */)
-{
-    QPainter painter(this);
-    painter.fillRect(rect(), Qt::black);
-
-    if (pixmap.isNull())
-    {
-        painter.setPen(Qt::white);
-        painter.drawText(rect(), Qt::AlignCenter, tr("Rendering initial image, please wait..."));
-        return;
-    }
-
-    if (qFuzzyCompare(curScale, pixmapScale))
-    {
-        painter.drawPixmap(pixmapOffset, pixmap);
-    }
-    else
-    {
-        auto previewPixmap = qFuzzyCompare(pixmap.devicePixelRatioF(), qreal(1))
-                                 ? pixmap
-                                 : pixmap.scaled(pixmap.size() / pixmap.devicePixelRatioF(),
-                                                 Qt::KeepAspectRatio, Qt::SmoothTransformation);
-        double scaleFactor = pixmapScale / curScale;
-        int newWidth = int(previewPixmap.width() * scaleFactor);
-        int newHeight = int(previewPixmap.height() * scaleFactor);
-        int newX = pixmapOffset.x() + (previewPixmap.width() - newWidth) / 2;
-        int newY = pixmapOffset.y() + (previewPixmap.height() - newHeight) / 2;
-
-        painter.save();
-        painter.translate(newX, newY);
-        painter.scale(scaleFactor, scaleFactor);
-
-        QRectF exposed = painter.transform().inverted().mapRect(rect()).adjusted(-1, -1, 1, 1);
-        painter.drawPixmap(exposed, previewPixmap, exposed);
-        painter.restore();
-    }
-
-    QString text = tr("Use mouse wheel or the '+' and '-' keys to zoom. "
-                      "Press and hold left mouse button to scroll.");
-    QFontMetrics metrics = painter.fontMetrics();
-    int textWidth = metrics.horizontalAdvance(text);
-
-    painter.setPen(Qt::NoPen);
-    painter.setBrush(QColor(0, 0, 0, 127));
-    painter.drawRect((width() - textWidth) / 2 - 5, 0, textWidth + 10, metrics.lineSpacing() + 5);
-    painter.setPen(Qt::white);
-    painter.drawText((width() - textWidth) / 2, metrics.leading() + metrics.ascent(), text);
-}
-
-void MandelbrotWidget::resizeEvent(QResizeEvent* /* event */)
-{
-    thread.render(centerX, centerY, curScale, size(), devicePixelRatioF());
-}
-
-void MandelbrotWidget::keyPressEvent(QKeyEvent* event)
-{
-    switch (event->key())
-    {
-        case Qt::Key_Plus:
-            zoom(ZoomInFactor);
-            break;
-        case Qt::Key_Minus:
-            zoom(ZoomOutFactor);
-            break;
-        case Qt::Key_Left:
-            scroll(-ScrollStep, 0);
-            break;
-        case Qt::Key_Right:
-            scroll(+ScrollStep, 0);
-            break;
-        case Qt::Key_Down:
-            scroll(0, -ScrollStep);
-            break;
-        case Qt::Key_Up:
-            scroll(0, +ScrollStep);
-            break;
-        default:
-            QWidget::keyPressEvent(event);
-    }
-}
-
-#if QT_CONFIG(wheelevent)
-void MandelbrotWidget::wheelEvent(QWheelEvent* event)
-{
-    const int numDegrees = event->angleDelta().y() / 8;
-    const double numSteps = numDegrees / double(15);
-    zoom(pow(ZoomInFactor, numSteps));
-}
-#endif
-
-void MandelbrotWidget::mousePressEvent(QMouseEvent* event)
-{
-    if (event->button() == Qt::LeftButton)
-        lastDragPos = event->pos();
-}
-
-void MandelbrotWidget::mouseMoveEvent(QMouseEvent* event)
-{
-    if (event->buttons() & Qt::LeftButton)
-    {
-        pixmapOffset += event->pos() - lastDragPos;
-        lastDragPos = event->pos();
-        update();
-    }
-}
-
-void MandelbrotWidget::mouseReleaseEvent(QMouseEvent* event)
-{
-    if (event->button() == Qt::LeftButton)
-    {
-        pixmapOffset += event->pos() - lastDragPos;
-        lastDragPos = QPoint();
-
-        const auto pixmapSize = pixmap.size() / pixmap.devicePixelRatioF();
-        int deltaX = (width() - pixmapSize.width()) / 2 - pixmapOffset.x();
-        int deltaY = (height() - pixmapSize.height()) / 2 - pixmapOffset.y();
-        scroll(deltaX, deltaY);
-    }
-}
-
-void MandelbrotWidget::updatePixmap(const QImage& image, double scaleFactor)
-{
-    if (!lastDragPos.isNull())
-        return;
-
-    pixmap = QPixmap::fromImage(image);
-    pixmapOffset = QPoint();
-    lastDragPos = QPoint();
-    pixmapScale = scaleFactor;
-    update();
-}
-
-void MandelbrotWidget::zoom(double zoomFactor)
-{
-    curScale *= zoomFactor;
-    update();
-    thread.render(centerX, centerY, curScale, size(), devicePixelRatioF());
-}
-
-void MandelbrotWidget::scroll(int deltaX, int deltaY)
-{
-    centerX += deltaX * curScale;
-    centerY += deltaY * curScale;
-    update();
-    thread.render(centerX, centerY, curScale, size(), devicePixelRatioF());
-}
diff --git a/wasm/source/qt5-mandelbrot/mandelbrotwidget.h b/wasm/source/qt5-mandelbrot/mandelbrotwidget.h
deleted file mode 100644
index 72e95568b522..000000000000
--- a/wasm/source/qt5-mandelbrot/mandelbrotwidget.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of The Qt Company Ltd nor the names of its
-**     contributors may be used to endorse or promote products derived
-**     from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#pragma once
-
-#include <QtGui/QPixmap>
-#include <QtWidgets/QWidget>
-
-#include "renderthread.h"
-
-class MandelbrotWidget : public QWidget
-{
-    Q_OBJECT
-
-public:
-    MandelbrotWidget(QWidget* parent = nullptr);
-
-protected:
-    void paintEvent(QPaintEvent* event) override;
-    void resizeEvent(QResizeEvent* event) override;
-    void keyPressEvent(QKeyEvent* event) override;
-#if QT_CONFIG(wheelevent)
-    void wheelEvent(QWheelEvent* event) override;
-#endif
-    void mousePressEvent(QMouseEvent* event) override;
-    void mouseMoveEvent(QMouseEvent* event) override;
-    void mouseReleaseEvent(QMouseEvent* event) override;
-
-private slots:
-    void updatePixmap(const QImage& image, double scaleFactor);
-    void zoom(double zoomFactor);
-
-private:
-    void scroll(int deltaX, int deltaY);
-
-    RenderThread thread;
-    QPixmap pixmap;
-    QPoint pixmapOffset;
-    QPoint lastDragPos;
-    double centerX;
-    double centerY;
-    double pixmapScale;
-    double curScale;
-};
diff --git a/wasm/source/qt5-mandelbrot/renderthread.cxx b/wasm/source/qt5-mandelbrot/renderthread.cxx
deleted file mode 100644
index 398e43ded15d..000000000000
--- a/wasm/source/qt5-mandelbrot/renderthread.cxx
+++ /dev/null
@@ -1,232 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of The Qt Company Ltd nor the names of its
-**     contributors may be used to endorse or promote products derived
-**     from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "renderthread.h"
-#include "renderthread.moc"
-
-#include <QtGui/QImage>
-#include <cmath>
-
-RenderThread::RenderThread(QObject* parent)
-    : QThread(parent)
-{
-    for (int i = 0; i < ColormapSize; ++i)
-        m_colormap[i] = rgbFromWaveLength(380.0 + (i * 400.0 / ColormapSize));
-}
-
-RenderThread::~RenderThread()
-{
-    m_mutex.lock();
-    m_abort = true;
-    m_condition.wakeOne();
-    m_mutex.unlock();
-
-    wait();
-}
-
-void RenderThread::render(double centerX, double centerY, double scaleFactor, QSize resultSize,
-                          double devicePixelRatio)
-{
-    QMutexLocker locker(&m_mutex);
-
-    m_centerX = centerX;
-    m_centerY = centerY;
-    m_scaleFactor = scaleFactor;
-    m_devicePixelRatio = devicePixelRatio;
-    m_resultSize = resultSize;
-
-    if (!isRunning())
-    {
-        start(LowPriority);
-    }
-    else
-    {
-        m_restart = true;
-        m_condition.wakeOne();
-    }
-}
-
-void RenderThread::run()
-{
-    forever
-    {
-        m_mutex.lock();
-        const double devicePixelRatio = m_devicePixelRatio;
-        const QSize resultSize = m_resultSize * devicePixelRatio;
-        const double requestedScaleFactor = m_scaleFactor;
-        const double scaleFactor = requestedScaleFactor / devicePixelRatio;
-        const double centerX = m_centerX;
-        const double centerY = m_centerY;
-        m_mutex.unlock();
-
-        int halfWidth = resultSize.width() / 2;
-        int halfHeight = resultSize.height() / 2;
-        QImage image(resultSize, QImage::Format_RGB32);
-        image.setDevicePixelRatio(devicePixelRatio);
-
-        const int NumPasses = 8;
-        int pass = 0;
-        while (pass < NumPasses)
-        {
-            const int MaxIterations = (1 << (2 * pass + 6)) + 32;
-            const int Limit = 4;
-            bool allBlack = true;
-
-            for (int y = -halfHeight; y < halfHeight; ++y)
-            {
-                if (m_restart)
-                    break;
-                if (m_abort)
-                    return;
-
-                auto scanLine = reinterpret_cast<uint*>(image.scanLine(y + halfHeight));
-                const double ay = centerY + (y * scaleFactor);
-
-                for (int x = -halfWidth; x < halfWidth; ++x)
-                {
-                    const double ax = centerX + (x * scaleFactor);
-                    double a1 = ax;
-                    double b1 = ay;
-                    int numIterations = 0;
-
-                    do
-                    {
-                        ++numIterations;
-                        const double a2 = (a1 * a1) - (b1 * b1) + ax;
-                        const double b2 = (2 * a1 * b1) + ay;
-                        if ((a2 * a2) + (b2 * b2) > Limit)
-                            break;
-
-                        ++numIterations;
-                        a1 = (a2 * a2) - (b2 * b2) + ax;
-                        b1 = (2 * a2 * b2) + ay;
-                        if ((a1 * a1) + (b1 * b1) > Limit)
-                            break;
-                    } while (numIterations < MaxIterations);
-
-                    if (numIterations < MaxIterations)
-                    {
-                        *scanLine++ = m_colormap[numIterations % ColormapSize];
-                        allBlack = false;
-                    }
-                    else
-                    {
-                        *scanLine++ = qRgb(0, 0, 0);
-                    }
-                }
-            }
-
-            if (allBlack && pass == 0)
-            {
-                pass = 4;
-            }
-            else
-            {
-                if (!m_restart)
-                    emit renderedImage(image, requestedScaleFactor);
-                ++pass;
-            }
-        }
-
-        m_mutex.lock();
-        if (!m_restart)
-            m_condition.wait(&m_mutex);
-        m_restart = false;
-        m_mutex.unlock();
-    }
-}
-
-uint RenderThread::rgbFromWaveLength(double wave)
-{
-    double r = 0;
-    double g = 0;
-    double b = 0;
-
-    if (wave >= 380.0 && wave <= 440.0)
-    {
-        r = -1.0 * (wave - 440.0) / (440.0 - 380.0);
-        b = 1.0;
-    }
-    else if (wave >= 440.0 && wave <= 490.0)
-    {
-        g = (wave - 440.0) / (490.0 - 440.0);
-        b = 1.0;
-    }
-    else if (wave >= 490.0 && wave <= 510.0)
-    {
-        g = 1.0;
-        b = -1.0 * (wave - 510.0) / (510.0 - 490.0);
-    }
-    else if (wave >= 510.0 && wave <= 580.0)
-    {
-        r = (wave - 510.0) / (580.0 - 510.0);
-        g = 1.0;
-    }
-    else if (wave >= 580.0 && wave <= 645.0)
-    {
-        r = 1.0;
-        g = -1.0 * (wave - 645.0) / (645.0 - 580.0);
-    }
-    else if (wave >= 645.0 && wave <= 780.0)
-    {
-        r = 1.0;
-    }
-

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list