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>
This commit is contained in:
Tor Lillqvist 2022-12-28 13:47:26 +02:00
parent a510543a46
commit de3b4b0200
11 changed files with 86 additions and 10 deletions

View file

@ -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 \

View file

@ -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;

View file

@ -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.

View file

@ -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: */

View file

@ -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) \

View file

@ -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 \
) \
))

View file

@ -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) \

View file

@ -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: */

View file

@ -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();

View file

@ -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

View file

@ -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