[Gpg4win-commits] [git] Gpg4win - branch, gpgex64, created. gpg4win-2.1.1-4-gbe61223

by Andre Heinecke cvs at cvs.gnupg.org
Fri Jun 14 17:34:24 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 for Windows".

The branch, gpgex64 has been created
        at  be612237752d44d30301bfde1ada2bc1d88b2ad0 (commit)

- Log -----------------------------------------------------------------
commit be612237752d44d30301bfde1ada2bc1d88b2ad0
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Fri Jun 14 15:11:29 2013 +0000

    Add build-w32-w64 convenience option
    
        By default this option checks for amd64-mingw32msvc and
        calls configure with settings to additionally build gpgex
        for this host.
    
        * autogen.sh: Add option to build gpgEx for an x64 host

diff --git a/autogen.sh b/autogen.sh
index 45de064..58a4082 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -65,6 +65,7 @@ fi
 # Begin list of optional variables sourced from ~/.gnupg-autogen.rc
 w32_toolprefixes=
 w32_extraoptions=
+w64_toolprefixes=
 
 if [ -f "$HOME/.gnupg-autogen.rc" ]; then
     echo "sourcing extra definitions from $HOME/.gnupg-autogen.rc"
@@ -80,6 +81,11 @@ case "$1" in
         myhost="w32"
         shift
         ;;
+    --build-w32-w64)
+        myhost="w32"
+        myhostsub="w64"
+        shift
+        ;;
     --build*)
         echo "**Error**: invalid build option $1" >&2
         shift
@@ -102,6 +108,13 @@ if [ "$myhost" = "w32" ]; then
     build=`$tsdir/config.guess`
 
     case $myhostsub in
+        w64)
+          [ -z "$w32root" ] && w32root="$HOME/w32root"
+          toolprefixes="$w32_toolprefixes i686-w64-mingw32 i586-mingw32msvc"
+          toolprefixes="$toolprefixes i386-mingw32msvc mingw32"
+          extraoptions="$w32_extraoptions"
+          extratoolprefixes="$w64_toolprefixes amd64-mingw32msvc"
+          ;;
         *)
           [ -z "$w32root" ] && w32root="$HOME/w32root"
           toolprefixes="$w32_toolprefixes i686-w64-mingw32 i586-mingw32msvc"
@@ -121,6 +134,15 @@ if [ "$myhost" = "w32" ]; then
         fi
     done
 
+    w64_crossbindir=
+    for extra_host in $extratoolprefixes; do
+        if ${extra_host}-gcc --version >/dev/null 2>&1 ; then
+            w64_crossbindir=/usr/${extra_host}/bin
+            extraoptions="$extraoptions --with-additional-gpgex-host=${extra_host} "
+            break;
+        fi
+    done
+
     if [ -z "$crossbindir" ]; then
         echo "Cross compiler kit not installed" >&2
         echo "Under Debian GNU/Linux, you may install it using" >&2
@@ -129,6 +151,14 @@ if [ "$myhost" = "w32" ]; then
         exit 1
     fi
 
+    if [ "$myhostsub" = "w64" -a -z "$w64_crossbindir" ]; then
+        echo "Cross compiler for x64 architecture not installed" >&2
+        echo "Under Debian GNU/Linux, you may install it using" >&2
+        echo "  apt-get install mingw-w64" >&2
+        echo "Stop." >&2
+        exit 1
+    fi
+
     if [ -f "$tsdir/config.log" ]; then
         if ! head $tsdir/config.log | grep "$host" >/dev/null; then
             echo "Pease run a 'make distclean' first" >&2

commit ef1021c97aa827c4cd094652d85be026117af664
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Fri Jun 14 15:04:37 2013 +0000

    Mark gpgEx dependencies as SPGKEX packages
    
        This enables the new additional host logic for those
        packages.
    
        * configure.ac: Switch iconv / gettext to source packages and
        mark them as SPKGEX packages. Mark gpgEx dependencies as such.
        * packages/packages.current: Update libiconv and gettext and
        switch to source tarballs.
        * src/Makefile.am: Add iconv / gettext as source packages.
        Add gpgEx depdencies as gpg4win_expkgs
    
    --
        gettext-tools are still resisting compilation. For now I've
        manually stepped in the build process to just build gettext-runtime.
        libiconv and w32-pth work as intended in the new extra architecture
        logic.

diff --git a/configure.ac b/configure.ac
index c5b7f0e..5bbca35 100644
--- a/configure.ac
+++ b/configure.ac
@@ -341,8 +341,6 @@ AC_CHECK_PROGS(WGET, wget)
 # Packages.
 gpg4win_dup_sources=""
 
-GPG4WIN_BPKG_GNU([libiconv])
-GPG4WIN_BPKG_GNU([gettext], [libiconv])
 
 GPG4WIN_SPKG([zlib])
 GPG4WIN_BPKG_GNUWIN32([bsfilter])
@@ -365,11 +363,8 @@ GPG4WIN_SPKG([enchant], [pkgconfig glib])
 
 GPG4WIN_SPKG([bzip2])
 GPG4WIN_SPKG([adns])
-GPG4WIN_SPKG([libgpg-error], [libiconv gettext])
 GPG4WIN_SPKG([libgcrypt], [libgpg-error])
 GPG4WIN_SPKG([libksba], [libgpg-error])
-GPG4WIN_SPKG([w32pth])
-GPG4WIN_SPKG([libassuan], [libgpg-error w32pth])
 GPG4WIN_SPKG([dirmngr], [libgpg-error libgcrypt libassuan libksba w32pth])
 GPG4WIN_SPKG([pinentry], [libiconv gtk+])
 GPG4WIN_SPKG([gpgme], [libgpg-error gnupg2 glib])
@@ -378,7 +373,6 @@ GPG4WIN_SPKG([gnupg2], [libiconv libgcrypt libksba libassuan libgpg-error dnl
                         w32pth zlib bzip2 adns pinentry])
 GPG4WIN_SPKG([pthreads-w32])
 GPG4WIN_SPKG([gpgol], [gpgme libassuan])
-GPG4WIN_SPKG([gpgex], [libassuan])
 GPG4WIN_SPKG([scute], [libgpg-error libassuan])
 GPG4WIN_SPKG([paperkey])
 GPG4WIN_SPKG([gpa], [libiconv gettext zlib gtk+ libpng glib gpgme])
@@ -393,6 +387,15 @@ GPG4WIN_SPKG([claws-mail], [libiconv gettext zlib gtk+ libpng enchant glib dnl
                             gpgme pthreads-w32 crypt regex libetpan gnutls dnl
                             libxml2])
 GPG4WIN_SPKG([gtkhtml2_viewer], [curl claws-mail libxml2])
+
+# Packages needed for gpgex
+GPG4WIN_SPKGEX([w32pth])
+GPG4WIN_SPKGEX([libiconv])
+GPG4WIN_SPKGEX([gettext], [libiconv])
+GPG4WIN_SPKGEX([libgpg-error], [libiconv gettext])
+GPG4WIN_SPKGEX([libassuan], [libgpg-error w32pth])
+GPG4WIN_SPKGEX([gpgex], [libassuan])
+
 GPG4WIN_IPKG([compendium])
 
 # Qt related stuff.
diff --git a/packages/packages.current b/packages/packages.current
index d14e380..5baff1a 100644
--- a/packages/packages.current
+++ b/packages/packages.current
@@ -17,17 +17,13 @@
 #
 server ftp://ftp.cs.tu-berlin.de/pub/gnu
 
-# checked: 2012-03-28 wk - No newer W32 binaries available
-file gettext/gettext-runtime-0.13.1.bin.woe32.zip
-chk  8cd55585429b5d696ac3745e065f8613de26f19c
-file gettext/gettext-0.13.1.tar.gz
-chk  fa46cb397cf6768f5ff4fdf1854514a9ced5b02b
-
-# checked: 2012-03-28 wk - No newer W32 binaries available
-file libiconv/libiconv-1.9.1.bin.woe32.zip
-chk  b57f5e8234975ec3cde340e101886135eb532329
-file libiconv/libiconv-1.9.1.tar.gz
-chk  f130c93fdf20903ca21bace8b8822f46468c9d65
+# checked: 2013-06-14 ah - Switched to latest release
+file gettext/gettext-0.18.2.1.tar.gz
+chk  86066950cac2fcc49cc7bd23f5ea16bed522b410
+
+# checked: 2013-06-28 ah - Latest release
+file libiconv/libiconv-1.14.tar.gz
+chk  be7d67e50d72ff067b2c0291311bc283add36965
 
 #
 # zlib
diff --git a/src/Makefile.am b/src/Makefile.am
index 1d4e00e..440e0cd 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -104,11 +104,25 @@ gpg4win_spkgs = glib libffi gdk-pixbuf gtk+ \
 		gpa libgsasl libtasn1 opencdk gnutls curl libxml2 \
                 libetpan claws-mail gtkhtml2_viewer \
 		vcalendar rssyl gnupg2 pinentry libassuan libksba libgcrypt \
-		adns dirmngr w32pth scute paperkey regex
+		adns dirmngr w32pth scute paperkey regex libiconv gettext
+
+# Supported source packages to build in an additional architecture
+gpg4win_expkgs = libiconv gettext w32pth
 
 # Extra options to configure for individual packages.
 # We can use $(idir) here for the installation prefix.
 
+gpg4win_pkg_libiconv_ex_configure = \
+	--enable-shared=no --enable-static=yes
+
+# Optimization flags for gettext are neccessary because of
+# http://savannah.gnu.org/bugs/?36443
+# Still some issues with gettext-tools
+gpg4win_pkg_gettext_configure = \
+  --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \
+  CPPFLAGS="-I$(idir)/include -O2" CFLAGS=-O2 \
+  LDFLAGS=-L$(idir)/lib CCC=$(host)-g++
+
 gpg4win_pkg_glib_configure = \
   --disable-modular-tests \
   --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \
@@ -353,26 +367,26 @@ gpg4win_pkg_zlib_make_args_inst = -fwin32/Makefile.gcc install \
 	LIBRARY_PATH=$$$${pkgidir}/lib SHARED_MODE=1 IMPLIB=libz.dll.a
 
 # Supported binary packages.
-gpg4win_bpkgs = libiconv gettext pkgconfig pango expat freetype fontconfig \
+gpg4win_bpkgs = pkgconfig pango expat freetype fontconfig \
                 cairo atk qt dbus oxygen-icons kleopatra bsfilter
 
 # libiconv needs some special magic to generate a usable import
 # library.
-define gpg4win_pkg_libiconv_post_install
-(cp $(srcdir)/libiconv.def $$$${pkgidir}/lib;		\
-cd $$$${pkgidir}/lib;					\
-$(DLLTOOL) --output-lib libiconv.dll.a --def libiconv.def)
-endef
+# define gpg4win_pkg_libiconv_post_install
+# (cp $(srcdir)/libiconv.def $$$${pkgidir}/lib;		\
+# cd $$$${pkgidir}/lib;					\
+# $(DLLTOOL) --output-lib libiconv.dll.a --def libiconv.def)
+# endef
 
 # libiconv needs some special magic to generate a usable import
 # library.  Note that we include some internal symbols that are not
 # actually part of the DLL.  They are needed by the AM_GNU_GETTEXT
 # configure test, but not used otherwise.
-define gpg4win_pkg_gettext_post_install
-(cp $(srcdir)/libintl.def $$$${pkgidir}/lib;		\
-cd $$$${pkgidir}/lib;					\
-$(DLLTOOL) --output-lib libintl.dll.a --def libintl.def)
-endef
+# define gpg4win_pkg_gettext_post_install
+# (cp $(srcdir)/libintl.def $$$${pkgidir}/lib;		\
+# cd $$$${pkgidir}/lib;					\
+# $(DLLTOOL) --output-lib libintl.dll.a --def libintl.def)
+# endef
 
 
 # Zlib needs some special magic to generate a libtool file.
@@ -404,9 +418,12 @@ endef
 
 # We need to fix the prefix in the various packages using pkgconfig,
 # or we can't substitute it properly in our pkg-config wrapper.
+# glib also installs an empty charset.alias for mingw which creates
+# a stow conflict with the one from iconv.
 define gpg4win_pkg_glib_post_install
  (cd $$$${pkgidir};							\
- perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`)
+ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`; \
+ rm $$$${pkgidir}/lib/charset.alias)
 endef
 
 define gpg4win_pkg_libffi_post_install
@@ -485,11 +502,11 @@ define gpg4win_pkg_kleopatra_post_install
 endef
 
 
-define gpg4win_pkg_libiconv_post_install
-(cp $(srcdir)/libiconv.def $$$${pkgidir}/lib;		\
-cd $$$${pkgidir}/lib;					\
-$(DLLTOOL) --output-lib libiconv.dll.a --def libiconv.def)
-endef
+#define gpg4win_pkg_libiconv_post_install
+#(cp $(srcdir)/libiconv.def $$$${pkgidir}/lib;		\
+#cd $$$${pkgidir}/lib;					\
+#$(DLLTOOL) --output-lib libiconv.dll.a --def libiconv.def)
+#endef
 
 # Qt is missing the pkgconfig files.
 define gpg4win_pkg_qt_post_install

commit 5a3543a18b34c1a1b4135cd6da444402dd61a1d4
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Fri Jun 14 15:00:13 2013 +0000

    Add addititional-gpgex-host feature
    
        You can now use --with-additional-gpgex-host=HOST to declare
        an additional host triplet for which gpgEx and it's dependencies
        should be built.
    
        * configure.ac: Add additional-gpgex-host option

diff --git a/configure.ac b/configure.ac
index 64a7371..c5b7f0e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -190,6 +190,24 @@ AC_ARG_ENABLE(manuals,
                     build_manuals=yes)
 AM_CONDITIONAL(BUILD_MANUALS, test "$build_manuals" = yes)
 
+# Additionaly enable building gpgex for another host
+AC_ARG_WITH([additional-gpgex-host],
+    AC_HELP_STRING([--with-additional-gpgex-host=HOST],
+                   [Additionaly build gpgex for this host]),
+                   [if test "$withval" = yes; then
+                      AC_MSG_FAILURE(
+                          [--with-additional-gpgex-host was given,
+                           but no host specified])
+                    else
+                      gpgex_host=$withval
+                    fi
+                   ],
+                    gpgex_host=no)
+
+if test "$gpgex_host" != no; then
+    GPGEX_ADD_HOST="$gpgex_host"
+fi
+AC_SUBST(GPGEX_ADD_HOST)
 
 AC_ARG_ENABLE(fast-makensis,
     AC_HELP_STRING([--enable-fast-makensis],
@@ -228,6 +246,10 @@ AC_CHECK_PROGS(GITLOG_TO_CHANGELOG, gitlog-to-changelog,
 AC_CHECK_PROGS(BUILD_CC, gcc cc)
 AC_PROG_INSTALL
 
+if test -n "$GPGEX_ADD_HOST"; then
+    AC_CHECK_TOOLS(STRIP_EX, ${GPGEX_ADD_HOST}-strip)
+fi
+
 missing_tools=
 for i in DLLTOOL MAKE UNZIP TAR MKDIR CP RM STOW MAKENSIS ZCAT TEXI2DVI \
          DVIPDF CONVERT SHA1SUM MSGFMT BUILD_CC; do
@@ -249,6 +271,7 @@ AC_ARG_WITH([libgcc_s_sjlj-1-dll],
            AC_HELP_STRING([--with-libgcc_s_sjlj-1-dll=FILE],
                           [use the libgcc_s_sjlj-1 DLL]),
            [libgcc_dll=$withval])
+
 if test "$libgcc_dll" = "no"; then
   file="/usr/lib/gcc/$host/$gcc_major_minor/libgcc_s_sjlj-1.dll"
   if test -r "$file"; then
@@ -439,4 +462,5 @@ echo "
 
         Revision: ${GIT_REVISION}  (${GIT_REVISION_DEC})
         Platform: $host
+        Additional gpgEx platform: ${GPGEX_ADD_HOST}
 "

commit 6eee0df46b44c0f2c63b21debaf963ceff0ddcdf
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Fri Jun 14 14:50:03 2013 +0000

    Add macros for packages in extra architecture
    
        This is a requirement to build gpgEx both for x86 and
        amd64 architectures.
    
        * m4/gpg4win.m4 (GPG4WIN_CHECK_EXDEPS, GPG4WIN_SPKGEX): New.
        * src/gpg4win.mk.in (SETVARS_EX, STRIP_EX, GETDEPS_EX): New
        helper macros for building in another architecture.
        * src/gpg4win.mk.in (EXPKG_template): New template to build
        for an additional host as defined by GPGEX_ADD_HOST
    
    --
        If we build for another architecture we now use an additional
        install-ex directory in which we install and stow the packages
        needed in a different architecture. The GPG4WIN_SPKGEX macro
        can be used to mark down packages that should be built in both
        the host architecture and in an additional architecture defined
        by GPGEX_ADD_HOST.

diff --git a/m4/gpg4win.m4 b/m4/gpg4win.m4
index ac2de93..eeb13c4 100644
--- a/m4/gpg4win.m4
+++ b/m4/gpg4win.m4
@@ -167,6 +167,40 @@ AC_DEFUN([GPG4WIN_FIND],
         [$6])
 ])
 
+AC_DEFUN([GPG4WIN_CHECK_EXDEPS],
+[
+  AC_REQUIRE([GPG4WIN_CHECK_DEPS])
+
+  AC_MSG_CHECKING([additional host build list])
+
+  gpg4win_build_ex_list=`echo $_gpg4win_ex_deps | tsort`
+  # Remove newlines.
+  gpg4win_build_ex_list=`echo $gpg4win_build_ex_list`
+  AC_MSG_RESULT($gpg4win_build_ex_list)
+  AC_SUBST(gpg4win_build_ex_list)
+
+  # Check each dependency.
+  _gpg4win_not_found=
+  _gpg4win_d=
+  _gpg4win_p=
+  for _gpg4win_p in $_gpg4win_ex_deps; do
+    AS_IF([test -z $_gpg4win_d], [_gpg4win_d=$_gpg4win_p],
+          [
+            _gpg4win_found=
+            for _gpg4win_i in $_gpg4win_pkgs; do
+              AS_IF([test $_gpg4win_d = $_gpg4win_i],
+                    _gpg4win_found=yes
+                    break)
+            done
+            AS_IF([test -z $_gpg4win_found],
+                  AC_MSG_WARN(could not find ex variant of package $_gpg4win_d required by package $_gpg4win_p)
+                  _gpg4win_not_found=yes)
+            _gpg4win_d=
+          ])
+  done
+  AS_IF([test ! -z "$_gpg4win_not_found"],
+        AC_MSG_ERROR([could not find some required packages]))
+])
 
 AC_DEFUN([GPG4WIN_CHECK_DEPS],
 [
@@ -203,7 +237,7 @@ AC_DEFUN([GPG4WIN_CHECK_DEPS],
 
 AC_DEFUN([GPG4WIN_FINALIZE],
 [
-  AC_REQUIRE([GPG4WIN_CHECK_DEPS])
+  AC_REQUIRE([GPG4WIN_CHECK_EXDEPS])
 
   _gpg4win_debug=no
   AC_ARG_ENABLE([debug],
@@ -296,6 +330,27 @@ AC_DEFUN([GPG4WIN_SPKG],
 ])
 
 
+# GPG4WIN_SPKGEX([PKG],[DEPENDS],[IF-FOUND],[IF-NOT-FOUND])
+# Set up the source package PKG to be additionally built
+# for the host provided as additional-gpgex-host
+AC_DEFUN([GPG4WIN_SPKGEX],
+[
+  GPG4WIN_SPKG([$1],[$2],[$3],[$4])
+
+  # gpg4win_pkg_PKGNAME_deps=DEPS
+  gpg4win_pkg_[]m4_translit([$1],[A-Z+-],[a-z__])[]_ex_deps="$2"
+  AC_SUBST(gpg4win_pkg_[]m4_translit([$1],[A-Z+-],[a-z__])[]_ex_deps)
+
+  gpg4win_ex_pkgs="$gpg4win_ex_pkgs $1"
+
+  GPG4WIN_DEFINE(HAVE_PKG_[]m4_translit([$1],[a-z+-],[A-Z__])_EX)
+  # Record dependencies.  Also enter every package as node.
+  _gpg4win_ex_deps="$_gpg4win_ex_deps $1 $1"
+  AS_IF([test ! -z "$2"],
+        for _gpg4win_i in $2; do
+          _gpg4win_ex_deps="$_gpg4win_ex_deps $_gpg4win_i $1"
+        done)
+])
 
 # GPG4WIN_BPKG_GNUWIN32([PKG],[DEPENDS],[IF-FOUND],[IF-NOT-FOUND])
 # Set up the gnuwin32 package PKG.
diff --git a/src/gpg4win.mk.in b/src/gpg4win.mk.in
index 6c60b56..6b89692 100644
--- a/src/gpg4win.mk.in
+++ b/src/gpg4win.mk.in
@@ -28,6 +28,7 @@ idir := $(root)/install
 ipdir := $(root)/install/pkgs
 tsdir := $(shell pwd)/${top_srcdir}
 pdir := $(shell pwd)/${top_srcdir}/patches
+ex_idir := $(root)/install-ex
 
 # We collect the names of all pkg files used.
 pkg_files =
@@ -40,6 +41,7 @@ stamps/stamp-directories:
 	$(MKDIR) $(bdir)
 	$(MKDIR) $(idir)
 	$(MKDIR) $(ipdir)
+	$(if $GPGEX_ADD_HOST, $(MKDIR) $(ex_idir))
 	touch $(bdir)/versioninfo.txt
 	touch stamps/stamp-directories
 
@@ -78,6 +80,27 @@ define SETVARS
 	export CONFIG_SITE="$(tsdir)/src/config.site"
 endef
 
+# Set variables for building in an additional architecture
+define SETVARS_EX
+	pkg="$(call GETVAR,gpg4win_pkg_$(1))";                              \
+	pkg_version="$(1)-$(call GETVAR,gpg4win_pkg_$(1)_version)";         \
+	pkgsdir="$(bdir)/$$$${pkg_version}-ex";                             \
+	pkgbdir="$(bdir)/$$$${pkg_version}-ex-build";                       \
+	pkgpdir="$(pdir)/$$$${pkg_version}-ex";                             \
+	pkgpbdir="$(pdir)/$(1)-ex";                                         \
+	pkgidir="$(ipdir)/$$$${pkg_version}-ex";                            \
+	pkgidir_dev="$(ipdir)/$$$${pkg_version_dev}";                       \
+	pkgcfg="$(call GETVAR,gpg4win_pkg_$(1)_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)"; \
+	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
+
 # Support macro.  Unpack the archive $(1).
 define DEFLATE_macro
 	case "$(1)" in			\
@@ -104,10 +127,108 @@ define STRIP_macro
 	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 stamps/stamp-final-, $(call GETVAR,gpg4win_pkg_$(1)_deps))
 endef
 
+define GETDEPS_EX
+  $(addprefix stamps/stamp-final-ex-, $(call GETVAR,gpg4win_pkg_$(1)_deps))
+endef
+
+# Template for source packages to build for an additional host
+
+define EXPKG_template_
+
+pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
+
+stamps/stamp-$(1)-ex-00-unpack: stamps/stamp-directories $(call GETDEPS_EX,$(1))
+	(cd $(bdir);					\
+	 $(call SETVARS_EX,$(1));				\
+	 $(call DEFLATE_macro,$$$${pkg}))
+	touch stamps/stamp-$(1)-ex-00-unpack
+
+stamps/stamp-$(1)-ex-01-patch: stamps/stamp-$(1)-ex-00-unpack
+	(shopt -s nullglob;				\
+	 $(call SETVARS_EX,$(1));				\
+	 for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do  \
+	   (cd "$$$${pkgsdir}"; "$$$${pfile}")		\
+	 done)
+	touch stamps/stamp-$(1)-ex-01-patch
+
+stamps/stamp-$(1)-ex-02-configure: stamps/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 $$$${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 stamps/stamp-$(1)-ex-02-configure
+
+stamps/stamp-$(1)-ex-03-make: stamps/stamp-$(1)-ex-02-configure
+	($(call SETVARS_EX,$(1));				\
+	  cd "$$$${pkgbdir}";				\
+	  $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs} || \
+	  $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs} || \
+	  $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs})
+	touch stamps/stamp-$(1)-ex-03-make
+
+# Note that post_install must come last because it may be empty and
+# "; ;" is a syntax error.
+stamps/stamp-$(1)-ex-04-install: stamps/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 stamps/stamp-$(1)-ex-04-install
+
+stamps/stamp-$(1)-ex-05-stow: stamps/stamp-$(1)-ex-04-install
+	($(call SETVARS_EX,$(1));				\
+	 cd $(ipdir);					\
+	 $(STOW) "$$$${pkg_version}")
+	touch stamps/stamp-$(1)-ex-05-stow
+
+stamps/stamp-final-ex-$(1): stamps/stamp-$(1)-ex-05-stow
+	touch stamps/stamp-final-ex-$(1)
+
+.PHONY : clean-ex-$(1)
+clean-ex-$(1):
+	($(call SETVARS_EX,$(1));				\
+	 (cd $(ipdir) &&				\
+	  ($(STOW) -D "$$$${pkg_version}";		\
+	   rm -fR "$$$${pkg_version}"));		\
+	 rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
+	rm -f stamps/stamp-final-ex-$(1) stamps/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.
 
@@ -352,6 +473,9 @@ 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))))
 
@@ -368,7 +492,8 @@ $(foreach rll, $(gpg4win_howto_smime_ll), \
                $(eval $(call HOWTO_template,SMIME,$(rll))))
 
 stamps/stamp-final: stamps/stamp-directories
-stamps/stamp-final: $(addprefix stamps/stamp-final-,$(gpg4win_build_list))
+stamps/stamp-final: $(addprefix stamps/stamp-final-,$(gpg4win_build_list)) \
+	$(addprefix stamps/stamp-final-ex-,$(gpg4win_build_ex_list))
 	touch stamps/stamp-final
 
 $(bdir)/versioninfo.txt: stamps/stamp-final

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


hooks/post-receive
-- 
GnuPG for Windows
http://git.gnupg.org



More information about the Gpg4win-commits mailing list