[Libreoffice-commits] core.git: android/Bootstrap bin/lo-all-static-libs configure.ac RepositoryExternal.mk svl/Library_svl.mk svl/source vcl/Library_vcl.mk xmlsecurity/Library_xmlsecurity.mk xmlsecurity/Library_xsec_xmlsec.mk xmlsecurity/Module_xmlsecurity.mk xmlsecurity/source

Gautam Prajapati gautamprajapati06 at gmail.com
Wed Aug 23 15:53:28 UTC 2017


 RepositoryExternal.mk                                  |    8 ------
 android/Bootstrap/Makefile.shared                      |   20 ++++++++++++++++-
 bin/lo-all-static-libs                                 |    2 +
 configure.ac                                           |    2 -
 svl/Library_svl.mk                                     |    4 +--
 svl/source/crypto/cryptosign.cxx                       |    3 ++
 vcl/Library_vcl.mk                                     |    2 -
 xmlsecurity/Library_xmlsecurity.mk                     |    2 -
 xmlsecurity/Library_xsec_xmlsec.mk                     |    9 -------
 xmlsecurity/Module_xmlsecurity.mk                      |    2 -
 xmlsecurity/source/helper/documentsignaturemanager.cxx |    4 +--
 xmlsecurity/source/helper/xsecctl.cxx                  |    4 +--
 xmlsecurity/source/helper/xsecverify.cxx               |    2 -
 xmlsecurity/source/xmlsec/xsec_xmlsec.cxx              |    4 +--
 14 files changed, 36 insertions(+), 32 deletions(-)

New commits:
commit 511ae02c6457e69cb6daab871acd9c3e7d64e2e3
Author: Gautam Prajapati <gautamprajapati06 at gmail.com>
Date:   Fri Aug 18 23:17:15 2017 +0530

    Android: Enable HAVE_FEATURE_NSS and package the NSS libraries with apk
    
    This commit enables HAVE_FEATURE_NSS for Android and fixes the svl/ vcl/
    and xmlsecurity/ module to use NSS.
    
    xmlsecurity/ wasn't built for Android previously, this commit enables
    building xmlsecurity/ for Android and disables the support of gpgme
    in the same module(Only for Android).
    
    It also enables the linking of NSS shared libraries with
    liblo-native-code.so and adds a rule to package them along with the apk.
    
    Change-Id: I7d0341688ac979ae92e9145c37dd107670417fe1
    Reviewed-on: https://gerrit.libreoffice.org/41308
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 44a89738fb74..d511d51cebcc 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -3268,12 +3268,6 @@ endif # USING_X11
 
 gb_ExternalProject__use_nss3:=
 
-ifeq ($(OS),ANDROID)
-
-gb_LinkTarget__use_nss3:=
-gb_LinkTarget__use_plc4:=
-
-else
 
 ifneq ($(SYSTEM_NSS),)
 
@@ -3369,8 +3363,6 @@ endef
 
 endif # SYSTEM_NSS
 
-endif # DESKTOP
-
 ifeq ($(ENABLE_BREAKPAD),TRUE)
 
 define gb_LinkTarget__use_breakpad
diff --git a/android/Bootstrap/Makefile.shared b/android/Bootstrap/Makefile.shared
index e26530595cad..e06e36cdac54 100644
--- a/android/Bootstrap/Makefile.shared
+++ b/android/Bootstrap/Makefile.shared
@@ -35,10 +35,24 @@ LIBS = \
   $(ALL_STATIC_LIBS) \
   -Wl,--end-group
 
+NSSLIBS = freebl3 \
+	nspr4 \
+	nss3 \
+	nssckbi \
+	nssdbm3 \
+	nssutil3 \
+	plc4 \
+	plds4 \
+	smime3 \
+	softokn3 \
+	sqlite3 \
+	ssl3 \
+
 WHOLELIBS = \
   -Wl,--whole-archive \
   $(addprefix -l,$(strip \
 	juh \
+	$(NSSLIBS) \
   )) \
   -Wl,--no-whole-archive
 
@@ -53,7 +67,11 @@ $(SODEST)/liblo-native-code.so : $(OBJLOCAL)/liblo-native-code.so
 	$(STRIP) -o $(SODEST)/liblo-native-code.so $(OBJLOCAL)/liblo-native-code.so
 	#to keep some symbols, eg.: $(STRIP) -o $(SODEST)/liblo-native-code.so $(OBJLOCAL)/liblo-native-code.so -w -K 'Java*'
 
-link-so: $(SODEST)/liblo-native-code.so
+$(SODEST)/nss-libraries : 
+	mkdir -p $(SODEST)
+	$(foreach lib,$(NSSLIBS),$(STRIP) -o $(SODEST)/lib$(lib).so $(INSTDIR)/$(LIBO_LIB_FOLDER)/lib$(lib).so;)
+
+link-so: $(SODEST)/liblo-native-code.so $(SODEST)/nss-libraries
 
 # If you reinstall an app several times *on the emulator*, even if you
 # uninstall it between, disk space seems to leak that won't get recycled until
diff --git a/bin/lo-all-static-libs b/bin/lo-all-static-libs
index 555ad67674a7..6c1908628183 100755
--- a/bin/lo-all-static-libs
+++ b/bin/lo-all-static-libs
@@ -41,6 +41,8 @@ ANDROID)
     oslibs="$oslibs $WORKDIR/UnpackedTarball/freetype/objs/.libs/libfreetype.a"
     oslibs="$oslibs $WORKDIR/UnpackedTarball/pixman/pixman/.libs/libpixman-1.a"
     oslibs="$oslibs $WORKDIR/UnpackedTarball/cairo/src/.libs/libcairo.a"
+    oslibs="$oslibs $WORKDIR/UnpackedTarball/xmlsec/src/.libs/libxmlsec1.a"
+    oslibs="$oslibs $WORKDIR/UnpackedTarball/xmlsec/src/nss/.libs/libxmlsec1-nss.a"
     # Only liblo-bootstrap.a ends up here:
     oslibs="$oslibs $WORKDIR/LinkTarget/Library/lib*.a"
     oslibs="$oslibs $WORKDIR/UnpackedTarball/openssl/*.a"
diff --git a/configure.ac b/configure.ac
index 132fb398cb8d..1a8f2f9c9f84 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8816,7 +8816,7 @@ AC_SUBST(SYSTEM_OPENLDAP)
 dnl ===================================================================
 dnl Check for system NSS
 dnl ===================================================================
-if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
+if test $_os != iOS -a "$enable_fuzzers" != "yes"; then
     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
     AC_DEFINE(HAVE_FEATURE_NSS)
     ENABLE_NSS="TRUE"
diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk
index c61b0e789f40..de981cdc9315 100644
--- a/svl/Library_svl.mk
+++ b/svl/Library_svl.mk
@@ -21,7 +21,7 @@ $(eval $(call gb_Library_Library,svl))
 
 $(eval $(call gb_Library_use_externals,svl,\
     boost_headers \
-    $(if $(filter LINUX MACOSX %BSD SOLARIS,$(OS)), \
+    $(if $(filter LINUX MACOSX ANDROID %BSD SOLARIS,$(OS)), \
         curl) \
     icu_headers \
     icuuc \
@@ -103,7 +103,7 @@ $(eval $(call gb_Library_use_system_win32_libs,svl,\
     crypt32 \
 ))
 else
-ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
+ifneq (,$(filter DESKTOP,$(BUILD_TYPE))$(filter ANDROID,$(OS)))
 $(eval $(call gb_Library_add_defs,svl,\
     -DSVL_CRYPTO_NSS \
 ))
diff --git a/svl/source/crypto/cryptosign.cxx b/svl/source/crypto/cryptosign.cxx
index 1e0712fd8850..dab47be4e5cc 100644
--- a/svl/source/crypto/cryptosign.cxx
+++ b/svl/source/crypto/cryptosign.cxx
@@ -252,6 +252,9 @@ const SEC_ASN1Template IssuerSerialTemplate[] =
  *     issuerSerial IssuerSerial OPTIONAL
  * }
  */
+
+SEC_ASN1_MKSUB(SECOID_AlgorithmIDTemplate)
+
 const SEC_ASN1Template ESSCertIDv2Template[] =
 {
     {SEC_ASN1_SEQUENCE, 0, nullptr, sizeof(ESSCertIDv2)},
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 6b40a48d8783..00cbf3b6a23e 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -56,7 +56,7 @@ $(eval $(call gb_Library_use_custom_headers,vcl,\
 ))
 
 $(eval $(call gb_Library_use_externals,vcl,\
-	$(if $(filter LINUX MACOSX %BSD SOLARIS,$(OS)), \
+	$(if $(filter LINUX MACOSX ANDROID %BSD SOLARIS,$(OS)), \
 		curl) \
 	jpeg \
 	libeot \
diff --git a/xmlsecurity/Library_xmlsecurity.mk b/xmlsecurity/Library_xmlsecurity.mk
index 77d3bd81dc3b..22d27c717155 100644
--- a/xmlsecurity/Library_xmlsecurity.mk
+++ b/xmlsecurity/Library_xmlsecurity.mk
@@ -79,7 +79,7 @@ $(eval $(call gb_Library_use_system_win32_libs,xmlsecurity,\
     crypt32 \
 ))
 else
-ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
+ifneq (,$(filter DESKTOP,$(BUILD_TYPE))$(filter ANDROID,$(OS)))
 $(eval $(call gb_Library_add_defs,xmlsecurity,\
     -DXMLSEC_CRYPTO_NSS \
 ))
diff --git a/xmlsecurity/Library_xsec_xmlsec.mk b/xmlsecurity/Library_xsec_xmlsec.mk
index d7526d6af269..51f0f2a0834f 100644
--- a/xmlsecurity/Library_xsec_xmlsec.mk
+++ b/xmlsecurity/Library_xsec_xmlsec.mk
@@ -126,13 +126,6 @@ $(eval $(call gb_Library_add_defs,xsec_xmlsec,\
 	-DXMLSEC_CRYPTO_NSS \
 ))
 
-ifeq ($(OS),ANDROID)
-$(eval $(call gb_Library_add_libs,xsec_xmlsec,\
-	$(call gb_UnpackedTarball_get_dir,xmlsec)/src/openssl/.libs/libxmlsec1-openssl.a \
-	$(call gb_UnpackedTarball_get_dir,xmlsec)/src/.libs/libxmlsec1.a \
-))
-else
-
 ifeq ($(SYSTEM_XMLSEC),)
 $(eval $(call gb_Library_add_libs,xsec_xmlsec,\
 	$(call gb_UnpackedTarball_get_dir,xmlsec)/src/nss/.libs/libxmlsec1-nss.a \
@@ -140,8 +133,6 @@ $(eval $(call gb_Library_add_libs,xsec_xmlsec,\
 ))
 endif
 
-endif
-
 $(eval $(call gb_Library_use_externals,xsec_xmlsec,\
 	plc4 \
 ))
diff --git a/xmlsecurity/Module_xmlsecurity.mk b/xmlsecurity/Module_xmlsecurity.mk
index 23435b0512a9..693abbb80a0f 100644
--- a/xmlsecurity/Module_xmlsecurity.mk
+++ b/xmlsecurity/Module_xmlsecurity.mk
@@ -10,8 +10,6 @@
 $(eval $(call gb_Module_Module,xmlsecurity))
 
 ifeq ($(ENABLE_NSS),TRUE)
-#FIXME: ^^^, get nss&libxmlsec building on ios and android
-#chromium has patches to build statically FWIW
 
 $(eval $(call gb_Module_add_targets,xmlsecurity,\
 	Library_xmlsecurity \
diff --git a/xmlsecurity/source/helper/documentsignaturemanager.cxx b/xmlsecurity/source/helper/documentsignaturemanager.cxx
index f39fe39a68b2..f886b4654dd7 100644
--- a/xmlsecurity/source/helper/documentsignaturemanager.cxx
+++ b/xmlsecurity/source/helper/documentsignaturemanager.cxx
@@ -64,14 +64,14 @@ bool DocumentSignatureManager::init()
     initXmlSec();
 
     mxSEInitializer = xml::crypto::SEInitializer::create(mxContext);
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
     mxGpgSEInitializer.set(new SEInitializerGpg());
 #endif
 
     if (mxSEInitializer.is())
         mxSecurityContext = mxSEInitializer->createSecurityContext(OUString());
 
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
     if (mxGpgSEInitializer.is())
         mxGpgSecurityContext = mxGpgSEInitializer->createSecurityContext(OUString());
 
diff --git a/xmlsecurity/source/helper/xsecctl.cxx b/xmlsecurity/source/helper/xsecctl.cxx
index e583ff72dab1..37fbb225c1f9 100644
--- a/xmlsecurity/source/helper/xsecctl.cxx
+++ b/xmlsecurity/source/helper/xsecctl.cxx
@@ -22,7 +22,7 @@
 #include "documentsignaturehelper.hxx"
 #include "framework/saxeventkeeperimpl.hxx"
 #include "xmlsec/xmldocumentwrapper_xmlsecimpl.hxx"
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
 # include "gpg/xmlsignature_gpgimpl.hxx"
 #endif
 
@@ -127,7 +127,7 @@ void XSecController::createXSecComponent( )
 
     cssu::Reference< cssl::XMultiComponentFactory > xMCF( mxCtx->getServiceManager() );
 
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
     uno::Reference< lang::XServiceInfo > xServiceInfo( m_xSecurityContext, cssu::UNO_QUERY );
     if (xServiceInfo->getImplementationName() == "com.sun.star.xml.security.gpg.XMLSecurityContext_GpgImpl")
         m_xXMLSignature.set(new XMLSignature_GpgImpl());
diff --git a/xmlsecurity/source/helper/xsecverify.cxx b/xmlsecurity/source/helper/xsecverify.cxx
index c60bbde22894..3ec123bc4029 100644
--- a/xmlsecurity/source/helper/xsecverify.cxx
+++ b/xmlsecurity/source/helper/xsecverify.cxx
@@ -110,7 +110,7 @@ void XSecController::addSignature()
 
 void XSecController::switchGpgSignature()
 {
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
     // swap signature verifier for the Gpg one
     m_xXMLSignature.set(new XMLSignature_GpgImpl());
     if (!m_vInternalSignatureInformations.empty())
diff --git a/xmlsecurity/source/xmlsec/xsec_xmlsec.cxx b/xmlsecurity/source/xmlsec/xsec_xmlsec.cxx
index b480b90a9235..2a700cc59d62 100644
--- a/xmlsecurity/source/xmlsec/xsec_xmlsec.cxx
+++ b/xmlsecurity/source/xmlsec/xsec_xmlsec.cxx
@@ -27,7 +27,7 @@
 #include "xmlsec/xmldocumentwrapper_xmlsecimpl.hxx"
 #include "xsec_xmlsec.hxx"
 
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
 # include "gpg/xmlsignature_gpgimpl.hxx"
 #endif
 
@@ -44,7 +44,7 @@ SAL_DLLPUBLIC_EXPORT void* SAL_CALL xsec_xmlsec_component_getFactory( const sal_
     Reference< XInterface > xFactory ;
 
     if( pImplName != nullptr ) {
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
         if( XMLSignature_GpgImpl::impl_getImplementationName().equalsAscii( pImplName ) )
         {
             xFactory = XMLSignature_GpgImpl::impl_createFactory( static_cast< XMultiServiceFactory* >( pServiceManager ) ) ;


More information about the Libreoffice-commits mailing list