[git] GpgEX - branch, master, updated. gpgex-0.9.7-14-g3cc9ee5

by Werner Koch cvs at cvs.gnupg.org
Thu Jun 20 17:17:40 CEST 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnupG extension for the Windows Explorer".

The branch, master has been updated
       via  3cc9ee5a799bbd802f578386a22103b9a85b89cd (commit)
      from  b21cad89a4a6de617d5020bed340cdfa7d0636d2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 3cc9ee5a799bbd802f578386a22103b9a85b89cd
Author: Werner Koch <wk at gnupg.org>
Date:   Thu Jun 20 16:47:51 2013 +0200

    Link gcc support libraries statically.
    
    * src/Makefile.am (gpgex_LDFLAGS): New.
    
    * src/versioninfo.rc.in: Add comments on how to add a manifest.
    * src/gpgex.manifest.in: New.
    * src/GNU.GnuPG.Gcc64Support.manifest: New.
    * src/Makefile.am: Distribute sample files.
    * configure.ac (BUILD_FILEVERSION_DOT, BUILD_CPU_ARCH): New ac_subst.
    (AC_CONFIG_FILES): Add gpgex.manifest.
    --
    
    Despite many hours of trial and error, I was not able to get a private
    side by side assembly work for gpgex.  See versioninfo.rc.in for
    details.

diff --git a/configure.ac b/configure.ac
index 24dc04a..2d1dc40 100644
--- a/configure.ac
+++ b/configure.ac
@@ -62,6 +62,8 @@ BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
 changequote([,])dnl
 BUILD_FILEVERSION="${BUILD_FILEVERSION}${SVN_REVISION}"
 AC_SUBST(BUILD_FILEVERSION)
+BUILD_FILEVERSION_DOT=`echo "$BUILD_FILEVERSION" | tr ',' '.'`
+AC_SUBST(BUILD_FILEVERSION_DOT)
 
 
 AH_BOTTOM([
@@ -106,10 +108,12 @@ case "${host}" in
         have_dosish_system=yes
         have_w32_system=yes
         have_w64_system=yes
+        BUILD_CPU_ARCH=amd64
         ;;
     *-mingw32*)
         have_dosish_system=yes
         have_w32_system=yes
+        BUILD_CPU_ARCH=x86
         ;;
     *)
     AC_MSG_ERROR([[
@@ -123,6 +127,10 @@ case "${host}" in
        ;;
 esac
 
+# We need the CPU architecture for the manifest file.
+AC_SUBST(BUILD_CPU_ARCH)
+
+
 AC_DEFINE(HAVE_DRIVE_LETTERS,1,
           [defined if we must run on a stupid file system])
 
@@ -252,6 +260,7 @@ AC_CONFIG_FILES([ Makefile
 doc/Makefile
 src/Makefile
 src/versioninfo.rc
+src/gpgex.manifest
 po/Makefile.in
 m4/Makefile
 ])
diff --git a/src/GNU.GnuPG.Gcc64Support.manifest b/src/GNU.GnuPG.Gcc64Support.manifest
new file mode 100644
index 0000000..7aedf3f
--- /dev/null
+++ b/src/GNU.GnuPG.Gcc64Support.manifest
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity
+    type="win32"
+    name="GNU.GnuPG.Gcc64Support"
+    version="6.0.0.0"
+    processorArchitecture="amd64"/>
+  <file name="libstdc++-6.dll"/>
+  <file name="libgcc_s_sjlj-1.dll"/>
+</assembly>
diff --git a/src/Makefile.am b/src/Makefile.am
index ec36b7f..061f4ae 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,5 @@
 # Makefile.am - main makefile for dialogs part of GpgEX
-# Copyright (C) 2005, 2007 g10 Code GmbH
+# Copyright (C) 2005, 2007, 2013 g10 Code GmbH
 #
 # This file is free software; as a special exception the author gives
 # unlimited permission to copy and/or distribute it, with or without
@@ -12,7 +12,8 @@
 ## Process this file with automake to produce Makefile.in
 
 bin_PROGRAMS = gpgex
-EXTRA_DIST = versioninfo.rc.in
+EXTRA_DIST = versioninfo.rc.in gpgex.manifest.in \
+	     GNU.GnuPG.Gcc64Support.manifest
 EXEEXT = .dll
 
 AM_CFLAGS = $(LIBASSUAN_CFLAGS) $(GPG_ERROR_CFLAGS) -shared
@@ -23,7 +24,7 @@ ICON_SIZES = 12 16
 ICONS = $(addprefix icon-, \
 	$(foreach size,$(ICON_SIZES),$(addsuffix -$(size).bmp, $(ICON_NAMES))))
 
-nodist_gpgex_SOURCES = versioninfo.rc
+nodist_gpgex_SOURCES = versioninfo.rc gpgex.manifest
 gpgex_SOURCES = 				\
 	gpgex.def				\
 	icons.rc 				\
@@ -50,6 +51,7 @@ clean-local:
 #gpgex_LDADD = $(srcdir)/gpgex.def		\
 #	-L . -lshell32  -lcomdlg32 -ladvapi32
 
+gpgex_LDFLAGS = -static-libgcc -static-libstdc++
 # We need -loleaut32 for start_help() in gpgex.cc.
 gpgex_LDADD = $(srcdir)/gpgex.def -L . \
 	-lshell32 -lgdi32 -lole32 -luuid \
diff --git a/src/gpgex.manifest.in b/src/gpgex.manifest.in
new file mode 100644
index 0000000..e1d63bf
--- /dev/null
+++ b/src/gpgex.manifest.in
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity
+    type="win32"
+    name="gpgex"
+    version="@BUILD_FILEVERSION_DOT@"
+    processorArchitecture="@BUILD_CPU_ARCH@"
+  />
+  <description>GpgEX - GnuPG shell extensions</description>
+  <dependency>
+    <dependentAssembly>
+       <assemblyIdentity
+           type="win32"
+           name="GNU.GnuPG.Gcc64Support"
+           version="6.0.0.0"
+           processorArchitecture="@BUILD_CPU_ARCH@"/>
+    </dependentAssembly>
+  </dependency>
+</assembly>
diff --git a/src/versioninfo.rc.in b/src/versioninfo.rc.in
index 28f2910..a88c5a0 100644
--- a/src/versioninfo.rc.in
+++ b/src/versioninfo.rc.in
@@ -1,6 +1,6 @@
-/* versioninfo.rc.in 
- *    Copyright (C) 2005, 2007, 2009 g10 Code GmbH
- * 
+/* versioninfo.rc.in                                         -*- c -*-
+ * Copyright (C) 2005, 2007, 2009, 2013 g10 Code GmbH
+ *
  * This file is free software; as a special exception the author gives
  * unlimited permission to copy and/or distribute it, with or without
  * modifications, as long as this notice is preserved.
@@ -9,7 +9,7 @@
  * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  */
- 
+
 /* This file is processed by configure to create versioninfo.rc */
 
 #line __LINE__ "versioninfo.rc.in"
@@ -54,3 +54,17 @@ BEGIN
     END
 END
 
+/* Fixme: It was not possible to convince Windows to use the manifest.
+ * Thus we resort to static linking of gpgex with the helper
+ * libraries.  The idea was to put have this directory layout
+ *
+ *   bin/gpgex.dll
+ *   bin/GNU.GnuPG.Gcc64Support/GNU.GnuPG.Gcc64Support.manifest
+ *   bin/GNU.GnuPG.Gcc64Support/libstdc++-6.dll
+ *   bin/GNU.GnuPG.Gcc64Support/libgcc_s_sjlj-1.dll
+ *
+ * to cope with the 64 bit and 32 bit versions of the gcc support
+ * libraries.  It works with exe files but not with DLLs loaded.  Any
+ * hints to fix this are welcome.
+ */
+/* ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "gpgex.manifest" */

-----------------------------------------------------------------------

Summary of changes:
 configure.ac                        |    9 +++++++++
 src/GNU.GnuPG.Gcc64Support.manifest |   10 ++++++++++
 src/Makefile.am                     |    8 +++++---
 src/gpgex.manifest.in               |   19 +++++++++++++++++++
 src/versioninfo.rc.in               |   22 ++++++++++++++++++----
 5 files changed, 61 insertions(+), 7 deletions(-)
 create mode 100644 src/GNU.GnuPG.Gcc64Support.manifest
 create mode 100644 src/gpgex.manifest.in


hooks/post-receive
-- 
GnupG extension for the Windows Explorer
http://git.gnupg.org




More information about the Gnupg-commits mailing list