summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2022-12-28 13:47:26 +0200
committerTor Lillqvist <tml@collabora.com>2022-12-28 13:08:56 +0000
commitde3b4b02008d708a66f8d6a8a365974eac7de3b3 (patch)
tree6155bc059c83706117233e445ce6cc1f78b4c129
parenta510543a466aca0d152f82af24d16563f28455f0 (diff)
Introduce lo_get_app_data_dir() for Emscripten, too
And not just Android. Hardcoded to return "/instdir" to match what is in the emscripten_fs_image. Change-Id: I26d4ec5e02ec9900e35ca47f1565a13ad2b723b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144849 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
-rw-r--r--Repository.mk6
-rw-r--r--desktop/source/lib/init.cxx8
-rw-r--r--i18nlangtag/source/languagetag/languagetag.cxx6
-rw-r--r--include/osl/detail/emscripten-bootstrap.h26
-rw-r--r--sal/Library_lo-bootstrap.mk9
-rw-r--r--sal/Library_sal.mk2
-rw-r--r--sal/Module_sal.mk2
-rw-r--r--sal/emscripten/lo-bootstrap.c19
-rw-r--r--sal/rtl/bootstrap.cxx6
-rw-r--r--solenv/clang-format/excludelist2
-rw-r--r--unotools/source/i18n/resmgr.cxx10
11 files changed, 86 insertions, 10 deletions
diff --git a/Repository.mk b/Repository.mk
index 56d8b2d28b84..d6db83c47873 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -335,6 +335,12 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ogltrans, \
OGLTrans \
))
+ifeq ($(OS),EMSCRIPTEN)
+$(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
+ lo-bootstrap \
+))
+endif
+
ifneq ($(ENABLE_WASM_STRIP_CANVAS),TRUE)
$(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
canvastools \
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index cdf6049d193d..f805f4a73322 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -29,6 +29,10 @@
#include <osl/detail/android-bootstrap.h>
#endif
+#ifdef EMSCRIPTEN
+#include <osl/detail/emscripten-bootstrap.h>
+#endif
+
#include <algorithm>
#include <memory>
#include <iostream>
@@ -7106,10 +7110,8 @@ static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const char
}
else
{
-#ifdef ANDROID
+#if defined ANDROID || defined EMSCRIPTEN
aAppPath = OUString::fromUtf8(lo_get_app_data_dir()) + "/program";
-#elif defined __EMSCRIPTEN__
- aAppPath = OUString::fromUtf8("instdir/program");
#else
// Fun conversion dance back and forth between URLs and system paths...
OUString aAppURL;
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index 92b9b5807e99..b54c2614e7f2 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -36,6 +36,10 @@
#include <osl/detail/android-bootstrap.h>
#endif
+#ifdef EMSCRIPTEN
+#include <osl/detail/emscripten-bootstrap.h>
+#endif
+
using namespace com::sun::star;
namespace {
@@ -215,7 +219,7 @@ void LiblangtagDataRef::teardown()
void LiblangtagDataRef::setupDataPath()
{
-#if defined(ANDROID)
+#if defined(ANDROID) || defined(EMSCRIPTEN)
maDataPath = OString(lo_get_app_data_dir()) + "/share/liblangtag";
#else
// maDataPath is assumed to be empty here.
diff --git a/include/osl/detail/emscripten-bootstrap.h b/include/osl/detail/emscripten-bootstrap.h
new file mode 100644
index 000000000000..580964253377
--- /dev/null
+++ b/include/osl/detail/emscripten-bootstrap.h
@@ -0,0 +1,26 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ */
+
+#pragma once
+
+#if defined(EMSCRIPTEN)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+const char *lo_get_app_data_dir(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // EMSCRIPTEN
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/Library_lo-bootstrap.mk b/sal/Library_lo-bootstrap.mk
index 3dc4bf9dfeaa..1e727cdee427 100644
--- a/sal/Library_lo-bootstrap.mk
+++ b/sal/Library_lo-bootstrap.mk
@@ -10,6 +10,8 @@
$(eval $(call gb_Library_Library,lo-bootstrap))
+ifeq (ANDROID,$(OS))
+
# We explicitly *don't* want gb_STDLIBS to be linked here
$(eval $(call gb_Library_disable_standard_system_libs,lo-bootstrap))
@@ -22,6 +24,13 @@ $(eval $(call gb_Library_add_cobjects,lo-bootstrap,\
sal/android/libreofficekit-jni \
sal/android/lo-bootstrap \
))
+endif
+
+ifeq (EMSCRIPTEN,$(OS))
+$(eval $(call gb_Library_add_cobjects,lo-bootstrap,\
+ sal/emscripten/lo-bootstrap \
+))
+endif
$(eval $(call gb_Library_set_include,lo-bootstrap,\
$$(INCLUDE) \
diff --git a/sal/Library_sal.mk b/sal/Library_sal.mk
index aae7c97f0310..decfa39ce304 100644
--- a/sal/Library_sal.mk
+++ b/sal/Library_sal.mk
@@ -37,7 +37,7 @@ $(eval $(call gb_Library_add_defs,sal,\
))
$(eval $(call gb_Library_use_libraries,sal,\
- $(if $(filter ANDROID,$(OS)), \
+ $(if $(filter ANDROID EMSCRIPTEN,$(OS)), \
lo-bootstrap \
) \
))
diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk
index 34c3f1450613..854d46a8e6d4 100644
--- a/sal/Module_sal.mk
+++ b/sal/Module_sal.mk
@@ -11,7 +11,7 @@ $(eval $(call gb_Module_Module,sal))
$(eval $(call gb_Module_add_targets,sal,\
$(if $(CROSS_COMPILING),,$(if $(filter TRUE,$(DISABLE_DYNLOADING)),,Executable_cppunittester)) \
- $(if $(filter $(OS),ANDROID), \
+ $(if $(filter $(OS),ANDROID EMSCRIPTEN), \
Library_lo-bootstrap) \
Library_sal \
$(call gb_CondLibSalTextenc,Library_sal_textenc) \
diff --git a/sal/emscripten/lo-bootstrap.c b/sal/emscripten/lo-bootstrap.c
new file mode 100644
index 000000000000..cfcf3df1fdf2
--- /dev/null
+++ b/sal/emscripten/lo-bootstrap.c
@@ -0,0 +1,19 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ */
+
+#include <osl/detail/emscripten-bootstrap.h>
+
+__attribute__ ((visibility("default")))
+const char *
+lo_get_app_data_dir(void)
+{
+ return "/instdir";
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/rtl/bootstrap.cxx b/sal/rtl/bootstrap.cxx
index 422411190ea4..04e0a4d0ed14 100644
--- a/sal/rtl/bootstrap.cxx
+++ b/sal/rtl/bootstrap.cxx
@@ -50,6 +50,10 @@
#include <osl/detail/android-bootstrap.h>
#endif
+#ifdef EMSCRIPTEN
+#include <osl/detail/emscripten-bootstrap.h>
+#endif
+
#ifdef IOS
#include <premac.h>
#import <Foundation/Foundation.h>
@@ -456,7 +460,7 @@ bool Bootstrap_Impl::getValue(
return true;
}
-#ifdef ANDROID
+#if defined ANDROID || defined EMSCRIPTEN
if (key == "APP_DATA_DIR")
{
const char *app_data_dir = lo_get_app_data_dir();
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index 0fa8c8402159..b4e26cccaa7e 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -5463,6 +5463,7 @@ include/osl/conditn.hxx
include/osl/detail/android-bootstrap.h
include/osl/detail/component-defines.h
include/osl/detail/component-mapping.h
+include/osl/detail/emscripten-bootstrap.h
include/osl/diagnose.h
include/osl/diagnose.hxx
include/osl/endian.h
@@ -7574,6 +7575,7 @@ sal/android/libreofficekit-jni.c
sal/android/lo-bootstrap.c
sal/android/uthash.h
sal/cppunittester/cppunittester.cxx
+sal/emscripten/lo-bootstrap.c
sal/inc/signalshared.hxx
sal/osl/all/compat.cxx
sal/osl/all/debugbase.cxx
diff --git a/unotools/source/i18n/resmgr.cxx b/unotools/source/i18n/resmgr.cxx
index 3a7116350062..04f27b916db3 100644
--- a/unotools/source/i18n/resmgr.cxx
+++ b/unotools/source/i18n/resmgr.cxx
@@ -36,7 +36,7 @@
#include <string.h>
#include <stdio.h>
-#if defined UNX && !defined MACOSX && !defined IOS && !defined ANDROID
+#if defined UNX && !defined MACOSX && !defined IOS && !defined ANDROID && !defined EMSCRIPTEN
# include <libintl.h>
#endif
@@ -57,6 +57,10 @@
#include <osl/detail/android-bootstrap.h>
#endif
+#ifdef EMSCRIPTEN
+#include <osl/detail/emscripten-bootstrap.h>
+#endif
+
#if defined(_WIN32) && defined(DBG_UTIL)
#include <o3tl/char16_t2wchar_t.hxx>
#include <prewin.h>
@@ -134,7 +138,7 @@ namespace Translate
gen.characters(boost::locale::char_facet_t::char_f);
gen.categories(boost::locale::category_t::message | boost::locale::category_t::information);
#endif
-#if defined(ANDROID)
+#if defined(ANDROID) || defined(EMSCRIPTEN)
OString sPath(OString(lo_get_app_data_dir()) + "/program/resource");
#else
OUString uri("$BRAND_BASE_DIR/$BRAND_SHARE_RESOURCE_SUBDIR/");
@@ -151,7 +155,7 @@ namespace Translate
OString sPath(OUStringToOString(path, eEncoding));
#endif
gen.add_messages_path(sPath.getStr());
-#if defined UNX && !defined MACOSX && !defined IOS && !defined ANDROID
+#if defined UNX && !defined MACOSX && !defined IOS && !defined ANDROID && !defined EMSCRIPTEN
// allow gettext to find these .mo files e.g. so gtk dialogs can use them
bindtextdomain(aPrefixName.data(), sPath.getStr());
// tdf#131069 gtk, and anything sane, always wants utf-8 strings as output