[Libreoffice-commits] core.git: Branch 'private/thb/gpg4libre-win32' - 3 commits - configure.ac external/gpgme external/gpgmepp external/Module_external.mk RepositoryExternal.mk xmlsecurity/inc xmlsecurity/Library_xsec_xmlsec.mk xmlsecurity/source

Thorsten Behrens Thorsten.Behrens at CIB.de
Wed Nov 22 13:47:06 UTC 2017


Rebased ref, commits from common ancestor:
commit 31bcf22df134fb59746c4145f0600b0fe4768948
Author: Thorsten Behrens <Thorsten.Behrens at 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.Behrens at 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.behrens at 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


More information about the Libreoffice-commits mailing list