diff options
author | Gautam Prajapati <gautamprajapati06@gmail.com> | 2017-08-18 23:17:15 +0530 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-08-23 17:50:55 +0200 |
commit | 511ae02c6457e69cb6daab871acd9c3e7d64e2e3 (patch) | |
tree | b55634866b626b9c8258a902fa78f5ee901eb900 | |
parent | f8fa4631f35799f1afeec2ecba7eec5bbdba95e5 (diff) |
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@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r-- | RepositoryExternal.mk | 8 | ||||
-rw-r--r-- | android/Bootstrap/Makefile.shared | 20 | ||||
-rwxr-xr-x | bin/lo-all-static-libs | 2 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | svl/Library_svl.mk | 4 | ||||
-rw-r--r-- | svl/source/crypto/cryptosign.cxx | 3 | ||||
-rw-r--r-- | vcl/Library_vcl.mk | 2 | ||||
-rw-r--r-- | xmlsecurity/Library_xmlsecurity.mk | 2 | ||||
-rw-r--r-- | xmlsecurity/Library_xsec_xmlsec.mk | 9 | ||||
-rw-r--r-- | xmlsecurity/Module_xmlsecurity.mk | 2 | ||||
-rw-r--r-- | xmlsecurity/source/helper/documentsignaturemanager.cxx | 4 | ||||
-rw-r--r-- | xmlsecurity/source/helper/xsecctl.cxx | 4 | ||||
-rw-r--r-- | xmlsecurity/source/helper/xsecverify.cxx | 2 | ||||
-rw-r--r-- | xmlsecurity/source/xmlsec/xsec_xmlsec.cxx | 4 |
14 files changed, 36 insertions, 32 deletions
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 ) ) ; |