summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2012-10-09 17:45:27 +0300
committerTor Lillqvist <tml@iki.fi>2012-10-11 10:07:11 +0300
commit5476c14de5701478b2c36ca170ec4d713be18612 (patch)
tree38a31d94b8ee1b48a9969fc9e5da42c086517960 /android
parent3a5d6a9ac395a0fa86d1ef0965ecba573513f19b (diff)
Adapt to disable-dynloading style
No need to load any native libraries here any more. For now, using the same native-code.cxx as over in ../DocumentLoader works. In other words, we end up with the same code in liblo-native-code.so. This will obviously change if/when the UNO APIs that are called start to differ. Change-Id: Ia47ce833c5a290a93986005f92e981c89f63bf71
Diffstat (limited to 'android')
-rw-r--r--android/experimental/LibreOffice4Android/Makefile123
-rw-r--r--android/experimental/LibreOffice4Android/native-code.cxx100
-rw-r--r--android/experimental/LibreOffice4Android/src/org/libreoffice/android/DocumentLoader.java6
-rw-r--r--android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java5
4 files changed, 128 insertions, 106 deletions
diff --git a/android/experimental/LibreOffice4Android/Makefile b/android/experimental/LibreOffice4Android/Makefile
index 3f0be60a46d5..f81e814e56be 100644
--- a/android/experimental/LibreOffice4Android/Makefile
+++ b/android/experimental/LibreOffice4Android/Makefile
@@ -1,102 +1,36 @@
include ../../../config_host.mk
-include ../../Bootstrap/Makefile.shared
-# The package of this app
-APP_PACKAGE=org.libreoffice
+LIBS = \
+ -Wl,--start-group \
+ $(wildcard $(OUTDIR)/lib/lib*.a) \
+ -Wl,--end-group
+
+WHOLELIBS = \
+ -Wl,--whole-archive \
+ $(addprefix -l,$(strip \
+ juh \
+ )) \
+ -Wl,--no-whole-archive
# The default target just builds.
all: build-ant
+include ../../Bootstrap/Makefile.shared
+
+# The package of this app
+APP_PACKAGE=org.libreoffice
+
+link-so:
+# Build the single .so for this app
+ mkdir -p $(OBJLOCAL)
+ $(CXX) -Wl,--stats -Wl,--no-keep-files-mapped -Wl,--no-undefined -DANDROID -DDISABLE_DYNLOADING -shared -o $(OBJLOCAL)/liblo-native-code.so -I$(OUTDIR)/inc native-code.cxx -L$(OUTDIR)/lib $(WHOLELIBS) $(LIBS) -lgnustl_static -landroid -llog -lz
+ mkdir -p $(SODEST)
+ cp $(OBJLOCAL)/liblo-native-code.so $(SODEST)
+ $(STRIP) --strip-debug $(SODEST)/liblo-native-code.so
+
copy-stuff:
-# First always clean
- rm -rf libs $(OBJLOCAL)
- mkdir -p $(SODEST) $(OBJLOCAL)
-#
-# Copy shared libraries (including UNO components) we need to
-# libs/$(ANDROID_APP_ABI) so that ant will include them in the .apk.
-#
-# Copy them to obj/local/$(ANDROID_APP_ABI), too, where gdb will look for
-# them.
-#
- for F in $(strip \
- basegfxlo \
- bootstrap.uno \
- chartcontrollerlo \
- chartcorelo \
- comphelpgcc3 \
- dbaxmllo \
- dbtoolslo \
- expwrap.uno \
- frmlo \
- gcc3_uno \
- i18nisolang1gcc3 \
- icudatalo \
- icui18nlo \
- iculelo \
- icuuclo \
- introspection.uno \
- java_uno \
- juh \
- juhx \
- jvmaccessgcc3 \
- jvmfwk \
- libotouchlo \
- lo-bootstrap \
- localedata_en \
- localedata_es \
- localedata_euro \
- localedata_others \
- lwpftlo \
- mergedlo \
- msfilterlo \
- mswordlo \
- ooxlo \
- reflection.uno \
- reg \
- sclo \
- sclo \
- scdlo \
- scfiltlo \
- sdlo \
- sddlo \
- smdlo \
- stocservices.uno \
- store \
- svgfilterlo \
- swdlo \
- swlo \
- swdlo \
- t602filterlo \
- textinstream.uno \
- tllo \
- ucbhelper4gcc3 \
- ucppkg1 \
- uno_cppu \
- uno_cppuhelpergcc3 \
- uno_sal \
- uno_salhelpergcc3 \
- uno_cppuhelpergcc3 \
- unordflo \
- unoxmllo \
- vbahelperlo \
- vbaswobj.uno \
- wpftdrawlo \
- wpftwriterlo \
- xml2 \
- xmlfdlo \
- xmlreader \
- xmlsecurity \
- xoflo \
- xslt \
- ); do \
- $(call COPYSO,$(OUTDIR)/lib/lib$${F}.so); \
- done
-#
-# Then the shared GNU C++ library
- $(call COPYSO,$(ANDROID_NDK_HOME)/sources/cxx-stl/gnu-libstdc++/$(ANDROID_NDK_TOOLCHAIN_VERSION_SUBDIR)libs/$(ANDROID_APP_ABI)/libgnustl_shared.so)
-#
-# Then other "assets". Let the directory structure under assets mimic
+# Then "assets". Let the directory structure under assets mimic
# that under solver for now.
#
# Please note that I have no idea what all of this is really necessary and for
@@ -195,10 +129,11 @@ copy-stuff:
#
# Then gdbserver and gdb.setup so that we can debug with ndk-gdb.
#
+ mkdir -p $(SODEST)
cp $(ANDROID_NDK_GDBSERVER) $(SODEST)
echo set solib-search-path ./obj/local/$(ANDROID_APP_ABI) >$(SODEST)/gdb.setup
-build-ant: copy-stuff properties
+build-ant: copy-stuff link-so properties
echo sdk.dir=$(ANDROID_SDK_HOME) >../../abs-lib/local.properties
# ActionBarSherlock uses the v4 support library, apparently one needs to copy
# it like this for it to be found
@@ -221,6 +156,4 @@ build-ant: copy-stuff properties
unset JAVA_HOME && $(ANT) debug
run:
-# /data/local/tmp/sample-document.odt
-# add -e lo-strace to strace
- adb shell am start -n $(APP_PACKAGE)/.ui.LibreOfficeUIActivity -e lo-strace -e input /assets/test1.odt
+ adb shell am start -n $(APP_PACKAGE)/.ui.LibreOfficeUIActivity -e input /assets/test1.odt
diff --git a/android/experimental/LibreOffice4Android/native-code.cxx b/android/experimental/LibreOffice4Android/native-code.cxx
new file mode 100644
index 000000000000..d4ef4b0e82fe
--- /dev/null
+++ b/android/experimental/LibreOffice4Android/native-code.cxx
@@ -0,0 +1,100 @@
+/* -*- 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/android-bootstrap.h"
+
+extern "C"
+{
+ extern void * avmedia_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * dbaxml_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * evtatt_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * fileacc_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * frm_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * fsstorage_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * fwk_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * fwl_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * fwm_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * hwp_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * hyphen_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * lng_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * lnth_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * lotuswordpro_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * oox_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * sb_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * sc_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * scd_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * scfilt_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * sd_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * sdd_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * sm_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * smd_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * svgfilter_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * sw_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * swd_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * t602filter_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * textfd_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * unoxml_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * unordf_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * wpftdraw_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * wpftwriter_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * xmlfd_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * xmlsecurity_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * xo_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+ extern void * xof_component_getFactory( const char * pImplName, void * pServiceManager, void * pRegistryKey );
+}
+
+extern "C"
+__attribute__ ((visibility("default")))
+const lib_to_component_mapping *
+lo_get_libmap(void)
+{
+ static lib_to_component_mapping map[] = {
+ { "libavmedialo.a", avmedia_component_getFactory },
+ { "libdbaxmllo.a", dbaxml_component_getFactory },
+ { "libevtattlo.a", evtatt_component_getFactory },
+ { "libfileacc.a", fileacc_component_getFactory },
+ { "libfrmlo.a", frm_component_getFactory },
+ { "libfsstorage.uno.a", fsstorage_component_getFactory },
+ { "libfwklo.a", fwk_component_getFactory },
+ { "libfwllo.a", fwl_component_getFactory },
+ { "libfwmlo.a", fwm_component_getFactory },
+ { "libhwplo.a", hwp_component_getFactory },
+ { "libhyphenlo.a", hyphen_component_getFactory },
+ { "liblnglo.a", lng_component_getFactory },
+ { "liblnthlo.a", lnth_component_getFactory },
+ { "liblwpftlo.a", lotuswordpro_component_getFactory },
+ { "libooxlo.a", oox_component_getFactory },
+ { "libscdlo.a", scd_component_getFactory },
+ { "libscfiltlo.a", scfilt_component_getFactory },
+ { "libsblo.a", sb_component_getFactory },
+ { "libsclo.a", sc_component_getFactory },
+ { "libsddlo.a", sdd_component_getFactory },
+ { "libsdlo.a", sd_component_getFactory },
+ { "libsmdlo.a", smd_component_getFactory },
+ { "libsmlo.a", sm_component_getFactory },
+ { "libsvgfilterlo.a", svgfilter_component_getFactory },
+ { "libswdlo.a", swd_component_getFactory },
+ { "libswlo.a", sw_component_getFactory },
+ { "libt602filterlo.a", t602filter_component_getFactory },
+ { "libtextfdlo.a", textfd_component_getFactory },
+ { "libunordflo.a", unordf_component_getFactory },
+ { "libunoxmllo.a", unoxml_component_getFactory },
+ { "libwpftdrawlo.a", wpftdraw_component_getFactory },
+ { "libwpftwriterlo.a", wpftwriter_component_getFactory },
+ { "libxmlfdlo.a", xmlfd_component_getFactory },
+ { "libxmlsecurity.a", xmlsecurity_component_getFactory },
+ { "libxoflo.a", xof_component_getFactory },
+ { "libxolo.a", xo_component_getFactory },
+ { NULL, NULL }
+ };
+
+ return map;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/android/experimental/LibreOffice4Android/src/org/libreoffice/android/DocumentLoader.java b/android/experimental/LibreOffice4Android/src/org/libreoffice/android/DocumentLoader.java
index 5fc3fad2a950..601e583268d7 100644
--- a/android/experimental/LibreOffice4Android/src/org/libreoffice/android/DocumentLoader.java
+++ b/android/experimental/LibreOffice4Android/src/org/libreoffice/android/DocumentLoader.java
@@ -961,12 +961,6 @@ public class DocumentLoader
// Avoid all the old style OSL_TRACE calls especially in vcl
Bootstrap.putenv("SAL_LOG=+WARN+INFO-INFO.legacy.osl");
- // Load a lot of shlibs here explicitly in advance because that
- // makes debugging work better, sigh
- Bootstrap.dlopen("libmergedlo.so");
- Bootstrap.dlopen("libswdlo.so");
- Bootstrap.dlopen("libswlo.so");
-
// Log.i(TAG, "Sleeping NOW");
// Thread.sleep(20000);
diff --git a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java
index 70ca6f6cf71a..d47d25599066 100644
--- a/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java
+++ b/android/experimental/LibreOffice4Android/src/org/libreoffice/ui/LibreOfficeUIActivity.java
@@ -139,11 +139,6 @@ public class LibreOfficeUIActivity extends SherlockActivity implements ActionBar
Bootstrap.putenv("SAL_LOG=yes");
- // Load a lot of shlibs here explicitly in advance because that
- // makes debugging work better, sigh
- Bootstrap.dlopen("libmergedlo.so");
- Bootstrap.dlopen("libswdlo.so");
- Bootstrap.dlopen("libswlo.so");
}
public void createUI(){