diff --git a/src/gpg4win.mk.in b/src/gpg4win.mk.in
index 5cb5ab07..83a3ba63 100644
--- a/src/gpg4win.mk.in
+++ b/src/gpg4win.mk.in
@@ -1,1071 +1,1074 @@
 # gpg4win.m4.in - Installer for GnuPG 4 Windows Makefile.   -*- makefile -*-
 # Copyright (C) 2005, 2009 g10 Code GmbH
 #
 # This file is part of GPG4Win.
 #
 # GPG4Win is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
 # GPG4Win is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 
 
 # No servicable parts below this line :)
 
 
 # These paths must be absolute, as we switch directories pretty often.
 bdir := $(root)/build
 idir := $(root)/install
 ipdir := $(root)/install/pkgs
 tsdir := $(shell pwd)/${top_srcdir}
 pdir := $(shell pwd)/${top_srcdir}/patches
 ex_idir := $(root)/install-ex
 ex_ipdir := $(root)/install-ex/pkgs
 
 ifdef GIT_BETASTRING
 	VSD_VERSION_FILE:=$(VSD_VERSION)$(GIT_BETASTRING)
 else
 	VSD_VERSION_FILE:=$(VSD_VERSION)
 endif
 
 # We collect the names of all pkg files used.
 pkg_files =
 
 # The playground area is our scratch area, where we unpack, build and
 # install the packages.
 #
 # Boost includes are only needed for the host and are linked in the
 # playground install tree
 $(stampdir)/stamp-directories:
 	$(MKDIR) $(stampdir)
 	$(MKDIR) $(root)
 	$(MKDIR) -p installers
 	$(MKDIR) $(bdir)
 	$(MKDIR) $(idir)
 	$(MKDIR) $(idir)/include
 	ln -s /usr/include/boost $(idir)/include/boost
 	$(MKDIR) $(ipdir)
 	$(if $GPGEX_ADD_HOST, $(MKDIR) $(ex_idir))
 	$(if $GPGEX_ADD_HOST, $(MKDIR) $(ex_ipdir))
 	touch $(bdir)/versioninfo.txt
 	touch $(stampdir)/stamp-directories
 
 
 # Frob the name $1 by converting all '-' and '+' characters to '_'.
 define FROB_macro
 $(subst +,_,$(subst -,_,$(1)))
 endef
 
 # Get the variable $(1) (which may contain '-' and '+' characters).
 define GETVAR
 $($(call FROB_macro,$(1)))
 endef
 
 # Set a couple of common variables.
 define SETVARS
 	set -e; \
 	pkg="$(call GETVAR,gpg4win_pkg_$(1))";				\
 	pkg_version="$(1)-$(call GETVAR,gpg4win_pkg_$(1)_version)";	\
 	pkgsdir="$(bdir)/$$$${pkg_version}";				\
 	pkgbdir="$(bdir)/$$$${pkg_version}-build";			\
 	pkgpdir="$(pdir)/$$$${pkg_version}";				\
 	pkgpbdir="$(pdir)/$(1)";	          			\
 	pkgidir="$(ipdir)/$$$${pkg_version}";				\
 	pkg_dev="$(call GETVAR,gpg4win_pkg_$(1)_dev)";			\
 	pkg_version_dev="$(1)-dev-$(call GETVAR,gpg4win_pkg_$(1)_version)"; \
 	pkgidir_dev="$(ipdir)/$$$${pkg_version_dev}";			\
 	pkgcfg="$(call GETVAR,gpg4win_pkg_$(1)_configure)";		\
 	pkgextracflags="$(call GETVAR,gpg4win_pkg_$(1)_extracflags)";	\
 	pkgmkargs="$(call GETVAR,gpg4win_pkg_$(1)_make_args)";          \
 	pkgmkargs_inst="$(call GETVAR,gpg4win_pkg_$(1)_make_args_inst)";\
 	pkgmkdir="$(call GETVAR,gpg4win_pkg_$(1)_make_dir)";             \
 	pkgmkdir_inst="$(call GETVAR,gpg4win_pkg_$(1)_make_dir)";        \
 	export PKG_CONFIG="$(tsdir)/src/pkg-config";			\
 	export PKG_CONFIG_PATH="$(idir)/lib/pkgconfig";			\
 	export PKG_CONFIG_LIBDIR="";					\
 	export PATH="$(idir)/bin:$${PATH}";				\
 	export SYSROOT="$(idir)";					\
 	export CONFIG_SITE="$(tsdir)/src/config.site"
 endef
 
 # Set variables for building in an additional architecture
 define SETVARS_EX
 	set -e; \
 	pkg="$(call GETVAR,gpg4win_pkg_$(1))";                              \
 	pkg_version="$(1)-$(call GETVAR,gpg4win_pkg_$(1)_version)";         \
 	pkgsdir="$(bdir)/$$$${pkg_version}";                                \
 	pkgbdir="$(bdir)/$$$${pkg_version}-ex-build";                       \
 	pkgpdir="$(pdir)/$$$${pkg_version}";                                \
 	pkgpbdir="$(pdir)/$(1)";                                            \
 	pkgidir="$(ex_ipdir)/$$$${pkg_version}";                            \
 	pkgidir_dev="$(ex_ipdir)/$$$${pkg_version_dev}";                    \
 	pkgcfg="$(call GETVAR,gpg4win_pkg_$(1)_ex_configure)";              \
 	pkgextracflags="$(call GETVAR,gpg4win_pkg_$(1)_ex_extracflags)";    \
 	pkgmkargs="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_args)";           \
 	pkgmkargs_inst="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_args_inst)"; \
 	pkgmkdir="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_dir)";             \
 	pkgmkdir_inst="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_dir)";        \
 	export PKG_CONFIG="$(tsdir)/src/pkg-config";                        \
 	export PKG_CONFIG_PATH="$(ex_idir)/lib/pkgconfig";                  \
 	export PKG_CONFIG_LIBDIR="";                                        \
 	export PATH="$(ex_idir)/bin:$${PATH}";                              \
 	export SYSROOT="$(ex_idir)"
 endef
 
 define SETVARS_WINE
 	set -e; \
 	if [ -z "$$$$(which $(WINE))" ]; then \
 		echo "ERROR: For the msi-package wine needs to be installed."; \
 	exit 1; \
 	fi; \
 	if [ -z "$(WIXPREFIX)" ]; then \
 		if [ -d `readlink -f ~/w32root/wixtools` ]; then \
 			WIXPREFIX2=`readlink -f ~/w32root/wixtools`; \
 			echo "Using $$$$WIXPREFIX2 as WIXPREFIX"; \
 		else \
 			echo "ERROR: You must set WIXPREFIX to an installation of wixtools."; \
 			exit 1; \
 		fi; \
 	else \
 		WIXPREFIX2="$(WIXPREFIX)"; \
 	fi; \
 	if [ -z "$$$$WINEPREFIX" ]; then \
 		WINEPREFIX="$$$$HOME/.wine"; \
 		if [ ! -e "$$$$WINEPREFIX/dosdevices" ]; then \
 			echo "ERROR: No wine prefix found under $$WINEPREFIX"; \
 			exit 1; \
 		fi; \
 	fi; \
 	WINEINST=$$$$WINEPREFIX/dosdevices/k:; \
 	WINESRC=$$$$WINEPREFIX/dosdevices/i:; \
 	WINEINSTEX=$$$$WINEPREFIX/dosdevices/j:; \
 	if [ -e "$$$$WINEINST" ]; then \
 		echo "ERROR: $$$$WINEINST already exists. Please remove."; \
 		exit 1; \
 	fi; \
 	if [ -e "$$$$WINESRC" ]; then \
 		echo "ERROR: $$$$WINESRC already exists. Please remove."; \
 		exit 1; \
 	fi; \
 	if [ -e "$$$$WINEINSTEX" ]; then \
 		echo "ERROR: $$$$WINEINSTEX already exists. Please remove."; \
 		exit 1; \
 	fi; \
 	MSI_VERSION=$$$$(echo $(VSD_VERSION))
 endef
 
 # Same as above
 define SETVARS_WINE_TWO_DOLLAR
 	set -e; \
 	if [ -z "$$(which $(WINE))" ]; then \
 		echo "ERROR: For the msi-package wine needs to be installed."; \
 	exit 1; \
 	fi; \
 	if [ -z "$(WIXPREFIX)" ]; then \
 		if [ -d `readlink -f ~/w32root/wixtools` ]; then \
 			WIXPREFIX2=`readlink -f ~/w32root/wixtools`; \
 			echo "Using $$WIXPREFIX2 as WIXPREFIX"; \
 		else \
 			echo "ERROR: You must set WIXPREFIX to an installation of wixtools."; \
 			exit 1; \
 		fi; \
 	else \
 		WIXPREFIX2="$(WIXPREFIX)"; \
 	fi; \
 	if [ -z "$$WINEPREFIX" ]; then \
 		WINEPREFIX="$$HOME/.wine"; \
 		if [ ! -e "$$WINEPREFIX/dosdevices" ]; then \
 			echo "ERROR: No wine prefix found under $$WINEPREFIX"; \
 			exit 1; \
 		fi; \
 	fi; \
 	WINEINST=$$WINEPREFIX/dosdevices/k:; \
 	WINESRC=$$WINEPREFIX/dosdevices/i:; \
 	WINEINSTEX=$$WINEPREFIX/dosdevices/j:; \
 	if [ -e "$$WINEINST" ]; then \
 		echo "ERROR: $$WINEINST already exists. Please remove."; \
 		exit 1; \
 	fi; \
 	if [ -e "$$WINESRC" ]; then \
 		echo "ERROR: $$WINESRC already exists. Please remove."; \
 		exit 1; \
 	fi; \
 	if [ -e "$$WINEINSTEX" ]; then \
 		echo "ERROR: $$WINEINSTEX already exists. Please remove."; \
 		exit 1; \
 	fi; \
 	MSI_VERSION=$$(echo $(VSD_VERSION))
 endef
 
 # Support macro.  Unpack the archive $(1).
 define DEFLATE_macro
 	rm -rf $$$${pkgsdir}; \
 	case "$(1)" in			\
           */qtbase*.*.tar.xz)          \
             $(TAR) -xJ --transform='s,^qtbase-everywhere-src,qtbase,' -f "$(1)" ;; \
           */qttools*.*.tar.xz)          \
             $(TAR) -xJ --transform='s,^qttools-everywhere-src,qttools,' -f "$(1)" ;; \
           */qtwinextras*.*.tar.xz)          \
             $(TAR) -xJ --transform='s,^qtwinextras-everywhere-src,qtwinextras,' -f "$(1)" ;; \
           */qtsvg*.*.tar.xz)          \
             $(TAR) -xJ --transform='s,^qtsvg-everywhere-src,qtsvg,' -f "$(1)" ;; \
           */qttranslations*.*.tar.xz)          \
             $(TAR) -xJ --transform='s,^qttranslations-everywhere-src,qttranslations,' -f "$(1)" ;; \
 	  *.tar.gz | *.tgz)		\
 	    $(TAR) xzf "$(1)" ;;	\
 	  *.tar.bz2 | *.tbz2 | *.tbz)	\
 	    $(TAR) xjf "$(1)" ;;	\
 	  *.tar.xz )          		\
 	    $(TAR) xJf "$(1)" ;;	\
 	  *.exe ) 	         		\
 	    cp "$(1)" .       ;;	\
 	  *.zip)			\
 	    $(UNZIP) -o "$(1)" ;;		\
 	esac
 endef
 
 # Support macro.  Strip all exe files below $(1).
 define STRIP_macro
 	if test -z '$(DEBUG)'; then			\
 	  (cd $(1);					\
 	   for f in `find . -name \*.exe -o -name \*.dll`; do		\
 	   echo Calling $(STRIP) "$$$${pkg_version}/$$$${f}"; \
 	   $(STRIP) "$$$${f}"; done);			\
 	fi
 endef
 
 # Support macro.  Strip all exe files below $(1) using STRIP_EX.
 define STRIP_EX_macro
 	if test -z '$(DEBUG)'; then			\
 	  (cd $(1);					\
 	   for f in `find . -name \*.exe -o -name \*.dll`; do		\
 	   echo Calling $(STRIP_EX) "$$$${pkg_version}/$$$${f}"; \
 	   $(STRIP_EX) "$$$${f}"; done);			\
 	fi
 endef
 
 define GETDEPS
   $(addprefix $(stampdir)/stamp-final-, $(call GETVAR,gpg4win_pkg_$(1)_deps))
 endef
 
 define GETDEPS_EX
   $(addprefix $(stampdir)/stamp-final-ex-, $(call GETVAR,gpg4win_pkg_$(1)_ex_deps))
 endef
 
 # Template for source packages to build for an additional host
 
 define EXPKG_template_
 
 pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
 
 $(stampdir)/stamp-$(1)-ex-00-unpack: $(stampdir)/stamp-$(1)-00-unpack $(call GETDEPS_EX,$(1))
 	touch $(stampdir)/stamp-$(1)-ex-00-unpack
 
 $(stampdir)/stamp-$(1)-ex-01-patch: $(stampdir)/stamp-$(1)-ex-00-unpack $(stampdir)/stamp-$(1)-01-patch
 	touch $(stampdir)/stamp-$(1)-ex-01-patch
 
 $(stampdir)/stamp-$(1)-ex-02-configure: $(stampdir)/stamp-$(1)-ex-01-patch
 	($(call SETVARS_EX,$(1));				\
 	 mkdir "$$$${pkgbdir}";				\
 	  cd "$$$${pkgbdir}";				\
 	 eval "../$$$${pkg_version}/configure"		\
 		--prefix="$$$${pkgidir}"		\
 		--host=$(GPGEX_ADD_HOST)		\
 		--build=$(build)			\
 		$$$${pkgcfg} CFLAGS=\"-mms-bitfields -fcommon $$$${pkgextracflags}\";\
 	 shopt -s nullglob;					\
 	 for pfile in "$$$${pkgpbdir}"/*.postcfg       		\
                        "$$$${pkgpdir}"/*.postcfg ; do  		\
 	   (cd "$$$${pkgsdir}"; "$$$${pfile}")		     	\
 	 done;                                               	\
 	 for pfile in "$$$${pkgpbdir}"/*.postcfg-build    	\
                        "$$$${pkgpdir}"/*.postcfg-build ; do	\
 	   (cd "$$$${pkgbdir}"; "$$$${pfile}")			\
 	 done)
 	touch $(stampdir)/stamp-$(1)-ex-02-configure
 
 $(stampdir)/stamp-$(1)-ex-03-make: $(stampdir)/stamp-$(1)-ex-02-configure
 	($(call SETVARS_EX,$(1));				\
 	  cd "$$$${pkgbdir}";				\
 	  test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}";	\
 	  $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs} \
 	  )
 	touch $(stampdir)/stamp-$(1)-ex-03-make
 
 # Note that post_install must come last because it may be empty and
 # "; ;" is a syntax error.
 $(stampdir)/stamp-$(1)-ex-04-install: $(stampdir)/stamp-$(1)-ex-03-make
 	($(call SETVARS_EX,$(1));				\
 	  cd "$$$${pkgbdir}";				\
 	  $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \
 	  $(call STRIP_EX_macro,"$$$${pkgidir}");		\
 	  rm -f "$$$${pkgidir}/share/info/dir";		\
 	  $(call gpg4win_pkg_$(call FROB_macro,$(1))_ex_post_install))
 	touch $(stampdir)/stamp-$(1)-ex-04-install
 
 $(stampdir)/stamp-$(1)-ex-05-stow: $(stampdir)/stamp-$(1)-ex-04-install
 	($(call SETVARS_EX,$(1));				\
 	 cd $(ex_ipdir);					\
 	 $(STOW) -t `readlink -f $(ex_idir)` "$$$${pkg_version}")
 	touch $(stampdir)/stamp-$(1)-ex-05-stow
 
 $(stampdir)/stamp-final-ex-$(1): $(stampdir)/stamp-$(1)-ex-05-stow
 	touch $(stampdir)/stamp-final-ex-$(1)
 
 .PHONY : clean-ex-$(1)
 clean-ex-$(1):
 	($(call SETVARS_EX,$(1));				\
 	 (cd $(ex_ipdir) &&				\
 	  ($(STOW) -D "$$$${pkg_version}" || true;	\
 	   rm -fR "$$$${pkg_version}"));		\
 	 rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
 	rm -f $(stampdir)/stamp-final-ex-$(1) $(stampdir)/stamp-$(1)-ex-*
 
 endef
 
 define EXPKG_template
 $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
   $(call EXPKG_template_,$1))
 endef
 
 
 # Template for source packages.
 
 define SPKG_template_
 
 pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
 
 $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
 	(cd $(bdir);					\
 	 $(call SETVARS,$(1));				\
 	 $(call DEFLATE_macro,$$$${pkg}))
 	touch $(stampdir)/stamp-$(1)-00-unpack
 
 $(stampdir)/stamp-$(1)-01-patch: $(stampdir)/stamp-$(1)-00-unpack
 	(shopt -s nullglob;				\
 	 $(call SETVARS,$(1));				\
 	 for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do  \
 	   (cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}")		\
 	 done)
 	touch $(stampdir)/stamp-$(1)-01-patch
 
 $(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
 	($(call SETVARS,$(1)); \
 	mkdir "$$$${pkgbdir}"; \
 	cd "$$$${pkgbdir}"; \
 	eval "../$$$${pkg_version}/configure" \
 		--prefix="$$$${pkgidir}" \
 		--host=$(host) \
 		--build=$(build) \
 	$$$${pkgcfg} CFLAGS=\"-mms-bitfields  -fcommon $$$${pkgextracflags}\";\
 	shopt -s nullglob; \
 	for pfile in "$$$${pkgpbdir}"/*.postcfg \
 				"$$$${pkgpdir}"/*.postcfg ; do \
 			(cd "$$$${pkgsdir}"; "$$$${pfile}") \
 		done; \
 	for pfile in "$$$${pkgpbdir}"/*.postcfg-build \
 				 "$$$${pkgpdir}"/*.postcfg-build ; do \
 				(cd "$$$${pkgbdir}"; "$$$${pfile}") \
 	done;) && \
 	touch $(stampdir)/stamp-$(1)-02-configure
 
 $(stampdir)/stamp-$(1)-03-make: $(stampdir)/stamp-$(1)-02-configure
 	($(call SETVARS,$(1));				\
 	  cd "$$$${pkgbdir}";				\
 	  test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}";	\
 	  $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs})
 	touch $(stampdir)/stamp-$(1)-03-make
 
 # Note that post_install must come last because it may be empty and
 # "; ;" is a syntax error.
 $(stampdir)/stamp-$(1)-04-install: $(stampdir)/stamp-$(1)-03-make
 	($(call SETVARS,$(1));				\
 	  cd "$$$${pkgbdir}";				\
 	  cd "$$$${pkgmkdir_inst}";			\
 	  $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \
 	  $(call STRIP_macro,"$$$${pkgidir}");		\
 	  rm -f "$$$${pkgidir}/share/info/dir";		\
 	  $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
 	touch $(stampdir)/stamp-$(1)-04-install
 
 $(stampdir)/stamp-$(1)-05-stow: $(stampdir)/stamp-$(1)-04-install
 	($(call SETVARS,$(1));				\
 	 cd $(ipdir);					\
 	 $(STOW) "$$$${pkg_version}")
 	touch $(stampdir)/stamp-$(1)-05-stow
 
 $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-05-stow
 	touch $(stampdir)/stamp-final-$(1)
 
 .PHONY : clean-$(1)
 clean-$(1):
 	($(call SETVARS,$(1));				\
 	 (cd $(ipdir) &&				\
 	  ($(STOW) -D "$$$${pkg_version}" || true;	\
 	   rm -fR "$$$${pkg_version}"));		\
 	 rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
 	rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
 
 endef
 
 define SPKG_template
 $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
   $(call SPKG_template_,$1))
 endef
 
 
 # Template for source packages using only make and no build
 # directory.
 
 define MPKG_template_
 
 pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
 
 $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
 	(cd $(bdir);					\
 	 $(call SETVARS,$(1));				\
 	 $(call DEFLATE_macro,$$$${pkg}))
 	touch $(stampdir)/stamp-$(1)-00-unpack
 
 $(stampdir)/stamp-$(1)-01-patch: $(stampdir)/stamp-$(1)-00-unpack
 	(shopt -s nullglob;				\
 	 $(call SETVARS,$(1));				\
 	 for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \
 	   (cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}")		\
 	 done)
 	touch $(stampdir)/stamp-$(1)-01-patch
 
 $(stampdir)/stamp-$(1)-03-make: $(stampdir)/stamp-$(1)-01-patch
 	($(call SETVARS,$(1));				\
 	  cd "$$$${pkgsdir}";				\
 	  test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}";	\
 	  $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs})
 	touch $(stampdir)/stamp-$(1)-03-make
 
 $(stampdir)/stamp-$(1)-04-install: $(stampdir)/stamp-$(1)-03-make
 	($(call SETVARS,$(1));				\
 	  cd "$$$${pkgsdir}";				\
 	  $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \
 	  $(call STRIP_macro,"$$$${pkgidir}"); \
 	  $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
 	touch $(stampdir)/stamp-$(1)-04-install
 
 $(stampdir)/stamp-$(1)-05-stow: $(stampdir)/stamp-$(1)-04-install
 	($(call SETVARS,$(1));				\
 	 cd $(ipdir);					\
 	 $(STOW) "$$$${pkg_version}")
 	touch $(stampdir)/stamp-$(1)-05-stow
 
 $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-05-stow
 	touch $(stampdir)/stamp-final-$(1)
 
 .PHONY : clean-$(1)
 clean-$(1):
 	($(call SETVARS,$(1));				\
 	 (cd $(ipdir) &&				\
 	  ($(STOW) -D "$$$${pkg_version}" || true;	\
 	   rm -fR "$$$${pkg_version}"));		\
 	 rm -fR "$$$${pkgsdir}")
 	rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
 
 endef
 
 define MPKG_template
 $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
   $(call MPKG_template_,$1))
 endef
 
 
 
 # Template for binary packages.
 
 define BPKG_template_
 
 pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
 pkg_files += $(call GETVAR,gpg4win_pkg_$(1)_dev)
 
 $(stampdir)/stamp-$(1)-00-install: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
 	($(call SETVARS,$(1));				\
 	 $(MKDIR) "$$$${pkgidir}";			\
 	 cd $$$${pkgidir};				\
 	 $(call DEFLATE_macro,$$$${pkg}))
 	touch $(stampdir)/stamp-$(1)-00-install
 
 # Note that post_install must come last because it may be empty and
 # "; ;" is a syntax error.
 $(stampdir)/stamp-$(1)-01-install-dev: $(stampdir)/stamp-$(1)-00-install
 	($(call SETVARS,$(1));				\
 	 $(MKDIR) "$$$${pkgidir_dev}";			\
 	 (cd $$$${pkgidir_dev};				\
 	  $(call DEFLATE_macro,$$$${pkg_dev}));		\
 	 $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
 	touch $(stampdir)/stamp-$(1)-01-install-dev
 
 $(stampdir)/stamp-$(1)-02-stow: $(stampdir)/stamp-$(1)-01-install-dev
 	($(call SETVARS,$(1));				\
 	 cd $(ipdir);					\
 	 $(STOW) "$$$${pkg_version}")
 	touch $(stampdir)/stamp-$(1)-02-stow
 
 $(stampdir)/stamp-$(1)-03-stow-dev: $(stampdir)/stamp-$(1)-02-stow
 	($(call SETVARS,$(1));				\
 	 cd $(ipdir);					\
 	 $(STOW) "$$$${pkg_version_dev}")
 	touch $(stampdir)/stamp-$(1)-03-stow-dev
 
 $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-03-stow-dev
 	touch $(stampdir)/stamp-final-$(1)
 
 .PHONY : clean-$(1)
 clean-$(1):
 	($(call SETVARS,$(1));				\
 	 cd $(ipdir) &&					\
 	 ($(STOW) -D "$$$${pkg_version}" || true;	\
 	  $(STOW) -D "$$$${pkg_version_dev}" || true;	\
 	  rm -fR "$$$${pkg_version}" "$$$${pkg_version_dev}"))
 	rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
 
 endef
 
 define BPKG_template
 $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
   $(call BPKG_template_,$1))
 endef
 
 # Template for qt packages.
 
 define QTPKG_template_
 
 pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
 
 $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
 	(cd $(bdir);					\
 	 $(call SETVARS,$(1));				\
 	 $(call DEFLATE_macro,$$$${pkg}))
 	touch $(stampdir)/stamp-$(1)-00-unpack
 
 $(stampdir)/stamp-$(1)-01-patch: $(stampdir)/stamp-$(1)-00-unpack
 	(shopt -s nullglob;				\
 	 $(call SETVARS,$(1));				\
 	 for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do  \
 	   (cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}")		\
 	 done)
 	touch $(stampdir)/stamp-$(1)-01-patch
 
 $(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
 	($(call SETVARS,$(1)); \
 	mkdir "$$$${pkgbdir}"; \
 	cd "$$$${pkgbdir}"; \
 	$$$${pkgcfg}) && \
 	touch $(stampdir)/stamp-$(1)-02-configure
 
 $(stampdir)/stamp-$(1)-03-make: $(stampdir)/stamp-$(1)-02-configure
 	($(call SETVARS,$(1));				\
 	  cd "$$$${pkgbdir}";				\
 	  test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}";	\
 	  $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs})
 	touch $(stampdir)/stamp-$(1)-03-make
 
 # Note that post_install must come last because it may be empty and
 # "; ;" is a syntax error.
 $(stampdir)/stamp-$(1)-04-install: $(stampdir)/stamp-$(1)-03-make
 	($(call SETVARS,$(1)); \
 	$(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
 	touch $(stampdir)/stamp-$(1)-04-install
 
 $(stampdir)/stamp-$(1)-05-stow: $(stampdir)/stamp-$(1)-04-install
 	($(call SETVARS,$(1));				\
 	 cd $(ipdir);					\
 	 $(STOW) "$$$${pkg_version}")
 	touch $(stampdir)/stamp-$(1)-05-stow
 
 $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-05-stow
 	touch $(stampdir)/stamp-final-$(1)
 
 .PHONY : clean-$(1)
 clean-$(1):
 	($(call SETVARS,$(1));				\
 	 (cd $(ipdir) &&				\
 	  ($(STOW) -D "$$$${pkg_version}" || true;	\
 	   rm -fR "$$$${pkg_version}"));		\
 	 rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
 	rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
 
 endef
 
 define QTPKG_template
 $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
   $(call QTPKG_template_,$1))
 endef
 
 # Template for internal packages.
 
 define IPKG_template
 
 $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-directories $(call GETDEPS,$(1))
 	touch $(stampdir)/stamp-final-$(1)
 endef
 
 # Template for README files
 # (The final awk command converts the file endings).
 
 define README_template
 README.$(1).txt : versioninfo.txt NEWS.tmp $(top_srcdir)/doc/README.$(1).txt \
                   COMPONENTS-list.tmp $(top_srcdir)/doc/beta-warning.txt
 	sed -e '/^;.*/d;/!VERSIONINFO!/{r versioninfo.txt' -e 'd;}' \
 	-e '/!NEWSFILE!/{r NEWS.tmp' -e 'd;}' \
 	-e '/!NEWSFILE!/{r NEWS.tmp' -e 'd;}' \
 	-e '/!COMPONENTS!/{r COMPONENTS-list.tmp' -e 'd;}' \
         -e '/!PKG-COPYRIGHT!/{r $(top_srcdir)/doc/pkg-copyright.txt' -e 'd;}' \
         -e 's,!VERSION!,$(VERSION),g' \
 	-e 's,!BUILD_ISODATE!,$(BUILD_ISODATE),g' \
 	   < $(top_srcdir)/doc/README.$(1).txt \
 	   | (if echo "$(VERSION)" | egrep 'svn|rc|beta|git' >/dev/null; then \
               sed -e '/!BETA-WARNING!/{r $(top_srcdir)/doc/beta-warning.txt' \
                -e 'd;}'; else sed -e 's,!BETA-WARNING!,,g'; fi) \
            | awk '{printf "%s\r\n", $$$$0}' >README.$(1).txt
 endef
 
 define HOWTO_template
 HOWTO-$(1).$(2).txt : $(top_srcdir)/doc/HOWTO-$(1).$(2).txt
 	sed -e '/^;.*/d' \
         -e 's,!VERSION!,$(VERSION),g' \
 	-e 's,!BUILD_ISODATE!,$(BUILD_ISODATE),g' \
 	   < $(top_srcdir)/doc/HOWTO-$(1).$(2).txt \
         | awk '{printf "%s\r\n", $$$$0}' > HOWTO-$(1).$(2).txt
 endef
 
 # Template for source packages of KDE software
 define KDEPKG_template_
 
 pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
 
 $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
 	(cd $(bdir);					\
 	 $(call SETVARS,$(1));				\
 	 $(call DEFLATE_macro,$$$${pkg}))
 	touch $(stampdir)/stamp-$(1)-00-unpack
 
 $(stampdir)/stamp-$(1)-01-patch: $(stampdir)/stamp-$(1)-00-unpack
 	(shopt -s nullglob;				\
 	 $(call SETVARS,$(1));				\
 	 cd "$$$${pkgsdir}";				\
 	 sed -i 's/set(KF5_MIN_VERSION.*)/set(KF5_MIN_VERSION "5.90.0")/' CMakeLists.txt; \
 	 sed -i 's/set(KF5_VERSION.*)/set(KF5_VERSION "5.90.0")/' CMakeLists.txt; \
 	 sed -i 's/set(KMIME_VERSION.*)/set(KMIME_VERSION "5.2.40")/' CMakeLists.txt; \
 	 sed -i 's/set(LIBKLEO_VERSION.*)/set(LIBKLEO_VERSION "5.4.40")/' CMakeLists.txt; \
 	 sed -i 's/set(QT_REQUIRED_VERSION.*)/set(QT_REQUIRED_VERSION "5.10.0")/' CMakeLists.txt; \
 	 sed -i 's/set(GPGME_REQUIRED_VERSION.*)/set(GPGME_REQUIRED_VERSION "1.10.0")/' CMakeLists.txt; \
 	 for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do  \
 	   (cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}")		\
 	 done)
 	touch $(stampdir)/stamp-$(1)-01-patch
 
 $(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
 	($(call SETVARS,$(1));				\
 	 mkdir "$$$${pkgbdir}";				\
 	 cd "$$$${pkgbdir}";				\
 	 $(CMAKE)					\
 		-DCMAKE_INSTALL_PREFIX="$$$${pkgidir}" \
 		-DCMAKE_PREFIX_PATH="$$$${pkgidir}" \
 		-DQT_MAJOR_VERSION="5" \
 		-DCMAKE_TOOLCHAIN_FILE=$(abs_top_srcdir)/src/toolchain.cmake \
 		-DKDE_INSTALL_DATADIR="$$$${pkgidir}/share" \
 		-DBUILD_TESTING=False \
 		$$$${pkgcfg} $$$${pkgextracflags} "../$$$${pkg_version}") && \
 	touch $(stampdir)/stamp-$(1)-02-configure
 
 $(stampdir)/stamp-$(1)-03-make: $(stampdir)/stamp-$(1)-02-configure
 	($(call SETVARS,$(1));				\
 	  cd "$$$${pkgbdir}";				\
 	  test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}";	\
 	  $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs})
 	touch $(stampdir)/stamp-$(1)-03-make
 
 # Note that post_install must come last because it may be empty and
 # "; ;" is a syntax error.
 $(stampdir)/stamp-$(1)-04-install: $(stampdir)/stamp-$(1)-03-make
 	($(call SETVARS,$(1));				\
 	  cd "$$$${pkgbdir}";				\
 	  cd "$$$${pkgmkdir_inst}";			\
 	  $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \
 	  $(call STRIP_macro,"$$$${pkgidir}");		\
 	  $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
 	touch $(stampdir)/stamp-$(1)-04-install
 
 $(stampdir)/stamp-$(1)-05-stow: $(stampdir)/stamp-$(1)-04-install
 	($(call SETVARS,$(1));				\
 	 cd $(ipdir);					\
 	 $(STOW) "$$$${pkg_version}")
 	touch $(stampdir)/stamp-$(1)-05-stow
 
 $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-05-stow
 	touch $(stampdir)/stamp-final-$(1)
 
 .PHONY : clean-$(1)
 clean-$(1):
 	($(call SETVARS,$(1));				\
 	 (cd $(ipdir) &&				\
 	  ($(STOW) -D "$$$${pkg_version}" || true;	\
 	   rm -fR "$$$${pkg_version}"));		\
 	 rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
 	rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
 
 endef
 
 define KDEPKG_template
 $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
   $(call KDEPKG_template_,$1))
 endef
 
 # Sign the file $1 and save the result as $2
 define AUTHENTICODE_sign
    set -e;\
    if [ "$(IS_VSD_BUILD)" = yes ]; then \
      val_n="GnuPG VS-Desktop" ;\
      val_i="https://gnupg.com" ;\
    else \
      val_n="GnuPG" ;\
      val_i="https://gnupg.org" ;\
    fi ;\
    if [ -n "$(AUTHENTICODE_SIGNHOST)" ]; then \
      echo "speedo: Signing via host $(AUTHENTICODE_SIGNHOST)";\
      scp $(1) "$(AUTHENTICODE_SIGNHOST):a.exe" ;\
      ssh "$(AUTHENTICODE_SIGNHOST)" $(AUTHENTICODE_TOOL) sign \
         /v /sm \
         /a /n '"g10 Code GmbH"' \
         /tr 'http://rfc3161timestamp.globalsign.com/advanced' /td sha256 \
         /d '"GnuPG VS-Desktop"' \
         /fd sha256 /du https://gnupg.com a.exe; \
      scp "$(AUTHENTICODE_SIGNHOST):a.exe" $(2);\
      echo "signed file is '$(2)'" ;\
    elif [ "$(AUTHENTICODE_KEY)" = card ]; then \
      echo "speedo: Signing using a card";\
      $(OSSLSIGNCODE) sign \
        -pkcs11engine $(OSSLPKCS11ENGINE) \
        -pkcs11module $(SCUTEMODULE) \
        -certs $(AUTHENTICODE_CERTS) \
        -h sha256 -n "$$val_n" -i "$$val_i" \
        -ts http://rfc3161timestamp.globalsign.com/advanced \
        -in $(1) -out $(2).tmp ; mv $(2).tmp $(2) ; \
    else \
      echo "speedo: Signing using key $(AUTHENTICODE_KEY)";\
      osslsigncode sign -certs $(AUTHENTICODE_CERTS) \
        -pkcs12 $(AUTHENTICODE_KEY) -askpass \
        -ts "http://timestamp.globalsign.com/scripts/timstamp.dll" \
        -h sha256 -n "$$val_n" -i "$$val_i" \
        -in $(1) -out $(2) ;\
    fi
 endef
 
 define MSI_template
 
 .PHONY : $(1)-package
 $(1)-package: installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi
 
 $(idir)/$(1)-x86.wixlib: gnupg-vsd/$(1)/$(1).wxs
 	($(call SETVARS_WINE,); \
 	( \
 	ln -s $(idir) $$$$WINEINST; \
 	ln -s $(ex_idir) $$$$WINEINSTEX; \
 	ln -s `readlink -f $(top_srcdir)` $$$$WINESRC; \
 		$(WINE) $$$$WIXPREFIX2/candle.exe \
 		-dInstDir=k: \
 		-dInstDirEx=j: \
 		-dSrcDir=i:\\src \
 		-dVersion=$$$$MSI_VERSION \
 		-arch x86 \
 		-out k:\\$(1)-$(VERSION)-x86.wixobj \
 		-pedantic -wx i:\\src\\gnupg-vsd\\$(1)\\$(1).wxs || exit 1;\
 		$(WINE) $$$$WIXPREFIX2/lit.exe \
 		-out k:\\$(1)-x86.wixlib \
 		-bf \
 		-wx \
 		-pedantic \
 		k:\\$(1)-$(VERSION)-x86.wixobj || exit 1; \
 		\
 	) || ERR=1; \
 		(rm $$$$WINEINST; rm $$$$WINESRC; rm $$$$WINEINSTEX); \
 	if [ -n "$$$$ERR" ]; then \
 		exit 1; \
 	fi \
 	)
 
 $(idir)/$(1).wixlib: gnupg-vsd/$(1)/$(1).wxs
 	($(call SETVARS_WINE,); \
 	( \
 	ln -s $(idir) $$$$WINEINST; \
 	ln -s $(ex_idir) $$$$WINEINSTEX; \
 	ln -s `readlink -f $(top_srcdir)` $$$$WINESRC; \
 		$(WINE) $$$$WIXPREFIX2/candle.exe \
 		-dInstDir=k: \
 		-dInstDirEx=j: \
 		-dSrcDir=i:\\src \
 		-dVersion=$$$$MSI_VERSION \
 		-out k:\\$(1)-$(VERSION).wixobj \
 		-arch x64 \
 		-pedantic -wx i:\\src\\gnupg-vsd\\$(1)\\$(1).wxs || exit 1;\
 		$(WINE) $$$$WIXPREFIX2/lit.exe \
 		-out k:\\$(1).wixlib \
 		-bf \
 		-wx \
 		-pedantic \
 		k:\\$(1)-$(VERSION).wixobj || exit 1; \
 		\
 	) || ERR=1; \
 		(rm $$$$WINEINST; rm $$$$WINESRC; rm $$$$WINEINSTEX); \
 	if [ -n "$$$$ERR" ]; then \
 		exit 1; \
 	fi \
 	)
 
 # This is generated by make-msi.pl
 gnupg-vsd/$(1)/$(1).wxs: gnupg-vsd/$(1)/VERSION.sig make-msi.pl gpg4win-$(VERSION).wxs
 	perl make-msi.pl --guids $(srcdir)/make-msi.guids \
 		--manifest gpg4win-$(VERSION).files \
 		--version $(VSD_VERSION) \
 		-DBUILD_DIR=. -DTOP_SRCDIR=$(top_srcdir) \
 		-DSRCDIR=$(srcdir) $(srcdir)/gpg4win.nsi > /dev/null
 
 gnupg-vsd/$(1)/VERSION.sig: gnupg-vsd/$(1)/VERSION
 	echo "----------SIGNING----------"
 	echo "using key: $(version_signkey)"
 	cat gnupg-vsd/$(1)/VERSION
 	gpg --yes -o gnupg-vsd/$(1)/VERSION.sig -bau $(version_signkey) gnupg-vsd/$(1)/VERSION
 
 gnupg-vsd/$(1)/VERSION: gnupg-vsd/custom.mk
 	if [ "$(call GETVAR,msi_target_$(1)_VERSION)" = "VS-Desktop-$(VSD_VERSION)" ]; then \
 		echo "VS-Desktop-$(VSD_VERSION_FILE)" > gnupg-vsd/$(1)/VERSION; \
 	else \
 		echo "$(call GETVAR,msi_target_$(1)_VERSION)" > gnupg-vsd/$(1)/VERSION;\
 	fi
 	echo "$(call GETVAR,msi_target_$(1)_DESC)" >> gnupg-vsd/$(1)/VERSION
 	echo "$(call GETVAR,msi_target_$(1)_DESC_SHORT)" >> gnupg-vsd/$(1)/VERSION
 
 gnupg-vsd/$(1)/announcement.txt: gnupg-vsd/custom.mk gnupg-vsd/announcement.de.in gnupg-vsd/announcement.en.in
 	cat gnupg-vsd/$(call GETVAR,msi_target_$(1)_announcement) | \
 		sed 's/VSD_VERSION/$(VSD_VERSION)/' | \
 		sed 's@GNUPG_VSD_CUSTOMER_LINK@https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi@' | \
 		sed 's@GNUPG_VSD_SOURCE_LINK@https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.bz2@' > gnupg-vsd/$(1)/announcement.txt
 
 installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi: $(stampdir)/stamp-msi-base $(idir)/$(1).wixlib \
 	gnupg-vsd/$(1)/license.rtf
 	scp gnupg-vsd/$(1)/license.rtf \
 		 $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
 	scp $(idir)/$(1).wixlib \
 		 $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
 	scp $(call GETVAR,msi_target_$(1)_branding)/*.bmp \
 		 $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
 	ssh $(WINHOST) "cd AppData/Local/Temp/gpg4win-$(VERSION) && $(WINLIGHT) \
 	-spdb \
 	-ext WixUIExtension \
 	-out GnuPG-VS-Desktop-$(VERSION)-$(1).msi \
 	 $(call GETVAR,msi_target_$(1)_l10n) \
 	-dcl:high \
 	-pedantic \
 	 \
 	 gpg4win-$(VERSION).wixlib \
 	 gnupg-msi-$(gpg4win_pkg_gnupg_msi_version)-bin.wixlib \
 	 $(1).wixlib" | grep -v "ICE80" | grep -v "ICE57" ; \
 	 scp $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/GnuPG-VS-Desktop-$(VERSION)-$(1).msi \
 	 installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi;
 
 installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1)-x86.msi: $(stampdir)/stamp-msi-base $(idir)/$(1)-x86.wixlib \
 	gnupg-vsd/$(1)/license.rtf \
 	$(idir)/gpg4win-$(VERSION)-x86.wixlib
 	scp gnupg-vsd/$(1)/license.rtf \
 		 $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
 	scp $(idir)/gpg4win-$(VERSION)-x86.wixlib \
 		 $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
 	scp $(idir)/$(1)-x86.wixlib \
 		 $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
 	scp $(call GETVAR,msi_target_$(1)_branding)/*.bmp \
 		 $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
 	ssh $(WINHOST) "cd AppData/Local/Temp/gpg4win-$(VERSION) && $(WINLIGHT) \
 	-spdb \
 	-ext WixUIExtension \
 	-out GnuPG-VS-Desktop-$(VERSION)-$(1)-x86.msi \
 	 $(call GETVAR,msi_target_$(1)_l10n) \
 	-dcl:high \
 	-v -pedantic \
 	 \
 	 gpg4win-$(VERSION)-x86.wixlib \
 	 gnupg-msi-$(gpg4win_pkg_gnupg_msi_version)-bin.wixlib \
 	 $(1)-x86.wixlib"; \
 	 scp $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/GnuPG-VS-Desktop-$(VERSION)-$(1)-x86.msi \
 	 installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1)-x86.msi;
 
 signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi: installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi
 	mkdir -p signed_installers
 	$(call AUTHENTICODE_sign,"installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi","signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi");\
 
 $(stampdir)/stamp-$(1)-upload: signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi \
 	$(stampdir)/stamp-dist-self
 	@(set -e; cd signed_installers; \
           sha256sum GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi > \
 		GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.sha256; \
 	  if [ -f "../gnupg-vsd/$(1)/customer-enc-key.asc" ]; then \
 		echo "Encrypting installer"; \
 	        k="-f ../gnupg-vsd/$(1)/customer-enc-key.asc" ; \
                 for i in 2 3 4 5 6 7 8 9; do \
 	          if [ -f "../gnupg-vsd/$(1)/customer-enc-key$$$${i}.asc" ]; then \
                     k="$$$${k} -f ../gnupg-vsd/$(1)/customer-enc-key$$$${i}.asc";\
 		  fi; \
 	        done; \
 		gpg --no-options --batch --yes -seu $(msi_signkey) \
 			$$$${k} \
 			-f "../gnupg-vsd/general-enc-key.asc" \
                         -o GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.gpg \
 			GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi;\
 		sha256sum GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.gpg > \
 		   GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.gpg.sha256; \
 		scp GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.gpg \
 		   GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.gpg.sha256 \
 		   $(VSD_PUBLISH_HOST)/$(call GETVAR,msi_target_$(1)_directory); \
 		echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.gpg" \
 		> $(stampdir)/stamp-$(1)-upload; \
 	  else \
 		gpg --yes -o GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.sig -bu $(msi_signkey) \
 			GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi; \
 		scp GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi \
 			GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.sha256 \
 			GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.sig \
 			$(VSD_PUBLISH_HOST)/$(call GETVAR,msi_target_$(1)_directory); \
 		ssh `echo $(VSD_PUBLISH_HOST) | cut -d ":" -f 1` \
 			"cd `echo $(VSD_PUBLISH_HOST) | cut -d ":" -f 2`/$(call GETVAR,msi_target_$(1)_directory) && rm -f GnuPG-VS-Desktop.msi && \
 			ln -s GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi GnuPG-VS-Desktop.msi"; \
 			echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi" \
 				> $(stampdir)/stamp-$(1)-upload; \
 			echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi.sig" \
 			>> $(stampdir)/stamp-$(1)-upload; \
 	  fi)
 
 .phony : $(1)
 $(1): installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1).msi
 
 .PHONY : $(1)-x86
 $(1)-x86: installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-$(1)-x86.msi
 	echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 	echo "XXXX FIXME: x86 Registration of GpgOL and GpgEX does not work! XXXX"
 	echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 
 
 .PHONY : $(1)-upload
 $(1)-upload: $(stampdir)/stamp-$(1)-upload $(stampdir)/stamp-dist-self
 	gpg --yes -o gnupg-vsd-$(VERSION).tar.bz2.sig -bau $(msi_signkey) \
 		../gpg4win-$(VERSION).tar.bz2
 	rsync -vP ../gpg4win-$(VERSION).tar.bz2 $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2
 	rsync -vP gnupg-vsd-$(VERSION).tar.bz2.sig $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2.sig
 	echo "Upload URLs:"
 	cat $(stampdir)/stamp-$(1)-upload
 	echo "Source links:"
 	echo "https://download.gnupg.com/files/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2"
 	echo "https://download.gnupg.com/files/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2.sig"
 
 $(1)-announce: gnupg-vsd/$(1)/announcement.txt
 	set -x
 	echo "-------- Announcement for $(1) ---------"
 	cat gnupg-vsd/$(1)/announcement.txt
 	echo "-----------------------------"
 	echo "Send to: $(call GETVAR,msi_target_$(1)_contact)"
 	echo "Ticket: $(call GETVAR,msi_target_$(1)_ticket)"
 	echo "-----------------------------"
 
 endef
 
 # Insert the template for each source package.
 $(foreach spkg, $(gpg4win_spkgs), $(eval $(call SPKG_template,$(spkg))))
 
 # Insert the template for each gpgEx architecture package.
 $(foreach expkg, $(gpg4win_expkgs), $(eval $(call EXPKG_template,$(expkg))))
 
 # Insert the template for each make only source package.
 $(foreach mpkg, $(gpg4win_mpkgs), $(eval $(call MPKG_template,$(mpkg))))
 
 # Insert the template for each binary package.
 $(foreach bpkg, $(gpg4win_bpkgs), $(eval $(call BPKG_template,$(bpkg))))
 
 # Insert the template for each internal package.
 $(foreach ipkg, $(gpg4win_ipkgs), $(eval $(call IPKG_template,$(ipkg))))
 
 # Insert the template for the README and HOWTO files.
 $(foreach rll, $(gpg4win_readme_ll), $(eval $(call README_template,$(rll))))
 
 # Insert the template for KDE packages.
 $(foreach kdepkg, $(gpg4win_kdepkgs), $(eval $(call KDEPKG_template,$(kdepkg))))
 
 # Insert the template for qt packages.
 $(foreach qtpkg, $(gpg4win_qtpkgs), $(eval $(call QTPKG_template,$(qtpkg))))
 
 $(foreach rll, $(gpg4win_howto_smime_ll), \
                $(eval $(call HOWTO_template,SMIME,$(rll))))
 
 $(stampdir)/stamp-final: $(stampdir)/stamp-directories
 $(stampdir)/stamp-final: $(addprefix $(stampdir)/stamp-final-,$(gpg4win_build_list)) \
 	$(addprefix $(stampdir)/stamp-final-ex-,$(gpg4win_build_ex_list)) \
 	$(stampdir)/stamp-additional-signedfiles
 	touch $(stampdir)/stamp-final
 
 $(bdir)/versioninfo.txt: $(stampdir)/stamp-final
 	touch $(bdir)/versioninfo.txt
 
 all-gpg4win: $(stampdir)/stamp-final
 
 # Just to check if we catched all stamps.
 clean-stamps:
 	$(RM) -fR $(stampdir)
 
 clean-gpg4win:
 	$(RM) -fR $(root) $(stampdir)
 
 $(stampdir)/stamp-versions-all-signed: $(stampdir)/stamp-directories \
 	$(addsuffix /VERSION.sig, $(addprefix gnupg-vsd/,$(msi_targets)))
 	touch $(stampdir)/stamp-versions-all-signed
 
 $(stampdir)/stamp-all-upload: $(stampdir)/stamp-dist-self \
 	$(addsuffix -upload, $(addprefix $(stampdir)/stamp-,$(msi_targets)))
 	echo "Upload URLs:"
 	cat $(addsuffix -upload, $(addprefix $(stampdir)/stamp-,$(msi_targets)))
 	gpg --yes -o gnupg-vsd-$(VERSION).tar.bz2.sig -bau $(msi_signkey) \
 		../gpg4win-$(VERSION).tar.bz2
 	rsync -vP ../gpg4win-$(VERSION).tar.bz2 $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2
 	rsync -vP gnupg-vsd-$(VERSION).tar.bz2.sig $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2.sig
 	echo "Source links:"
 	echo "https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.bz2"
 	echo "https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.bz2.sig"
 	touch $(stampdir)/stamps-all-upload
 
 msi: $(stampdir)/stamp-versions-all-signed \
 	$(addsuffix .msi,$(addprefix installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-,$(msi_targets)))
 	if [ -z "$(addsuffix .msi,$(addprefix installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-,$(msi_targets)))" ]; then \
 		echo "No MSI targets configured."; \
 	else \
 		echo "######################"; \
 		echo "# MSI Packaging done #"; \
 		echo "######################"; \
 	fi
 
 $(stampdir)/stamp-msi-all-signed: gnupg-vsd/sign.mk \
 	$(addsuffix .msi,$(addprefix signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-,$(msi_targets)))
 	touch $(stampdir)/stamp-msi-all-signed
 
 
 msi-signed: $(stampdir)/stamp-msi-all-signed
 msi-upload: $(stampdir)/stamp-all-upload $(stampdir)/stamp-dist-self
 
+installers: \
+	$(addsuffix .msi,$(addprefix installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-,$(msi_targets)))
+
 .PHONY : all-gpg4win clean-stamps clean-gpg4win msi msi-signed msi-upload
 
 # Insert the template for msi packages.
 $(foreach msipkg, $(msi_targets), $(eval $(call MSI_template,$(msipkg))))
 
 # @emacs_local_vars_begin@
 # @emacs_local_vars_read_only@
 # @emacs_local_vars_end@