Repository.mk                                  |    6 +++++
 desktop/source/lib/init.cxx                    |    8 ++++---
 i18nlangtag/source/languagetag/languagetag.cxx |    6 ++++-
 include/osl/detail/emscripten-bootstrap.h      |   26 +++++++++++++++++++++++++
 sal/Library_lo-bootstrap.mk                    |    9 ++++++++
 sal/Library_sal.mk                             |    2 -
 sal/Module_sal.mk                              |    2 -
 sal/emscripten/lo-bootstrap.c                  |   19 ++++++++++++++++++
 sal/rtl/bootstrap.cxx                          |    6 ++++-
 solenv/clang-format/excludelist                |    2 +
 unotools/source/i18n/resmgr.cxx                |   10 ++++++---
 11 files changed, 86 insertions(+), 10 deletions(-)

New commits:
commit cae91e5b77c35e8b5cb9b0e543ae049dd0f72fd1
Author:     Tor Lillqvist <t...@collabora.com>
AuthorDate: Wed Dec 28 13:47:26 2022 +0200
Commit:     Tor Lillqvist <t...@collabora.com>
CommitDate: Fri Feb 24 07:55:10 2023 +0000

    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 <t...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147558
    Tested-by: Tor Lillqvist <t...@collabora.com>

diff --git a/Repository.mk b/Repository.mk
index 8f3ff83ab181..80e511671626 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 72fab196c38a..452ae0b60a64 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -34,6 +34,10 @@
 #include <osl/detail/android-bootstrap.h>
 #endif
 
+#ifdef EMSCRIPTEN
+#include <osl/detail/emscripten-bootstrap.h>
+#endif
+
 #include <algorithm>
 #include <memory>
 #include <iostream>
@@ -7534,10 +7538,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 d9b216d264f5..db1e6f7e4a7f 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -5464,6 +5464,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
@@ -7575,6 +7576,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

Reply via email to