summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2021-05-21 15:41:15 +0200
committerJan-Marek Glogowski <glogow@fbihome.de>2022-01-19 10:49:40 +0100
commit599cbdb9c2a1184680bb89aa2978e8003eca93d9 (patch)
treebc3f48e787d1bab1d74fb8fd66f4bd80bb69dc99
parent9ae9b3b47c24556b2bc9a100b3bde33273018c5e (diff)
WASM more initial bits and pieces
All the small stuff, which is needed for the WASM build, but is not really worth an extra patch. * No soffice.sh script needed for WASM * WASM soffice.bin executable extension is html * Some small additional SAL_LOG output * Default to colibre icon theme * Test for qt5 even without X11 * Remove emconfigure artefacts at the end of the configure run * No oosplash for WASM * Disable the Office IPC thread * Suppress -Wno-enum-conversion for Cairo builds * Fix libnumbertext by using gb_EMSCRIPTEN_CPPFLAGS * Map EMSCRIPTEN to LINUX nls * No extra newlines for missing icon theme images * Print the missing dependency in some gbuild error messages * Copy Qt WASM loader, HTML template and SVG logo for binaries * Especially build the vcldemo for Emscripten Change-Id: I356370c72cc09357411e14d0c00762152877a800 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128584 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
-rw-r--r--Repository.mk2
-rw-r--r--RepositoryFixes.mk4
-rw-r--r--comphelper/source/misc/synchronousdispatch.cxx4
-rw-r--r--configure.ac8
-rw-r--r--desktop/Module_desktop.mk2
-rw-r--r--desktop/source/app/officeipcthread.cxx2
-rw-r--r--external/cairo/ExternalProject_cairo.mk2
-rw-r--r--external/libnumbertext/ExternalProject_libnumbertext.mk2
-rw-r--r--sal/osl/unx/nlsupport.cxx4
-rw-r--r--solenv/bin/image-sort.py2
-rw-r--r--solenv/gbuild/LinkTarget.mk8
-rw-r--r--solenv/gbuild/Package.mk2
-rw-r--r--solenv/gbuild/platform/unxgcc.mk3
-rw-r--r--vcl/Module_vcl.mk4
14 files changed, 36 insertions, 13 deletions
diff --git a/Repository.mk b/Repository.mk
index 19dc0b034189..895d99fbadc2 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -1054,7 +1054,7 @@ $(eval $(call gb_Helper_register_packages_for_install,brand,\
desktop_branding \
$(if $(CUSTOM_BRAND_DIR),desktop_branding_custom) \
$(if $(filter DESKTOP,$(BUILD_TYPE)),desktop_scripts_install) \
- $(if $(and $(filter-out MACOSX HAIKU WNT,$(OS)),$(filter DESKTOP,$(BUILD_TYPE))),\
+ $(if $(and $(filter-out EMSCRIPTEN HAIKU MACOSX WNT,$(OS)),$(filter DESKTOP,$(BUILD_TYPE))),\
$(if $(DISABLE_GUI),, \
desktop_soffice_sh \
) \
diff --git a/RepositoryFixes.mk b/RepositoryFixes.mk
index db78722ce545..0cbb5ad93e6c 100644
--- a/RepositoryFixes.mk
+++ b/RepositoryFixes.mk
@@ -34,8 +34,12 @@ endif
ifeq ($(OS),MACOSX)
gb_Executable_FILENAMES := $(patsubst soffice_bin:soffice_bin,soffice_bin:soffice,$(gb_Executable_FILENAMES))
else
+ifeq ($(OS),EMSCRIPTEN)
+gb_Executable_FILENAMES := $(patsubst soffice_bin:soffice_bin%,soffice_bin:soffice.html,$(gb_Executable_FILENAMES))
+else
gb_Executable_FILENAMES := $(patsubst soffice_bin:soffice_bin%,soffice_bin:soffice.bin,$(gb_Executable_FILENAMES))
endif
+endif
gb_Executable_FILENAMES := $(patsubst soffice_exe:soffice_exe%,soffice_exe:soffice.exe,$(gb_Executable_FILENAMES))
gb_Executable_FILENAMES := $(patsubst soffice_com:soffice_com%,soffice_com:soffice.com,$(gb_Executable_FILENAMES))
diff --git a/comphelper/source/misc/synchronousdispatch.cxx b/comphelper/source/misc/synchronousdispatch.cxx
index a09f05db8331..6a0553d8117f 100644
--- a/comphelper/source/misc/synchronousdispatch.cxx
+++ b/comphelper/source/misc/synchronousdispatch.cxx
@@ -65,7 +65,9 @@ uno::Reference< lang::XComponent > SynchronousDispatch::dispatch(
}
catch ( uno::Exception& )
{
- SAL_WARN("comphelper","SynchronousDispatch::dispatch() Error while dispatching!");
+ // can't use TOOLS_WARN_EXCEPTION, as comphelper is used by libtk!
+ SAL_WARN("comphelper", "SynchronousDispatch::dispatch(): error while dispatching '"
+ << sURL << "' for '" << sTarget << "'!");
}
}
diff --git a/configure.ac b/configure.ac
index 7dfdb1a18062..e561a55e1a15 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1121,7 +1121,7 @@ emscripten)
enable_scripting=no
enable_xmlhelp=no
with_system_zlib=no
- with_theme="breeze"
+ with_theme="colibre"
_os=Emscripten
;;
@@ -5234,6 +5234,9 @@ if test "$using_x11" = yes; then
AC_DEFINE(USING_X11)
else
disable_x11_tests
+ if test "$DISABLE_DYNLOADING" = TRUE; then
+ test_qt5=yes
+ fi
fi
else
if test "$USING_X11" = TRUE; then
@@ -14645,4 +14648,7 @@ if test -s "$WARNINGS_FILE"; then
cat "$WARNINGS_FILE"
fi
+# Remove unneeded emconfigure artifacts
+rm -f a.out a.wasm a.out.js a.out.wasm
+
dnl vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk
index aca0273dc972..191a2cba4c6f 100644
--- a/desktop/Module_desktop.mk
+++ b/desktop/Module_desktop.mk
@@ -95,7 +95,7 @@ $(eval $(call gb_Module_add_targets,desktop,\
WinResTarget_swriter \
))
-else ifeq (,$(filter MACOSX ANDROID iOS HAIKU,$(OS)))
+else ifeq (,$(filter MACOSX ANDROID iOS HAIKU EMSCRIPTEN,$(OS)))
ifeq (,$(filter FUZZERS,$(BUILD_TYPE)))
$(eval $(call gb_Module_add_targets,desktop,\
diff --git a/desktop/source/app/officeipcthread.cxx b/desktop/source/app/officeipcthread.cxx
index 07880d27fc4c..d748bef60c68 100644
--- a/desktop/source/app/officeipcthread.cxx
+++ b/desktop/source/app/officeipcthread.cxx
@@ -697,7 +697,7 @@ RequestHandler::Status RequestHandler::Enable(bool ipc)
if( pGlobal.is() )
return IPC_STATUS_OK;
-#if !HAVE_FEATURE_DESKTOP || HAVE_FEATURE_MACOSX_SANDBOX
+#if !HAVE_FEATURE_DESKTOP || HAVE_FEATURE_MACOSX_SANDBOX || defined(EMSCRIPTEN)
ipc = false;
#endif
diff --git a/external/cairo/ExternalProject_cairo.mk b/external/cairo/ExternalProject_cairo.mk
index d7e5579d4107..8b9af6220118 100644
--- a/external/cairo/ExternalProject_cairo.mk
+++ b/external/cairo/ExternalProject_cairo.mk
@@ -48,7 +48,7 @@ $(call gb_ExternalProject_get_state_target,cairo,build) :
$(gb_RUN_CONFIGURE) ./configure \
$(if $(debug),STRIP=" ") \
$(if $(filter ANDROID iOS,$(OS)),CFLAGS="$(if $(debug),-g) $(ZLIB_CFLAGS) $(gb_VISIBILITY_FLAGS)") \
- $(if $(filter EMSCRIPTEN,$(OS)),CFLAGS=" $(ZLIB_CFLAGS)" --enable-pthread=yes PTHREAD_LIBS="") \
+ $(if $(filter EMSCRIPTEN,$(OS)),CFLAGS=" $(ZLIB_CFLAGS) -Wno-enum-conversion" --enable-pthread=yes PTHREAD_LIBS="") \
$(if $(filter-out EMSCRIPTEN ANDROID iOS,$(OS)),CFLAGS="$(CFLAGS) $(if $(debug),-g) $(ZLIB_CFLAGS)" ) \
$(if $(filter ANDROID iOS,$(OS)),PKG_CONFIG=./dummy_pkg_config) \
LIBS="$(ZLIB_LIBS)" \
diff --git a/external/libnumbertext/ExternalProject_libnumbertext.mk b/external/libnumbertext/ExternalProject_libnumbertext.mk
index 1473b5c136a3..68d56bee5c7f 100644
--- a/external/libnumbertext/ExternalProject_libnumbertext.mk
+++ b/external/libnumbertext/ExternalProject_libnumbertext.mk
@@ -16,7 +16,7 @@ $(eval $(call gb_ExternalProject_register_targets,libnumbertext,\
build \
))
-libnumbertext_CXXFLAGS=$(CXXFLAGS) $(CXXFLAGS_CXX11)
+libnumbertext_CXXFLAGS=$(CXXFLAGS) $(CXXFLAGS_CXX11) $(gb_EMSCRIPTEN_CPPFLAGS)
libnumbertext_CPPFLAGS+=$(gb_COMPILERDEFS_STDLIB_DEBUG)
diff --git a/sal/osl/unx/nlsupport.cxx b/sal/osl/unx/nlsupport.cxx
index cc07a13805ba..2780a7fdd895 100644
--- a/sal/osl/unx/nlsupport.cxx
+++ b/sal/osl/unx/nlsupport.cxx
@@ -32,7 +32,7 @@
#include "nlsupport.hxx"
// these share a lot, so use one define
-#if defined(LINUX) || defined(__sun) || \
+#if defined(LINUX) || defined(EMSCRIPTEN) || defined(__sun) || \
defined(FREEBSD) || defined(OPENBSD) || defined(DRAGONFLY) || defined(NETBSD)
#define LO_COMMON_NLS_ARCHS 1
#else
@@ -284,7 +284,7 @@ static const Pair nl_language_list[] = {
/* XXX MS-874 is an extension to tis620, so this is not
* really equivalent */
-#elif defined(LINUX)
+#elif defined(LINUX) || defined(EMSCRIPTEN)
#if !defined(CODESET)
#define CODESET _NL_CTYPE_CODESET_NAME
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/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index 3ea562e02b50..22fe3bafc3ff 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -56,11 +56,16 @@ gb_LinkTarget__get_debugflags= \
$(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))
+gb_LinkTarget__get_debugldflags=$(call gb_LinkTarget__get_debugflags,$1)
+else
# similar for LDFLAGS, use linker optimization flags in non-debug case,
# but moreover strip debug from libraries for which debuginfo is not wanted
# (some libraries reuse .o files from other libraries, notably unittests)
gb_LinkTarget__get_stripldflags=$(if $(strip $(CFLAGS)$(CXXFLAGS)$(OBJCFLAGS)$(OBJCXXFLAGS)$(LDFLAGS)),,$(gb_LINKERSTRIPDEBUGFLAGS))
gb_LinkTarget__get_debugldflags=$(if $(call gb_LinkTarget__symbols_enabled,$(1)),$(gb_LINKER_DEBUGINFO_FLAGS),$(gb_LINKEROPTFLAGS) $(call gb_LinkTarget__get_stripldflags,$(1)))
+endif
# generic cflags/cxxflags to use (optimization flags, debug flags)
# user supplied CFLAGS/CXXFLAGS override default debug/optimization flags
@@ -1925,7 +1930,7 @@ $(2) : $(call gb_LinkTarget_get_target,$(1))
touch -r $$< $$@; \
else \
rm -f $$<; \
- echo "ERROR: aux-target missing, library deleted, please try running make again"; \
+ echo "ERROR: aux-target $$@ missing, library deleted, please try running make again"; \
false; \
fi
@@ -2096,6 +2101,7 @@ endef
define gb_LinkTarget_use_package
$(call gb_LinkTarget_get_headers_target,$(1)) :| \
$(call gb_Package_get_target,$(strip $(2)))
+$(call gb_Package_get_target,$(strip $(2))): RDEPENDS += $(call gb_LinkTarget__get_workdir_linktargetname,$(1))
endef
diff --git a/solenv/gbuild/Package.mk b/solenv/gbuild/Package.mk
index e08ff07e1ba9..9c90322cfcdc 100644
--- a/solenv/gbuild/Package.mk
+++ b/solenv/gbuild/Package.mk
@@ -80,7 +80,7 @@ $(call gb_Package_get_preparation_target,%) :
$(call gb_Package_get_target,%) :
$(call gb_Output_announce,$*,$(true),PKG,2)
$(call gb_Trace_StartRange,$*,PKG)
- $(if $(PACKAGE_DEFINED),,$(call gb_Output_error,Something depends on package $* which does not exist.))
+ $(if $(PACKAGE_DEFINED),,$(call gb_Output_error,$(RDEPENDS) depend(s) on package $* which does not exist.))
rm -f $@ && \
mv $(call gb_var2file,$@.tmp,100,$(sort $(FILES))) $@
$(call gb_Trace_EndRange,$*,PKG)
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index e24aaa4e1fe6..de3c2f8cc95a 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -172,6 +172,9 @@ $(if $(filter Library,$(TARGETTYPE)), $(call gb_Helper_abbreviate_dirs,\
| cut -d' ' -f1-2 >> $(WORKDIR)/LinkTarget/$(2).exports.tmp && \
$(call gb_Helper_replace_if_different_and_touch,$(WORKDIR)/LinkTarget/$(2).exports.tmp, \
$(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 > $(dir $(1))qt_$(notdir $(1)))
endef
define gb_LinkTarget__command_staticlink
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index acd0de996364..bde384f05086 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -31,7 +31,9 @@ $(eval $(call gb_Module_add_targets,vcl,\
Package_skia_denylist ) \
$(if $(filter DESKTOP FUZZERS,$(BUILD_TYPE)), \
StaticLibrary_vclmain \
- $(if $(or $(DISABLE_GUI),$(DISABLE_DYNLOADING)),, \
+ $(if $(or $(DISABLE_GUI),$(DISABLE_DYNLOADING)), \
+ $(if $(filter EMSCRIPTEN,$(OS)),Executable_vcldemo) \
+ , \
$(if $(filter LINUX MACOSX SOLARIS WNT %BSD,$(OS)), \
Executable_vcldemo \
Executable_icontest \