[Libreoffice-commits] core.git: bridges/Library_cpp_uno.mk bridges/source configure.ac distro-configs/LibreOfficeAndroidX86_64.conf external/nss solenv/gbuild

Christian Lohmaier (via logerrit) logerrit at kemper.freedesktop.org
Mon Sep 23 10:58:04 UTC 2019


 bridges/Library_cpp_uno.mk                        |    2 +-
 bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx |   10 ++++++++++
 configure.ac                                      |   12 ++++++++++++
 distro-configs/LibreOfficeAndroidX86_64.conf      |   10 ++++++++++
 external/nss/ExternalProject_nss.mk               |    2 +-
 external/nss/nss-android.patch.1                  |    3 ++-
 solenv/gbuild/platform/ANDROID_X86_64_GCC.mk      |   15 +++++++++++++++
 7 files changed, 51 insertions(+), 3 deletions(-)

New commits:
commit 6d09dcf0d8a8fd3b63ad583befaf2c47f85b16b7
Author:     Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
AuthorDate: Thu Sep 5 16:43:14 2019 +0200
Commit:     Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
CommitDate: Mon Sep 23 12:57:08 2019 +0200

    android: add support for 64bit build
    
    Change-Id: Id8aae84308f6128351ae2f93c8fbc8941a0c7fc6
    Reviewed-on: https://gerrit.libreoffice.org/79085
    Tested-by: Jenkins
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk
index f8efb498a4b1..0ca679e4b216 100644
--- a/bridges/Library_cpp_uno.mk
+++ b/bridges/Library_cpp_uno.mk
@@ -159,7 +159,7 @@ bridge_exception_objects := except
 
 else ifeq ($(CPUNAME),X86_64)
 
-ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD HAIKU,$(OS)),)
+ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX NETBSD OPENBSD HAIKU,$(OS)),)
 bridges_SELECTED_BRIDGE := gcc3_linux_x86-64
 bridge_asm_objects := call
 bridge_noncallexception_noopt_objects := callvirtualmethod
diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx
index faf45a8b0590..2e11b6eb42bc 100644
--- a/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx
@@ -80,7 +80,9 @@ class RTTI
     std::vector<OString> m_rttiNames;
     std::unordered_map<OUString, std::unique_ptr<Generated>> m_generatedRttis;
 
+#if !defined ANDROID
     void * m_hApp;
+#endif
 
 public:
     RTTI();
@@ -90,13 +92,17 @@ public:
 };
 
 RTTI::RTTI()
+#if !defined ANDROID
     : m_hApp( dlopen( nullptr, RTLD_LAZY ) )
+#endif
 {
 }
 
 RTTI::~RTTI()
 {
+#if !defined ANDROID
     dlclose( m_hApp );
+#endif
 }
 
 std::type_info * RTTI::getRTTI(typelib_TypeDescription const & pTypeDescr)
@@ -124,7 +130,11 @@ std::type_info * RTTI::getRTTI(typelib_TypeDescription const & pTypeDescr)
         buf.append( 'E' );
 
         OString symName( buf.makeStringAndClear() );
+#if !defined ANDROID
         rtti = static_cast<std::type_info *>(dlsym( m_hApp, symName.getStr() ));
+#else
+        rtti = static_cast<std::type_info *>(dlsym( RTLD_DEFAULT, symName.getStr() ));
+#endif
 
         if (rtti)
         {
diff --git a/configure.ac b/configure.ac
index f27b041ee0c4..51767f9c537a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -436,6 +436,13 @@ if test -n "$with_android_ndk"; then
         # minimum android version that supports aarch64
         ANDROID_API_LEVEL=21
         ANDROID_APP_ABI=arm64-v8a
+    elif test $host_cpu = x86_64; then
+        android_platform_prefix=x86_64-linux-android
+        android_gnu_prefix=$android_platform_prefix
+        LLVM_TRIPLE=$android_platform_prefix
+        # minimum android version that supports x86_64
+        ANDROID_API_LEVEL=21
+        ANDROID_APP_ABI=x86_64
     else
         # host_cpu is something like "i386" or "i686" I guess, NDK uses
         # "x86" in some contexts
@@ -4472,6 +4479,11 @@ linux-android*)
         RTL_ARCH=x86
         PLATFORMID=android_x86
         ;;
+    x86_64)
+        CPUNAME=X86_64
+        RTL_ARCH=X86_64
+        PLATFORMID=android_x86_64
+        ;;
     *)
         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
         ;;
diff --git a/distro-configs/LibreOfficeAndroidX86_64.conf b/distro-configs/LibreOfficeAndroidX86_64.conf
new file mode 100644
index 000000000000..efbbdbb1e945
--- /dev/null
+++ b/distro-configs/LibreOfficeAndroidX86_64.conf
@@ -0,0 +1,10 @@
+--host=x86_64-linux-android
+--disable-cairo-canvas
+--disable-cups
+--disable-gstreamer-1-0
+--disable-randr
+--without-export-validation
+--without-helppack-integration
+--without-junit
+--disable-largefile
+--with-theme=colibre
diff --git a/external/nss/ExternalProject_nss.mk b/external/nss/ExternalProject_nss.mk
index e97756aca831..2e93d7000c3a 100644
--- a/external/nss/ExternalProject_nss.mk
+++ b/external/nss/ExternalProject_nss.mk
@@ -33,7 +33,7 @@ else # OS!=WNT
 # OTOH specify e.g. CC and NSINSTALL as arguments (after make command), so they will overrule nss makefile values
 $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalExecutable_get_dependencies,python)
 	$(call gb_ExternalProject_run,build,\
-		$(if $(filter FREEBSD LINUX MACOSX,$(OS)),$(if $(filter X86_64,$(CPUNAME)),USE_64=1)) \
+		$(if $(filter ANDROID FREEBSD LINUX MACOSX,$(OS)),$(if $(filter X86_64,$(CPUNAME)),USE_64=1)) \
 		$(if $(filter iOS,$(OS)),\
 			$(if $(filter arm64,$(CC)),USE_64=1)) \
 		$(if $(filter MACOSX,$(OS)),\
diff --git a/external/nss/nss-android.patch.1 b/external/nss/nss-android.patch.1
index 50c549303604..f8b4cdaf3753 100644
--- a/external/nss/nss-android.patch.1
+++ b/external/nss/nss-android.patch.1
@@ -1,12 +1,13 @@
 diff -ur nss.org/nspr/build/autoconf/config.sub nss/nspr/build/autoconf/config.sub
 --- nss.org/nspr/build/autoconf/config.sub	2017-09-07 15:29:45.031246453 +0200
 +++ nss/nspr/build/autoconf/config.sub	2017-09-07 15:32:13.087235423 +0200
-@@ -111,6 +111,9 @@
+@@ -111,6 +111,10 @@
      exit 1;;
  esac
  
 +if test $1 = "arm-unknown-linux-androideabi"; then echo $1; exit; fi
 +if test $1 = "i686-pc-linux-android"; then echo $1; exit; fi
++if test $1 = "x86_64-pc-linux-android"; then echo $1; exit; fi
 +
  # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
  # Here we must recognize all the valid KERNEL-OS combinations.
diff --git a/solenv/gbuild/platform/ANDROID_X86_64_GCC.mk b/solenv/gbuild/platform/ANDROID_X86_64_GCC.mk
new file mode 100644
index 000000000000..bb57e8ae0dde
--- /dev/null
+++ b/solenv/gbuild/platform/ANDROID_X86_64_GCC.mk
@@ -0,0 +1,15 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# 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/.
+#
+
+# please make generic modifications to unxgcc.mk or android.mk
+
+include $(GBUILDDIR)/platform/unxgcc.mk
+include $(GBUILDDIR)/platform/android.mk
+
+# vim: set noet sw=4:


More information about the Libreoffice-commits mailing list