Rebased ref, commits from common ancestor: commit 31bcf22df134fb59746c4145f0600b0fe4768948 Author: Thorsten Behrens <thorsten.behr...@cib.de> Date: Wed Nov 22 09:57:57 2017 +0100
gpg4libre: enable gpgme support for Windows and OSX Change-Id: Ifa266e1c18a8a09cd5c815adc70d0236e00f72b5 diff --git a/xmlsecurity/Library_xsec_xmlsec.mk b/xmlsecurity/Library_xsec_xmlsec.mk index 30c792177fc8..5bb1828f61ea 100644 --- a/xmlsecurity/Library_xsec_xmlsec.mk +++ b/xmlsecurity/Library_xsec_xmlsec.mk @@ -58,7 +58,7 @@ $(eval $(call gb_Library_use_externals,xsec_xmlsec,\ libxml2 \ xmlsec \ )) -ifneq ($(filter-out WNT MACOSX ANDROID IOS,$(OS)),) +ifneq ($(filter-out ANDROID IOS,$(OS)),) $(eval $(call gb_Library_use_externals,xsec_xmlsec,\ gpgmepp \ )) @@ -81,7 +81,7 @@ $(eval $(call gb_Library_add_exception_objects,xsec_xmlsec,\ xmlsecurity/source/xmlsec/nss/xsec_nss \ )) -ifneq ($(filter-out WNT MACOSX ANDROID IOS,$(OS)),) +ifneq ($(filter-out ANDROID IOS,$(OS)),) $(eval $(call gb_Library_add_exception_objects,xsec_xmlsec,\ xmlsecurity/source/gpg/CertificateImpl \ xmlsecurity/source/gpg/CipherContext \ commit 315259c4b4f992a7936fe52a7fe604ce536b6589 Author: Thorsten Behrens <thorsten.behr...@cib.de> Date: Wed Nov 22 12:51:42 2017 +0100 gpg4libre: fix warnings This code was not previously built on Windows Change-Id: I9394907f143d862f40c95672f4e3398b65b7bd2c diff --git a/xmlsecurity/Library_xsec_xmlsec.mk b/xmlsecurity/Library_xsec_xmlsec.mk index 51f0f2a0834f..30c792177fc8 100644 --- a/xmlsecurity/Library_xsec_xmlsec.mk +++ b/xmlsecurity/Library_xsec_xmlsec.mk @@ -32,6 +32,7 @@ $(eval $(call gb_Library_use_sdk_api,xsec_xmlsec)) $(eval $(call gb_Library_add_defs,xsec_xmlsec,\ -DXMLSEC_NO_XSLT \ -DXSECXMLSEC_DLLIMPLEMENTATION \ + -DXSECGPG_DLLIMPLEMENTATION \ )) $(eval $(call gb_Library_set_precompiled_header,xsec_xmlsec,$(SRCDIR)/xmlsecurity/inc/pch/precompiled_xsec_xmlsec)) diff --git a/xmlsecurity/inc/certificate.hxx b/xmlsecurity/inc/certificate.hxx index 0698e91f422f..494dc6e30d40 100644 --- a/xmlsecurity/inc/certificate.hxx +++ b/xmlsecurity/inc/certificate.hxx @@ -25,7 +25,7 @@ public: /// Returns the SHA-256 thumbprint. /// /// @throws css::uno::RuntimeException - virtual css::uno::Sequence<sal_Int8> getSHA256Thumbprint() = 0; + virtual css::uno::Sequence<sal_Int8> SAL_CALL getSHA256Thumbprint() = 0; protected: ~Certificate() noexcept = default; diff --git a/xmlsecurity/source/gpg/CertificateImpl.hxx b/xmlsecurity/source/gpg/CertificateImpl.hxx index 9db3ab85de14..63cddc6dc7b9 100644 --- a/xmlsecurity/source/gpg/CertificateImpl.hxx +++ b/xmlsecurity/source/gpg/CertificateImpl.hxx @@ -78,8 +78,8 @@ public: static const css::uno::Sequence< sal_Int8 >& getUnoTunnelId(); /// @see xmlsecurity::Certificate::getSHA256Thumbprint(). - virtual css::uno::Sequence<sal_Int8> getSHA256Thumbprint() override; - virtual css::security::CertificateKind getCertificateKind() override; + virtual css::uno::Sequence<sal_Int8> SAL_CALL getSHA256Thumbprint() override; + virtual css::security::CertificateKind SAL_CALL getCertificateKind() override; // Helper methods void setCertificate(GpgME::Context* ctx, const GpgME::Key& key); diff --git a/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.hxx b/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.hxx index b36b1c3c5d8f..94d53529bf21 100644 --- a/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.hxx +++ b/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.hxx @@ -80,7 +80,7 @@ class X509Certificate_MSCryptImpl : public ::cppu::WeakImplHelper< virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) override; /// @see xmlsecurity::Certificate::getSHA256Thumbprint(). - virtual css::uno::Sequence<sal_Int8> getSHA256Thumbprint() override; + virtual css::uno::Sequence<sal_Int8> SAL_CALL getSHA256Thumbprint() override; static const css::uno::Sequence< sal_Int8 >& getUnoTunnelId() ; static X509Certificate_MSCryptImpl* getImplementation( const css::uno::Reference< css::uno::XInterface >& rObj ) ; commit 86ab94851ab5fa79365b27ed6a2c24bac6d49238 Author: Thorsten Behrens <thorsten.behr...@cib.de> Date: Wed Nov 15 21:31:07 2017 +0100 gpg4libre: cleanup gpgme & add gbuild lib for gpgmepp This moves the external to gpgmepp, since that's what we _actually_ link against; plus tons of enablement for Windows build, mostly related to linker probs integration. There's still no good way to build a DLL with autotools, so we fall back to gbuild manual make, see also tdf#91480 Change-Id: Ifd8217ef58536612d2389d48e343db133a13fb9c diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index db70ce875e71..995a490214ec 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -3472,7 +3472,7 @@ endef else # NON-SYSTEM_GPGME define gb_ExternalProject__use_gpgmepp -$(call gb_ExternalProject_use_external_project,$(1),gpgme) +$(call gb_ExternalProject_use_external_project,$(1),gpgmepp) endef define gb_ExternalProject__use_libassuan @@ -3484,24 +3484,77 @@ $(call gb_ExternalProject_use_external_project,$(1),libgpg-error) endef +ifneq ($(filter WNT,$(OS)),) + +define gb_LinkTarget__use_libgpg-error +$(call gb_LinkTarget_use_package,$(1),libgpg-error) + +$(call gb_LinkTarget_set_include,$(1),\ + $(GPG_ERROR_CFLAGS) \ + $$(INCLUDE) \ +) +$(call gb_LinkTarget_add_libs,$(1),\ + -LIBPATH:$(call gb_UnpackedTarball_get_dir,libgpg-error)/src/.libs libgpg-error.lib \ +) + +endef + +define gb_LinkTarget__use_libassuan +$(call gb_LinkTarget_use_package,$(1),libassuan) + +$(call gb_LinkTarget_set_include,$(1),\ + $(LIBASSUAN_CFLAGS) \ + $$(INCLUDE) \ +) +$(call gb_LinkTarget_add_libs,$(1),\ + -LIBPATH:$(call gb_UnpackedTarball_get_dir,libassuan)/src/.libs libassuan.lib \ +) + +endef + define gb_LinkTarget__use_gpgmepp $(call gb_LinkTarget_set_include,$(1),\ - -I$(call gb_UnpackedTarball_get_dir,gpgme)/lang/cpp/src \ - -I$(call gb_UnpackedTarball_get_dir,gpgme)/src \ + -I$(call gb_UnpackedTarball_get_dir,gpgmepp)/lang/cpp/src \ + -I$(call gb_UnpackedTarball_get_dir,gpgmepp)/src \ $$(GPG_ERROR_CFLAGS) \ $$(INCLUDE) \ ) -$(call gb_LinkTarget_add_libs,$(1),\ - -L$(call gb_UnpackedTarball_get_dir,gpgme)/lang/cpp/src/.libs/ -lgpgmepp \ +$(call gb_LinkTarget_use_libraries,$(1),\ + gpgmepp \ ) -$(call gb_LinkTarget_use_package,$(1),gpgme) endef +$(eval $(call gb_Helper_register_packages_for_install,ooo,\ + libassuan \ + libgpg-error \ +)) + +$(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo,\ + gpgmepp \ +)) + +endif + ifneq ($(filter MACOSX LINUX,$(OS)),) +define gb_LinkTarget__use_gpgmepp +$(call gb_LinkTarget_use_package,$(1),gpgmepp) + +$(call gb_LinkTarget_set_include,$(1),\ + -I$(call gb_UnpackedTarball_get_dir,gpgmepp)/lang/cpp/src \ + -I$(call gb_UnpackedTarball_get_dir,gpgmepp)/src \ + $$(GPG_ERROR_CFLAGS) \ + $$(INCLUDE) \ +) +$(call gb_LinkTarget_add_libs,$(1),\ + -L$(call gb_UnpackedTarball_get_dir,gpgmepp)/lang/cpp/src/.libs/ -lgpgmepp \ +) + +endef + $(eval $(call gb_Helper_register_packages_for_install,ooo,\ - gpgme \ + gpgmepp \ libassuan \ libgpg-error \ )) diff --git a/configure.ac b/configure.ac index 25d3f4153f5b..08a9c9cccf39 100644 --- a/configure.ac +++ b/configure.ac @@ -10128,7 +10128,11 @@ fi AC_SUBST(ENABLE_PDFIUM) SYSTEM_GPGMEPP= -if test "$_os" = "Linux" -o "$_os" = "Darwin"; then +# need matching cygwin arch for building gpgme sadly, for the while +if test "$_os" = "Linux" -o "$_os" = "Darwin" \ + -o \( "$_os" = "WINNT" -a "$host_cpu" = "i686" -a "$WINDOWS_SDK_ARCH" = "x86" \) \ + -o \( "$_os" = "WINNT" -a "$host_cpu" = "x86_64" -a "$WINDOWS_SDK_ARCH" = "x64" \) ; then + dnl =================================================================== dnl Check for system gpgme dnl =================================================================== @@ -10150,23 +10154,13 @@ if test "$_os" = "Linux" -o "$_os" = "Darwin"; then AC_MSG_RESULT([internal]) AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY]) BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP" - if test "$_os" = "WINNT"; then - BUILD_TYPE="$BUILD_TYPE GLIB2" - fi - GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src" - GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error" LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src" - LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan" + if test "$_os" != "WINNT"; then + GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error" + LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan" + fi fi -else - # TODO(davido): Windows build must be protected with a configure option - # unless CI doesn't support libtool with windres with gcc preprocessor - BUILD_TYPE="$BUILD_TYPE LIBASSUAN LIBGPGERROR GPGMEPP" - GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src" - GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error" - LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src" - LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan" fi AC_SUBST(SYSTEM_GPGMEPP) AC_SUBST(GPG_ERROR_CFLAGS) diff --git a/external/Module_external.mk b/external/Module_external.mk index 498d95bef4ca..6cde6d90d5aa 100644 --- a/external/Module_external.mk +++ b/external/Module_external.mk @@ -43,7 +43,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\ $(call gb_Helper_optional,FREETYPE,freetype) \ $(call gb_Helper_optional,GLIB2,glib2) \ $(call gb_Helper_optional,GLM,glm) \ - $(call gb_Helper_optional,GPGMEPP,gpgme) \ + $(call gb_Helper_optional,GPGMEPP,gpgmepp) \ $(call gb_Helper_optional,GRAPHITE,graphite) \ $(call gb_Helper_optional,HARFBUZZ,harfbuzz) \ $(call gb_Helper_optional,HSQLDB,hsqldb) \ diff --git a/external/gpgme/ExternalPackage_gpgme.mk b/external/gpgme/ExternalPackage_gpgme.mk deleted file mode 100644 index 8f772ec8e7e4..000000000000 --- a/external/gpgme/ExternalPackage_gpgme.mk +++ /dev/null @@ -1,30 +0,0 @@ -# -*- 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/. -# - -$(eval $(call gb_ExternalPackage_ExternalPackage,gpgme,gpgme)) - -$(eval $(call gb_ExternalPackage_use_external_project,gpgme,gpgme)) - -ifneq ($(DISABLE_DYNLOADING),TRUE) - -ifeq ($(OS),LINUX) - -$(eval $(call gb_ExternalPackage_add_file,gpgme,$(LIBO_LIB_FOLDER)/libgpgmepp.so.6,lang/cpp/src/.libs/libgpgmepp.so.6.4.0)) -$(eval $(call gb_ExternalPackage_add_file,gpgme,$(LIBO_LIB_FOLDER)/libgpgme.so.11,src/.libs/libgpgme.so.11.18.0)) - -else ifeq ($(OS),MACOSX) - -$(eval $(call gb_ExternalPackage_add_file,gpgme,$(LIBO_LIB_FOLDER)/libgpgmepp.6.dylib,lang/cpp/src/.libs/libgpgmepp.6.dylib)) -$(eval $(call gb_ExternalPackage_add_file,gpgme,$(LIBO_LIB_FOLDER)/libgpgme.11.dylib,src/.libs/libgpgme.11.dylib)) - -endif - -endif # $(DISABLE_DYNLOADING) - -# vim: set noet sw=4 ts=4: diff --git a/external/gpgme/UnpackedTarball_gpgme.mk b/external/gpgme/UnpackedTarball_gpgme.mk deleted file mode 100644 index 4e95fe0ab160..000000000000 --- a/external/gpgme/UnpackedTarball_gpgme.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -*- 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/. -# - -$(eval $(call gb_UnpackedTarball_UnpackedTarball,gpgme)) - -$(eval $(call gb_UnpackedTarball_set_tarball,gpgme,$(GPGME_TARBALL))) - -$(eval $(call gb_UnpackedTarball_set_patchlevel,gpgme,0)) - -$(eval $(call gb_UnpackedTarball_add_patches,gpgme, \ - external/gpgme/find-libgpg-error-libassuan.patch \ - external/gpgme/fix-autoconf-macros.patch \ - external/gpgme/add-minimal-keyexport.patch \ - $(if $(filter MSC,$(COM)),external/gpgme/w32-build-fixes.patch.1) \ -)) -# vim: set noet sw=4 ts=4: diff --git a/external/gpgmepp/ExternalPackage_gpgmepp.mk b/external/gpgmepp/ExternalPackage_gpgmepp.mk new file mode 100644 index 000000000000..d5285520619f --- /dev/null +++ b/external/gpgmepp/ExternalPackage_gpgmepp.mk @@ -0,0 +1,30 @@ +# -*- 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/. +# + +$(eval $(call gb_ExternalPackage_ExternalPackage,gpgmepp,gpgmepp)) + +$(eval $(call gb_ExternalPackage_use_external_project,gpgmepp,gpgmepp)) + +ifneq ($(DISABLE_DYNLOADING),TRUE) + +ifeq ($(OS),LINUX) + +$(eval $(call gb_ExternalPackage_add_file,gpgmepp,$(LIBO_LIB_FOLDER)/libgpgmepp.so.6,lang/cpp/src/.libs/libgpgmepp.so.6.4.0)) +$(eval $(call gb_ExternalPackage_add_file,gpgmepp,$(LIBO_LIB_FOLDER)/libgpgme.so.11,src/.libs/libgpgme.so.11.18.0)) + +else ifeq ($(OS),MACOSX) + +$(eval $(call gb_ExternalPackage_add_file,gpgmepp,$(LIBO_LIB_FOLDER)/libgpgmepp.6.dylib,lang/cpp/src/.libs/libgpgmepp.6.dylib)) +$(eval $(call gb_ExternalPackage_add_file,gpgmepp,$(LIBO_LIB_FOLDER)/libgpgme.11.dylib,src/.libs/libgpgme.11.dylib)) + +endif + +endif # $(DISABLE_DYNLOADING) + +# vim: set noet sw=4 ts=4: diff --git a/external/gpgme/ExternalProject_gpgme.mk b/external/gpgmepp/ExternalProject_gpgmepp.mk similarity index 71% rename from external/gpgme/ExternalProject_gpgme.mk rename to external/gpgmepp/ExternalProject_gpgmepp.mk index dcaaf6bdfa2a..4b69774771fd 100644 --- a/external/gpgme/ExternalProject_gpgme.mk +++ b/external/gpgmepp/ExternalProject_gpgmepp.mk @@ -7,34 +7,32 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -$(eval $(call gb_ExternalProject_ExternalProject,gpgme)) +$(eval $(call gb_ExternalProject_ExternalProject,gpgmepp)) -$(eval $(call gb_ExternalProject_register_targets,gpgme,\ +$(eval $(call gb_ExternalProject_register_targets,gpgmepp,\ build \ )) -$(eval $(call gb_ExternalProject_use_autoconf,gpgme,build)) +$(eval $(call gb_ExternalProject_use_autoconf,gpgmepp,build)) -$(eval $(call gb_ExternalProject_use_externals,gpgme,\ +$(eval $(call gb_ExternalProject_use_externals,gpgmepp,\ libgpg-error \ libassuan \ )) ifeq ($(COM),MSC) -$(call gb_ExternalProject_get_state_target,gpgme,build): +$(call gb_ExternalProject_get_state_target,gpgmepp,build): $(call gb_ExternalProject_run,build,\ autoreconf \ && ./configure \ - --enable-languages="cl cpp" \ + --disable-shared \ + --disable-languages \ --disable-gpgconf-test \ --disable-gpg-test \ --disable-gpgsm-test \ --disable-g13-test \ - GPG_ERROR_CFLAGS="$(GPG_ERROR_CFLAGS)" \ - GPG_ERROR_LIBS="$(GPG_ERROR_LIBS)" \ - LIBASSUAN_CFLAGS="$(LIBASSUAN_CFLAGS)" \ - LIBASSUAN_LIBS="$(LIBASSUAN_LIBS)" \ - CFLAGS='$(CFLAGS) \ + --disable-glibtest \ + CFLAGS='$(CFLAGS) \ $(if $(ENABLE_OPTIMIZED), \ $(gb_COMPILEROPTFLAGS),$(gb_COMPILERNOOPTFLAGS)) \ $(if $(ENABLE_DEBUG),$(gb_DEBUG_CFLAGS)) \ @@ -42,18 +40,17 @@ $(call gb_ExternalProject_get_state_target,gpgme,build): --host=$(if $(filter INTEL,$(CPUNAME)),i686-mingw32,x86_64-w64-mingw32) \ && $(MAKE) \ ) - else -$(call gb_ExternalProject_get_state_target,gpgme,build): +$(call gb_ExternalProject_get_state_target,gpgmepp,build): $(call gb_ExternalProject_run,build,\ autoreconf \ && ./configure \ - --enable-languages="cl cpp" \ + --enable-languages="cpp" \ GPG_ERROR_CFLAGS="$(GPG_ERROR_CFLAGS)" \ GPG_ERROR_LIBS="$(GPG_ERROR_LIBS)" \ LIBASSUAN_CFLAGS="$(LIBASSUAN_CFLAGS)" \ LIBASSUAN_LIBS="$(LIBASSUAN_LIBS)" \ - CFLAGS='$(CFLAGS) \ + CFLAGS='$(CFLAGS) \ $(if $(ENABLE_OPTIMIZED), \ $(gb_COMPILEROPTFLAGS),$(gb_COMPILERNOOPTFLAGS)) \ $(if $(ENABLE_DEBUG),$(gb_DEBUG_CFLAGS)) \ @@ -64,6 +61,6 @@ $(call gb_ExternalProject_get_state_target,gpgme,build): $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ && $(MAKE) \ ) - endif + # vim: set noet sw=4 ts=4: diff --git a/external/gpgmepp/Library_gpgmepp.mk b/external/gpgmepp/Library_gpgmepp.mk new file mode 100644 index 000000000000..7649753fe748 --- /dev/null +++ b/external/gpgmepp/Library_gpgmepp.mk @@ -0,0 +1,79 @@ +# -*- 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/. +# + +$(eval $(call gb_Library_Library,gpgmepp)) + +$(eval $(call gb_Library_use_unpacked,gpgmepp,gpgmepp)) + +$(eval $(call gb_Library_use_externals,gpgmepp,\ + libgpg-error \ + libassuan \ +)) + +$(eval $(call gb_LinkTarget_use_external_project,\ + $(call gb_Library_get_linktarget,gpgmepp),gpgmepp,full)) + +$(eval $(call gb_Library_set_warnings_not_errors,gpgmepp)) + +$(eval $(call gb_Library_set_include,gpgmepp,\ + -I$(call gb_UnpackedTarball_get_dir,gpgmepp)/lang/cpp/src \ + -I$(call gb_UnpackedTarball_get_dir,gpgmepp)/lang/cpp/src/interfaces \ + -I$(call gb_UnpackedTarball_get_dir,gpgmepp) \ + -I$(call gb_UnpackedTarball_get_dir,gpgmepp)/src \ + -I$(call gb_UnpackedTarball_get_dir,libgpg-error)/src \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_add_libs,gpgmepp,\ + ws2_32.lib shell32.lib \ + -LIBPATH:$(call gb_UnpackedTarball_get_dir,gpgmepp)/src/.libs libgpgme.lib \ +)) + +$(eval $(call gb_Library_add_defs,gpgmepp,\ + -DHAVE_CONFIG_H \ + -DBUILDING_GPGMEPP \ + -DDLL_EXPORT \ + -DPIC \ +)) + +$(eval $(call gb_Library_set_generated_cxx_suffix,gpgmepp,cpp)) + +$(eval $(call gb_Library_add_generated_exception_objects,gpgmepp,\ + UnpackedTarball/gpgmepp/lang/cpp/src/callbacks \ + UnpackedTarball/gpgmepp/lang/cpp/src/configuration \ + UnpackedTarball/gpgmepp/lang/cpp/src/context \ + UnpackedTarball/gpgmepp/lang/cpp/src/context_vanilla \ + UnpackedTarball/gpgmepp/lang/cpp/src/data \ + UnpackedTarball/gpgmepp/lang/cpp/src/decryptionresult \ + UnpackedTarball/gpgmepp/lang/cpp/src/defaultassuantransaction \ + UnpackedTarball/gpgmepp/lang/cpp/src/editinteractor \ + UnpackedTarball/gpgmepp/lang/cpp/src/encryptionresult \ + UnpackedTarball/gpgmepp/lang/cpp/src/engineinfo \ + UnpackedTarball/gpgmepp/lang/cpp/src/eventloopinteractor \ + UnpackedTarball/gpgmepp/lang/cpp/src/exception \ + UnpackedTarball/gpgmepp/lang/cpp/src/gpgadduserideditinteractor \ + UnpackedTarball/gpgmepp/lang/cpp/src/gpgagentgetinfoassuantransaction \ + UnpackedTarball/gpgmepp/lang/cpp/src/gpggencardkeyinteractor \ + UnpackedTarball/gpgmepp/lang/cpp/src/gpgsetexpirytimeeditinteractor \ + UnpackedTarball/gpgmepp/lang/cpp/src/gpgsetownertrusteditinteractor \ + UnpackedTarball/gpgmepp/lang/cpp/src/gpgsignkeyeditinteractor \ + UnpackedTarball/gpgmepp/lang/cpp/src/importresult \ + UnpackedTarball/gpgmepp/lang/cpp/src/key \ + UnpackedTarball/gpgmepp/lang/cpp/src/keygenerationresult \ + UnpackedTarball/gpgmepp/lang/cpp/src/keylistresult \ + UnpackedTarball/gpgmepp/lang/cpp/src/scdgetinfoassuantransaction \ + UnpackedTarball/gpgmepp/lang/cpp/src/signingresult \ + UnpackedTarball/gpgmepp/lang/cpp/src/swdbresult \ + UnpackedTarball/gpgmepp/lang/cpp/src/tofuinfo \ + UnpackedTarball/gpgmepp/lang/cpp/src/trustitem \ + UnpackedTarball/gpgmepp/lang/cpp/src/verificationresult \ + UnpackedTarball/gpgmepp/lang/cpp/src/vfsmountresult \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/gpgme/Makefile b/external/gpgmepp/Makefile similarity index 100% rename from external/gpgme/Makefile rename to external/gpgmepp/Makefile diff --git a/external/gpgme/Module_gpgme.mk b/external/gpgmepp/Module_gpgmepp.mk similarity index 52% rename from external/gpgme/Module_gpgme.mk rename to external/gpgmepp/Module_gpgmepp.mk index 97da18dfaabd..1c13a2a5fcb8 100644 --- a/external/gpgme/Module_gpgme.mk +++ b/external/gpgmepp/Module_gpgmepp.mk @@ -7,12 +7,25 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -$(eval $(call gb_Module_Module,gpgme)) +$(eval $(call gb_Module_Module,gpgmepp)) -$(eval $(call gb_Module_add_targets,gpgme,\ - ExternalProject_gpgme \ - ExternalPackage_gpgme \ - UnpackedTarball_gpgme \ +$(eval $(call gb_Module_add_targets,gpgmepp,\ + UnpackedTarball_gpgmepp \ + ExternalProject_gpgmepp \ )) +ifeq ($(COM),MSC) + +$(eval $(call gb_Module_add_targets,gpgmepp,\ + Library_gpgmepp \ +)) + +else + +$(eval $(call gb_Module_add_targets,gpgmepp,\ + ExternalPackage_gpgmepp \ +)) + +endif + # vim: set noet sw=4 ts=4: diff --git a/external/gpgme/README b/external/gpgmepp/README similarity index 100% rename from external/gpgme/README rename to external/gpgmepp/README diff --git a/external/gpgmepp/UnpackedTarball_gpgmepp.mk b/external/gpgmepp/UnpackedTarball_gpgmepp.mk new file mode 100644 index 000000000000..db8c398e3003 --- /dev/null +++ b/external/gpgmepp/UnpackedTarball_gpgmepp.mk @@ -0,0 +1,25 @@ +# -*- 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/. +# + +$(eval $(call gb_UnpackedTarball_UnpackedTarball,gpgmepp)) + +$(eval $(call gb_UnpackedTarball_set_tarball,gpgmepp,$(GPGME_TARBALL))) + +$(eval $(call gb_UnpackedTarball_set_patchlevel,gpgmepp,0)) + +$(eval $(call gb_UnpackedTarball_add_patches,gpgmepp, \ + external/gpgmepp/find-libgpg-error-libassuan.patch \ + external/gpgmepp/fix-autoconf-macros.patch \ + external/gpgmepp/add-minimal-keyexport.patch \ + $(if $(filter MSC,$(COM)),external/gpgmepp/w32-build-fixes.patch.1) \ + $(if $(filter MSC,$(COM)),external/gpgmepp/w32-disable-docs.patch.1) \ + $(if $(filter MSC,$(COM)),external/gpgmepp/w32-fix-win32-macro.patch.1) \ + $(if $(filter MSC,$(COM)),external/gpgmepp/w32-fix-libtool.patch.1) \ +)) +# vim: set noet sw=4 ts=4: diff --git a/external/gpgme/add-minimal-keyexport.patch b/external/gpgmepp/add-minimal-keyexport.patch similarity index 100% rename from external/gpgme/add-minimal-keyexport.patch rename to external/gpgmepp/add-minimal-keyexport.patch diff --git a/external/gpgme/find-libgpg-error-libassuan.patch b/external/gpgmepp/find-libgpg-error-libassuan.patch similarity index 100% rename from external/gpgme/find-libgpg-error-libassuan.patch rename to external/gpgmepp/find-libgpg-error-libassuan.patch diff --git a/external/gpgme/fix-autoconf-macros.patch b/external/gpgmepp/fix-autoconf-macros.patch similarity index 100% rename from external/gpgme/fix-autoconf-macros.patch rename to external/gpgmepp/fix-autoconf-macros.patch diff --git a/external/gpgme/w32-build-fixes.patch.1 b/external/gpgmepp/w32-build-fixes.patch.1 old mode 100755 new mode 100644 similarity index 90% rename from external/gpgme/w32-build-fixes.patch.1 rename to external/gpgmepp/w32-build-fixes.patch.1 index cd45b45a31d9..9bc8f52b4c64 --- a/external/gpgme/w32-build-fixes.patch.1 +++ b/external/gpgmepp/w32-build-fixes.patch.1 @@ -120,3 +120,14 @@ diff -ru gpgme.orig/src/vfs-mount.c gpgme/src/vfs-mount.c { if (opd->result.mount_dir) free (opd->result.mount_dir); +diff -ur gpgmepp.org/src/w32-glib-io.c gpgmepp/src/w32-glib-io.c +--- gpgmepp.org/src/w32-glib-io.c 2016-11-16 13:22:41.000000000 +0100 ++++ gpgmepp/src/w32-glib-io.c 2017-11-20 06:40:44.793945300 +0100 +@@ -37,6 +37,7 @@ + #ifdef HAVE_SYS_TYPES_H + # include <sys/types.h> + #endif ++#include <winsock2.h> + #include <glib.h> + #include <windows.h> + #include <io.h> diff --git a/external/gpgmepp/w32-disable-docs.patch.1 b/external/gpgmepp/w32-disable-docs.patch.1 new file mode 100644 index 000000000000..603122131ea3 --- /dev/null +++ b/external/gpgmepp/w32-disable-docs.patch.1 @@ -0,0 +1,15 @@ +Disable doc building the hard way - should rather be a config option +like libgpg-error's --disable-doc + +diff -ur gpgmepp.org/Makefile.am gpgmepp/Makefile.am +--- gpgmepp.org/Makefile.am 2016-11-16 13:20:18.000000000 +0100 ++++ gpgmepp/Makefile.am 2017-11-20 15:34:49.086731000 +0100 +@@ -33,7 +33,7 @@ + tests = + endif + +-SUBDIRS = src ${tests} doc lang ++SUBDIRS = src ${tests} lang + + # Fix the version of the spec file and create a file named VERSION + # to be used for patch's Prereq: feature. diff --git a/external/gpgmepp/w32-fix-libtool.patch.1 b/external/gpgmepp/w32-fix-libtool.patch.1 new file mode 100644 index 000000000000..9a7adf713694 --- /dev/null +++ b/external/gpgmepp/w32-fix-libtool.patch.1 @@ -0,0 +1,38 @@ +Gross hack to make libtool work with gcc-wrapper - frontended +link.exe on Windows. Make libtool ignore all libs & simply pass +them on as-is to the linker + +A proper fix would be to make gcc-wrapper behave like gcc during +linking, by accepting cygwin path names, and correctly expanding +-l<short_lib_name> to lib<short_lib_name>.lib + +diff -ur gpgmepp.org/m4/libtool.m4 gpgmepp/m4/libtool.m4 +--- gpgmepp.org/m4/libtool.m4 2016-11-16 13:20:16.000000000 +0100 ++++ gpgmepp/m4/libtool.m4 2017-11-21 22:00:05.006587800 +0100 +@@ -3209,24 +3209,11 @@ + ;; + + cygwin*) +- # func_win32_libid is a shell function defined in ltmain.sh +- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' +- lt_cv_file_magic_cmd='func_win32_libid' ++ lt_cv_deplibs_check_method=pass_all + ;; + + mingw* | pw32*) +- # Base MSYS/MinGW do not provide the 'file' command needed by +- # func_win32_libid shell function, so use a weaker test based on 'objdump', +- # unless we find 'file', for example because we are cross-compiling. +- # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. +- if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then +- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' +- lt_cv_file_magic_cmd='func_win32_libid' +- else +- # Keep this pattern in sync with the one in func_win32_libid. +- lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- fi ++ lt_cv_deplibs_check_method=pass_all + ;; + + cegcc*) diff --git a/external/gpgmepp/w32-fix-win32-macro.patch.1 b/external/gpgmepp/w32-fix-win32-macro.patch.1 new file mode 100644 index 000000000000..70a8b5ffe6e8 --- /dev/null +++ b/external/gpgmepp/w32-fix-win32-macro.patch.1 @@ -0,0 +1,175 @@ +diff -ur gpgmepp.org/lang/cpp/src/callbacks.cpp gpgmepp/lang/cpp/src/callbacks.cpp +--- gpgmepp.org/lang/cpp/src/callbacks.cpp 2016-10-18 19:22:02.000000000 +0200 ++++ gpgmepp/lang/cpp/src/callbacks.cpp 2017-11-20 18:03:04.290060900 +0100 +@@ -38,7 +38,9 @@ + #include <cassert> + #include <cerrno> + #include <cstring> ++#if HAVE_UNISTD_H + #include <unistd.h> ++#endif + #include <stdlib.h> + + static inline gpgme_error_t make_err_from_syserror() +diff -ur gpgmepp.org/lang/cpp/src/data.h gpgmepp/lang/cpp/src/data.h +--- gpgmepp.org/lang/cpp/src/data.h 2017-03-24 15:20:32.000000000 +0100 ++++ gpgmepp/lang/cpp/src/data.h 2017-11-20 17:23:24.802711200 +0100 +@@ -31,6 +31,11 @@ + #include <algorithm> + #include <memory> + ++#ifdef _MSC_VER ++# include <BaseTsd.h> ++typedef SSIZE_T ssize_t; ++#endif ++ + namespace GpgME + { + +diff -ur gpgmepp.org/lang/cpp/src/editinteractor.cpp gpgmepp/lang/cpp/src/editinteractor.cpp +--- gpgmepp.org/lang/cpp/src/editinteractor.cpp 2017-03-09 09:01:10.000000000 +0100 ++++ gpgmepp/lang/cpp/src/editinteractor.cpp 2017-11-20 18:09:33.022674700 +0100 +@@ -30,9 +30,11 @@ + + #include <gpgme.h> + +-#ifdef _WIN32 ++#ifdef _MSC_VER + # include <io.h> +-#include <windows.h> ++# include <windows.h> ++# include <BaseTsd.h> ++ typedef SSIZE_T ssize_t; + #else + # include <unistd.h> + #endif +diff -ur gpgmepp.org/lang/cpp/src/gpgmepp_export.h gpgmepp/lang/cpp/src/gpgmepp_export.h +--- gpgmepp.org/lang/cpp/src/gpgmepp_export.h 2016-08-04 15:03:09.000000000 +0200 ++++ gpgmepp/lang/cpp/src/gpgmepp_export.h 2017-11-20 16:57:47.805691100 +0100 +@@ -29,14 +29,14 @@ + # ifndef GPGMEPP_EXPORT + # ifdef BUILDING_GPGMEPP + /* We are building this library */ +-# ifdef WIN32 ++# ifdef _MSC_VER + # define GPGMEPP_EXPORT __declspec(dllexport) + # else + # define GPGMEPP_EXPORT __attribute__((visibility("default"))) + # endif + # else + /* We are using this library */ +-# ifdef WIN32 ++# ifdef _MSC_VER + # define GPGMEPP_EXPORT __declspec(dllimport) + # else + # define GPGMEPP_EXPORT __attribute__((visibility("default"))) +@@ -45,7 +45,7 @@ + # endif + + # ifndef GPGMEPP_NO_EXPORT +-# ifdef WIN32 ++# ifdef _MSC_VER + # define GPGMEPP_NO_EXPORT + # else + # define GPGMEPP_NO_EXPORT __attribute__((visibility("hidden"))) +@@ -54,7 +54,11 @@ + #endif + + #ifndef GPGMEPP_DEPRECATED +-# define GPGMEPP_DEPRECATED __attribute__ ((__deprecated__)) ++# ifdef _MSC_VER ++# define GPGMEPP_DEPRECATED __declspec(deprecated("deprecated")) ++# else ++# define GPGMEPP_DEPRECATED __attribute__ ((__deprecated__)) ++# endif + #endif + + #ifndef GPGMEPP_DEPRECATED_EXPORT +diff -ur gpgmepp.org/lang/cpp/src/interfaces/dataprovider.h gpgmepp/lang/cpp/src/interfaces/dataprovider.h +--- gpgmepp.org/lang/cpp/src/interfaces/dataprovider.h 2016-05-17 14:32:37.000000000 +0200 ++++ gpgmepp/lang/cpp/src/interfaces/dataprovider.h 2017-11-20 18:03:11.332715700 +0100 +@@ -29,6 +29,11 @@ + + #include <gpg-error.h> + ++#ifdef _MSC_VER ++# include <BaseTsd.h> ++typedef SSIZE_T ssize_t; ++#endif ++ + namespace GpgME + { + +diff -ur gpgmepp.org/lang/cpp/src/key.cpp gpgmepp/lang/cpp/src/key.cpp +--- gpgmepp.org/lang/cpp/src/key.cpp 2017-03-20 20:10:15.000000000 +0100 ++++ gpgmepp/lang/cpp/src/key.cpp 2017-11-20 17:44:50.321858800 +0100 +@@ -33,10 +33,16 @@ + #include <gpgme.h> + + #include <string.h> ++#if HAVE_STRINGS_H + #include <strings.h> ++#endif + #include <istream> + #include <iterator> + ++#ifdef _MSC_VER ++# define strcasecmp _stricmp ++#endif ++ + const GpgME::Key::Null GpgME::Key::null; + + namespace GpgME +diff -ur gpgmepp.org/lang/cpp/src/key.h gpgmepp/lang/cpp/src/key.h +--- gpgmepp.org/lang/cpp/src/key.h 2017-03-20 20:10:15.000000000 +0100 ++++ gpgmepp/lang/cpp/src/key.h 2017-11-20 17:07:51.551632000 +0100 +@@ -30,7 +30,6 @@ + #include "gpgmefw.h" + + #include <memory> +-#include <sys/time.h> + + #include <vector> + #include <algorithm> +diff -ur gpgmepp.org/lang/qt/src/qgpgme_export.h gpgmepp/lang/qt/src/qgpgme_export.h +--- gpgmepp.org/lang/qt/src/qgpgme_export.h 2016-11-03 17:32:30.000000000 +0100 ++++ gpgmepp/lang/qt/src/qgpgme_export.h 2017-11-20 16:58:27.395388000 +0100 +@@ -39,14 +39,14 @@ + # ifndef QGPGME_EXPORT + # ifdef BUILDING_QGPGME + /* We are building this library */ +-# ifdef WIN32 ++# ifdef _WIN32 + # define QGPGME_EXPORT __declspec(dllexport) + # else + # define QGPGME_EXPORT __attribute__((visibility("default"))) + # endif + # else + /* We are using this library */ +-# ifdef WIN32 ++# ifdef _WIN32 + # define QGPGME_EXPORT __declspec(dllimport) + # else + # define QGPGME_EXPORT __attribute__((visibility("default"))) +@@ -55,7 +55,7 @@ + # endif + + # ifndef QGPGME_NO_EXPORT +-# ifdef WIN32 ++# ifdef _WIN32 + # define QGPGME_NO_EXPORT + # else + # define QGPGME_NO_EXPORT __attribute__((visibility("hidden"))) +@@ -64,7 +64,11 @@ + #endif + + #ifndef QGPGME_DEPRECATED +-# define QGPGME_DEPRECATED __attribute__ ((__deprecated__)) ++# ifdef _MSC_VER ++# define QGPGME_DEPRECATED __declspec(deprecated("deprecated")) ++# else ++# define QGPGME_DEPRECATED __attribute__ ((__deprecated__)) ++# endif + #endif + + #ifndef QGPGME_DEPRECATED_EXPORT _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits