aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2014-08-25 17:36:19 +0800
committerMilan Crha <mcrha@redhat.com>2014-08-25 17:36:19 +0800
commit396e5e82c16d3d81e1e575e02fe05a77149ed0ea (patch)
tree655b4918d46b56a1a638f6c4d4476c727530ea17
parent9a8604400946bf0fe5d1fa227fa2524e9baf4fb0 (diff)
downloadgsoc2013-evolution-396e5e82c16d3d81e1e575e02fe05a77149ed0ea.tar
gsoc2013-evolution-396e5e82c16d3d81e1e575e02fe05a77149ed0ea.tar.gz
gsoc2013-evolution-396e5e82c16d3d81e1e575e02fe05a77149ed0ea.tar.bz2
gsoc2013-evolution-396e5e82c16d3d81e1e575e02fe05a77149ed0ea.tar.lz
gsoc2013-evolution-396e5e82c16d3d81e1e575e02fe05a77149ed0ea.tar.xz
gsoc2013-evolution-396e5e82c16d3d81e1e575e02fe05a77149ed0ea.tar.zst
gsoc2013-evolution-396e5e82c16d3d81e1e575e02fe05a77149ed0ea.zip
Add Win32 build scripts into sources
See win32/readme.txt for more information.
-rw-r--r--win32/.gitignore2
-rw-r--r--win32/Makefile736
-rwxr-xr-xwin32/build130
-rwxr-xr-xwin32/get-src83
-rw-r--r--win32/patches/atk.patch11
-rw-r--r--win32/patches/bison.patch18
-rw-r--r--win32/patches/dbus.patch202
-rw-r--r--win32/patches/fontconfig.patch35
-rw-r--r--win32/patches/freetype.patch18
-rw-r--r--win32/patches/gcr.patch933
-rw-r--r--win32/patches/gettext.patch97
-rw-r--r--win32/patches/gnutls.patch21
-rw-r--r--win32/patches/gtk-doc.m488
-rw-r--r--win32/patches/gtk-doc.make315
-rw-r--r--win32/patches/gtk.patch116
-rw-r--r--win32/patches/harfbuzz.patch25
-rw-r--r--win32/patches/jasper.patch12
-rw-r--r--win32/patches/libgdata.patch158
-rw-r--r--win32/patches/libgpg-error.patch12
-rw-r--r--win32/patches/libgweather.patch191
-rw-r--r--win32/patches/libical.patch169
-rw-r--r--win32/patches/liboauth.patch56
-rw-r--r--win32/patches/libpng.patch86
-rw-r--r--win32/patches/libsecret.patch157
-rw-r--r--win32/patches/libtasn1.patch42
-rw-r--r--win32/patches/libxslt.patch24
-rw-r--r--win32/patches/ncurses.patch15
-rw-r--r--win32/patches/nss.patch464
-rw-r--r--win32/patches/openldap.patch82
-rw-r--r--win32/patches/p11-kit.patch60
-rw-r--r--win32/patches/regex.patch48
-rw-r--r--win32/patches/rss.patch101
-rw-r--r--win32/patches/tzdata.patch42
-rw-r--r--win32/patches/webkitgtk.patch727
-rw-r--r--win32/patches/yelp.m4194
-rw-r--r--win32/readme.txt53
-rw-r--r--win32/session-local.conf.in4
-rwxr-xr-xwin32/setup-env76
38 files changed, 5603 insertions, 0 deletions
diff --git a/win32/.gitignore b/win32/.gitignore
new file mode 100644
index 0000000000..4448af21d0
--- /dev/null
+++ b/win32/.gitignore
@@ -0,0 +1,2 @@
+/src
+/downloads
diff --git a/win32/Makefile b/win32/Makefile
new file mode 100644
index 0000000000..0d325b8f1a
--- /dev/null
+++ b/win32/Makefile
@@ -0,0 +1,736 @@
+all: help
+
+help:
+ @echo Creates evolution from sources
+ @echo usual call order is:
+ @echo " - dependencies - builds dependencies, including evolution-data-server"
+ @echo " - evolution - builds evolution itself"
+ @echo " - addons - builds 3rd-party connectors, like ews and rss"
+
+env:
+ @if test "$(BUILD_ROOT_DEPS)" = "" -o "$(BUILD_ROOT_EVO)" = "" ; then \
+ echo "Run 'source setup-env' first" >&2; \
+ exit 1; \
+ fi
+ @if test ! -d src ; then \
+ mkdir src; \
+ fi
+ @if test ! -d downloads ; then \
+ mkdir downloads; \
+ fi
+
+# use `make V=1` to get verbose build
+VERBOSE="$(V)"
+DISABLE_GTK_DOC=--disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf
+
+# Shortcuts
+deps: dependencies
+eds: evolution-data-server
+evo: evolution
+ews: evolution-ews
+rss: evolution-rss
+
+dependencies: core-tools zlib fake-gtk-doc gnome-common dbus glib gtk librsvg2 icon-themes gsettings-desktop-schemas shared-mime-info libsoup nss liboauth libgdata libgweather openldap libical iso-codes enchant gtkspell gcr webkitgtk gtkhtml
+addons: evolution-ews evolution-rss
+evolution-data-server: dependencies evolution-data-server$(EVO_BUILD_SUFFIX)
+evolution: evolution$(EVO_BUILD_SUFFIX)
+evolution-ews: evolution-ews$(EVO_BUILD_SUFFIX)
+evolution-rss: evolution-rss$(EVO_BUILD_SUFFIX)
+
+
+# !!! TODO !!! FixMe !!! TODO !!!
+evolution-data-server-stable: evolution-data-server-master
+evolution-stable: evolution-master
+evolution-ews-stable: evolution-ews-master
+evolution-rss-stable: evolution-rss-master
+
+evolution-data-server-master: env dependencies $(BUILD_ROOT_EVO)/lib/pkgconfig/libedataserver-1.2.pc
+
+$(BUILD_ROOT_EVO)/lib/pkgconfig/libedataserver-1.2.pc:
+ @if test ! -d "../../evolution-data-server" ; then \
+ cd ../.. && \
+ git clone git://git.gnome.org/evolution-data-server; \
+ fi
+ @if test ! -f "../../evolution-data-server/gtk-doc.make" ; then \
+ cp "patches/gtk-doc.make" "../../evolution-data-server/"; \
+ fi
+ @./build acmmi "$(BUILD_ROOT_EVO)" ../../../evolution-data-server "" "--enable-weather --disable-goa --disable-uoa --disable-examples --without-libdb --with-openldap=$(BUILD_ROOT_DEPS) $(DISABLE_GTK_DOC)" $(VERBOSE)
+
+evolution-master: env evolution-data-server-master $(BUILD_ROOT_EVO)/lib/pkgconfig/evolution-shell-3.0.pc
+
+$(BUILD_ROOT_EVO)/lib/pkgconfig/evolution-shell-3.0.pc:
+ @if test ! -d "../../evolution" ; then \
+ cd ../.. && \
+ git clone git://git.gnome.org/evolution; \
+ fi
+ @if test ! -f "../../evolution/gtk-doc.make" ; then \
+ cp "patches/gtk-doc.make" "../../evolution/"; \
+ fi
+ @./build acmmi "$(BUILD_ROOT_EVO)" ../../../evolution "" "--enable-plugins=all --enable-weather --disable-canberra --disable-contact-maps --disable-goa --disable-libcryptui --disable-bogofilter --disable-spamassassin --disable-text-highlight --disable-pst-import --disable-gnome-desktop --without-clutter --without-help $(DISABLE_GTK_DOC)" $(VERBOSE)
+
+evolution-ews-master: env evolution-master $(BUILD_ROOT_EVO)/lib/evolution-data-server/libeews-1.2.dll.a
+
+$(BUILD_ROOT_EVO)/lib/evolution-data-server/libeews-1.2.dll.a:
+ @if test ! -d "../../evolution-ews" ; then \
+ cd ../.. && \
+ git clone git://git.gnome.org/evolution-ews; \
+ fi
+ @if test ! -f "../../evolution-ews/gtk-doc.make" ; then \
+ cp "patches/gtk-doc.make" "../../evolution-ews/"; \
+ fi
+ @./build acmmi "$(BUILD_ROOT_EVO)" ../../../evolution-ews "" "--with-internal-lzx" $(VERBOSE)
+ @mv $(BUILD_ROOT_EVO)/lib/bin/* $(BUILD_ROOT_EVO)/bin/
+
+evolution-rss-master: env evolution-master $(BUILD_ROOT_EVO)/share/glib-2.0/schemas/org.gnome.evolution.plugin.evolution-rss.gschema.xml
+
+$(BUILD_ROOT_EVO)/share/glib-2.0/schemas/org.gnome.evolution.plugin.evolution-rss.gschema.xml:
+ @if test ! -d "../../evolution-rss" ; then \
+ cd ../.. && \
+ git clone git://git.gnome.org/evolution-rss; \
+ fi
+ @if test ! -f "../../evolution-rss/gtk-doc.make" ; then \
+ cp "patches/gtk-doc.make" "../../evolution-rss/"; \
+ fi
+ @./build acmmi "$(BUILD_ROOT_EVO)" ../../../evolution-rss "rss.patch" "" $(VERBOSE)
+
+gcr: env gtk dbus $(BUILD_ROOT_DEPS)/lib/pkgconfig/gcr-3.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/gcr-3.pc:
+ @./get-src https://download.gnome.org/sources/gcr/3.10 gcr-3.10.1.tar.xz
+ @./build acmmi "$(BUILD_ROOT_DEPS)" gcr-3.10.1 "gcr.patch" "$(DISABLE_GTK_DOC)" $(VERBOSE)
+
+shared-mime-info: env $(BUILD_ROOT_DEPS)/share/pkgconfig/shared-mime-info.pc
+
+$(BUILD_ROOT_DEPS)/share/pkgconfig/shared-mime-info.pc:
+ @./get-src http://freedesktop.org/~hadess shared-mime-info-1.2.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" shared-mime-info-1.2 "" "" $(VERBOSE)
+
+glib: env zlib libxml2 libffi fake-gtk-doc $(BUILD_ROOT_DEPS)/lib/pkgconfig/glib-2.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/glib-2.0.pc:
+ @./get-src https://download.gnome.org/sources/glib/2.40 glib-2.40.0.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" glib-2.40.0 "" "--disable-static" $(VERBOSE)
+
+glib-networking: env glib gnutls $(BUILD_ROOT_DEPS)/lib/gio/modules/libgiognutls.la
+
+$(BUILD_ROOT_DEPS)/lib/gio/modules/libgiognutls.la:
+ @./get-src https://download.gnome.org/sources/glib-networking/2.40 glib-networking-2.40.1.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" glib-networking-2.40.1 "" "--without-ca-certificates" $(VERBOSE)
+
+libmspack: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/libmspack.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libmspack.pc:
+ @./get-src http://www.cabextract.org.uk/libmspack libmspack-0.4alpha.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libmspack-0.4alpha "" "" $(VERBOSE)
+
+libsoup: env glib-networking sqlite $(BUILD_ROOT_DEPS)/lib/pkgconfig/libsoup-2.4.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libsoup-2.4.pc:
+ @./get-src https://download.gnome.org/sources/libsoup/2.44 libsoup-2.44.2.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libsoup-2.44.2 "" "--disable-tls-check $(DISABLE_GTK_DOC)" $(VERBOSE)
+
+libical: env tzdata cmake $(BUILD_ROOT_DEPS)/lib/pkgconfig/libical.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libical.pc:
+ @./get-src "http://downloads.sourceforge.net/project/freeassociation/libical/libical-1.0/libical-1.0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffreeassociation%2Ffiles%2Flibical%2Flibical-1.0%2F&ts=1395872482&use_mirror=cznic" "0" libical-1.0.tar.gz
+ @cd src/libical-1.0 && \
+ cmake -G "MSYS Makefiles" -DCMAKE_PREFIX_PATH=$(BUILD_ROOT_DEPS) -DCMAKE_INSTALL_PREFIX=$(BUILD_ROOT_DEPS) .
+ @./build mmi "$(BUILD_ROOT_DEPS)" libical-1.0 "libical.patch" "" $(VERBOSE)
+
+libgweather: env libsoup tzdata $(BUILD_ROOT_DEPS)/lib/pkgconfig/gweather-3.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/gweather-3.0.pc:
+ @./get-src https://download.gnome.org/sources/libgweather/3.10 libgweather-3.10.2.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libgweather-3.10.2 "libgweather.patch" "--with-zoneinfo-dir=$(BUILD_ROOT_DEPS)/share/zoneinfo $(DISABLE_GTK_DOC)" $(VERBOSE)
+
+tzdata: env $(BUILD_ROOT_DEPS)/share/zoneinfo/zone.tab
+
+$(BUILD_ROOT_DEPS)/share/zoneinfo/zone.tab:
+ @./get-src https://www.iana.org/time-zones/repository/releases tzdata2014b.tar.gz "" src/tzdata2014b
+ @./get-src https://www.iana.org/time-zones/repository/releases tzcode2014b.tar.gz "" src/tzcode2014b
+ @cp src/tzcode2014b/* src/tzdata2014b/
+ @./build mmi "$(BUILD_ROOT_DEPS)" tzdata2014b "tzdata.patch" "TOPDIR=$(BUILD_ROOT_DEPS) CC=gcc" $(VERBOSE)
+
+iso-codes: env $(BUILD_ROOT_DEPS)/share/pkgconfig/iso-codes.pc
+
+$(BUILD_ROOT_DEPS)/share/pkgconfig/iso-codes.pc:
+ @./get-src https://pkg-isocodes.alioth.debian.org/downloads iso-codes-3.51.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" iso-codes-3.51 "" "" $(VERBOSE)
+
+enchant: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/enchant.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/enchant.pc:
+ @./get-src http://www.abisource.com/downloads/enchant/1.6.0 enchant-1.6.0.tar.gz
+ @export CFLAGS="$(CFLAGS) -DNO_STRICT=1" && ./build cmmi "$(BUILD_ROOT_DEPS)" enchant-1.6.0 "" "" $(VERBOSE)
+
+nss: env moztools $(BUILD_ROOT_DEPS)/lib/pkgconfig/nss.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/nss.pcAAA:
+ @./get-src ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_15_4_RTM/src nss-3.15.4-with-nspr-4.10.2.tar.gz "" "" "nss-3.15.4"
+ @cd src/nss-3.15.4/ && \
+ (patch -p1 -f <../../patches/nss.patch || echo a > /dev/null) && \
+ export BUILD_OPT=1 && \
+ export OS_TARGET=WINNT && \
+ export NS_USE_GCC=1 && \
+ export NSPR_USE_GCC=1 && \
+ export NSPR_PREFIX=`pwd`/dist/WINNT6.1_gcc_OPT.OBJ && \
+ ../../build cmmi "$(BUILD_ROOT_DEPS)" nspr "" "--host=i586-pc-mingw32 --prefix=$(BUILD_ROOT_DEPS) --with-dist-prefix=`pwd`/dist/WINNT6.1_gcc_OPT.OBJ --with-dist-includedir=`pwd`/dist/WINNT6.1_gcc_OPT.OBJ/include --enable-win32-target=WINNT" $(VERBOSE) "nspr" && \
+ mv $(BUILD_ROOT_DEPS)/lib/libnspr4.dll $(BUILD_ROOT_DEPS)/bin/ && \
+ mv $(BUILD_ROOT_DEPS)/lib/libplc4.dll $(BUILD_ROOT_DEPS)/bin/ && \
+ mv $(BUILD_ROOT_DEPS)/lib/libplds4.dll $(BUILD_ROOT_DEPS)/bin/ && \
+ ../../build m "$(BUILD_ROOT_DEPS)" nss "" "all" $(VERBOSE) "nss" && \
+ cp -rf dist/public/* "$(BUILD_ROOT_DEPS)/include/" && \
+ mv dist/WINNT6.1_gcc_OPT.OBJ/lib/*.dll "$(BUILD_ROOT_DEPS)/bin/" && \
+ mv dist/WINNT6.1_gcc_OPT.OBJ/lib/* "$(BUILD_ROOT_DEPS)/lib/" && \
+ echo "prefix=$(BUILD_ROOT_DEPS)" >$(BUILD_ROOT_DEPS)/lib/pkgconfig/nss.pc && \
+ cat nss/nss.pc >>$(BUILD_ROOT_DEPS)/lib/pkgconfig/nss.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/nss.pc:
+ @./get-src ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_15_4_RTM/src nss-3.15.4-with-nspr-4.10.2.tar.gz "" "" "nss-3.15.4"
+ @cd src/nss-3.15.4/ && \
+ (patch -p1 -f <../../patches/nss.patch || echo a > /dev/null) && \
+ export NSPR_USE_GCC=1 && \
+ export NSPR_PREFIX=`pwd`/dist/WIN954.0_gcc_OPT.OBJ && \
+ export BUILD_OPT=1 && \
+ export NS_USE_GCC=1 && \
+ ../../build cmmi "$(BUILD_ROOT_DEPS)" nspr "" "--prefix=$(BUILD_ROOT_DEPS) --enable-win32-target=WIN95 --enable-debug=no --with-dist-prefix=`pwd`/dist/WIN954.0_gcc_OPT.OBJ --with-dist-includedir=`pwd`/dist/WIN954.0_gcc_OPT.OBJ/include " "$(VERBOSE)" "nspr" "'-DRELEASE_OBJDIR_NAME=WIN954.0_gcc_OPT.OBJ'" && \
+ ../../build m "$(BUILD_ROOT_DEPS)" nss "" "all" "$(VERBOSE)" "nss" && \
+ cp -rf dist/public/* "$(BUILD_ROOT_DEPS)/include/" && \
+ mv $(BUILD_ROOT_DEPS)/lib/nspr4.dll $(BUILD_ROOT_DEPS)/bin/libnspr4.dll && \
+ mv $(BUILD_ROOT_DEPS)/lib/plc4.dll $(BUILD_ROOT_DEPS)/bin/libplc4.dll && \
+ mv $(BUILD_ROOT_DEPS)/lib/plds4.dll $(BUILD_ROOT_DEPS)/bin/libplds4.dll && \
+ mv dist/WIN954.0_gcc_OPT.OBJ/lib/*.dll "$(BUILD_ROOT_DEPS)/bin/" && \
+ mv dist/WIN954.0_gcc_OPT.OBJ/lib/* "$(BUILD_ROOT_DEPS)/lib/" && \
+ echo "prefix=$(BUILD_ROOT_DEPS)" >$(BUILD_ROOT_DEPS)/lib/pkgconfig/nss.pc && \
+ cat nss/nss.pc >>$(BUILD_ROOT_DEPS)/lib/pkgconfig/nss.pc
+
+moztools: env $(BUILD_ROOT_DEPS)/bin/nsinstall.exe
+
+$(BUILD_ROOT_DEPS)/bin/nsinstall.exe:
+ @./get-src http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32 moztools-static.zip "" "" "moztools"
+ @cp src/moztools/bin/nsinstall.exe $(BUILD_ROOT_DEPS)/bin/
+
+gnutls: env zlib gmp nettle p11-kit $(BUILD_ROOT_DEPS)/lib/pkgconfig/gnutls.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/gnutls.pc:
+ @./get-src ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2 gnutls-3.2.12.1.tar.xz "" "" "gnutls-3.2.12"
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gnutls-3.2.12 "@gnutls.patch" "--disable-guile --disable-doc --disable-libdane --disable-crywrap" $(VERBOSE)
+
+gnupg: env gnutls pth libassuan libksba $(BUILD_ROOT_DEPS)/bin/gpg2.exe
+
+$(BUILD_ROOT_DEPS)/bin/gpg2.exe:
+ @./get-src ftp://ftp.gnupg.org/gcrypt/gnupg gnupg-2.0.22.tar.bz2
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gnupg-2.0.22 "" "" $(VERBOSE)
+
+pth: env $(BUILD_ROOT_DEPS)/lib/libw32pth.dll.a
+
+$(BUILD_ROOT_DEPS)/lib/libw32pth.dll.a:
+ @./get-src ftp://ftp.g10code.com/g10code/w32pth w32pth-2.0.5.tar.bz2
+ @cd src/w32pth-2.0.5 && \
+ mv libw32pth.def libw32pth.def.orig && \
+ echo EXPORTS >libw32pth.def && \
+ cat libw32pth.def.orig | grep -v EXPORTS >>libw32pth.def
+ @./build cmmi "$(BUILD_ROOT_DEPS)" w32pth-2.0.5 "" "" $(VERBOSE)
+
+libassuan: env $(BUILD_ROOT_DEPS)/lib/libassuan.dll.a
+
+$(BUILD_ROOT_DEPS)/lib/libassuan.dll.a:
+ @./get-src ftp://ftp.gnupg.org/gcrypt/libassuan libassuan-2.1.1.tar.bz2
+ @cd src/libassuan-2.1.1/src && \
+ mv libassuan.def libassuan.def.orig && \
+ echo EXPORTS >libassuan.def && \
+ cat libassuan.def.orig | grep -v EXPORTS >>libassuan.def
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libassuan-2.1.1 "" "" $(VERBOSE)
+
+libksba: env $(BUILD_ROOT_DEPS)/lib/libksba.dll.a
+
+$(BUILD_ROOT_DEPS)/lib/libksba.dll.a:
+ @./get-src ftp://ftp.gnupg.org/gcrypt/libksba libksba-1.3.0.tar.bz2
+ @cd src/libksba-1.3.0/src && \
+ mv libksba.def libksba.def.orig && \
+ echo EXPORTS >libksba.def.def && \
+ cat libksba.def.orig | grep -v EXPORTS >>libksba.def
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libksba-1.3.0 "" "" $(VERBOSE)
+
+sqlite: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/sqlite3.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/sqlite3.pc:
+ @./get-src http://sqlite.org/2014 sqlite-autoconf-3080300.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" sqlite-autoconf-3080300 "" "" $(VERBOSE)
+
+nettle: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/nettle.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/nettle.pc:
+ @./get-src http://www.lysator.liu.se/~nisse/archive nettle-2.7.1.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" nettle-2.7.1 "" "" $(VERBOSE)
+
+gmp: env $(BUILD_ROOT_DEPS)/lib/libgmp.la
+
+$(BUILD_ROOT_DEPS)/lib/libgmp.la:
+ @./get-src https://gmplib.org/download/gmp gmp-4.3.2.tar.bz2
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gmp-4.3.2 "" "--disable-assembly --disable-fft --without-readline --enable-shared --disable-static --disable-rpath" $(VERBOSE)
+
+p11-kit: env libtasn1 $(BUILD_ROOT_DEPS)/lib/pkgconfig/p11-kit-1.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/p11-kit-1.pc:
+ @./get-src http://cgit.freedesktop.org/p11-glue/p11-kit/snapshot p11-kit-98292d6bbc.tar.gz
+ @./build acmmi "$(BUILD_ROOT_DEPS)" p11-kit-98292d6bbc "p11-kit.patch" "--disable-rpath --disable-trust-module --without-trust-paths" $(VERBOSE)
+
+trousers: env openssl $(BUILD_ROOT_DEPS)/lib/pkgconfig/trousers.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/trousers.pc:
+ @./get-src "http://downloads.sourceforge.net/project/trousers/trousers/0.3.11/trousers-0.3.11.2.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ftrousers%2Ffiles%2Ftrousers%2F0.3.11%2F&ts=1390773464&use_mirror=skylink" "0" trousers-0.3.11.2.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" trousers-0.3.11.2 "" "" $(VERBOSE)
+
+libunbound: env openssl ldns $(BUILD_ROOT_DEPS)/lib/pkgconfig/libunbound.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libunbound.pc:
+ @./get-src http://unbound.net/downloads unbound-1.4.21.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" unbound-1.4.21 "" "--with-ssl=$(BUILD_ROOT_DEPS) --with-libexpat=$(BUILD_ROOT_DEPS) --with-libunbound-only --disable-ecdsa" $(VERBOSE)
+
+ldns: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/ldns.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/ldns.pc:
+ @./get-src http://www.nlnetlabs.nl/downloads/ldns ldns-1.6.16.tar.gz
+ @mkdir src/ldns-1.6.16/lib
+ @mkdir src/ldns-1.6.16/lib/.libs
+ @./build cmmi "$(BUILD_ROOT_DEPS)" ldns-1.6.16 "" "--with-ssl=$(BUILD_ROOT_DEPS) " $(VERBOSE)
+
+liboauth: env nss $(BUILD_ROOT_DEPS)/lib/pkgconfig/oauth.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/oauth.pc:
+ @./get-src "http://downloads.sourceforge.net/project/liboauth/liboauth-1.0.1.tar.gz?r=http%3A%2F%2Fliboauth.sourceforge.net%2F&ts=1394912907&use_mirror=heanet" "0" liboauth-1.0.1.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" liboauth-1.0.1 "@liboauth.patch" "--enable-nss" $(VERBOSE)
+ @rm $(BUILD_ROOT_DEPS)/lib/liboauth.la
+
+curl: env nss openldap $(BUILD_ROOT_DEPS)/lib/pkgconfig/curl.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/curl.pc:
+ @./get-src http://curl.haxx.se/download curl-7.35.0.tar.bz2
+ @./build cmmi "$(BUILD_ROOT_DEPS)" curl-7.35.0 "" "--with-nss" $(VERBOSE)
+
+heimdal: env nss ncurses openssl openldap $(BUILD_ROOT_DEPS)/lib/pkgconfig/heimdal.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/heimdal.pc:
+ @./get-src http://www.h5l.org/dist/src heimdal-1.5.2.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" heimdal-1.5.2 "" "" $(VERBOSE)
+
+ncurses: env $(BUILD_ROOT_DEPS)/lib/libncurses.a
+
+$(BUILD_ROOT_DEPS)/lib/libncurses.a:
+ @./get-src ftp://invisible-island.net/ncurses ncurses-5.9.tgz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" ncurses-5.9 "ncurses.patch" "--without-ada --without-manpages --without-progs --without-tests" $(VERBOSE)
+
+openldap: env regex gnutls libgpg-error libgcrypt $(BUILD_ROOT_DEPS)/lib/libldap.la
+
+$(BUILD_ROOT_DEPS)/lib/libldap.la:
+ @./get-src ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release openldap-2.4.9.tgz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" openldap-2.4.9 "@openldap.patch" "--disable-backends --disable-overlays --disable-slapd --disable-debug --enable-dynamic --without-threads --with-tls=gnutls" $(VERBOSE)
+
+libgpg-error: env gnutls $(BUILD_ROOT_DEPS)/lib/libgpg-error.la
+
+$(BUILD_ROOT_DEPS)/lib/libgpg-error.la:
+ @./get-src ftp://ftp.gnutls.org/gcrypt/libgpg-error libgpg-error-1.12.tar.bz2
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libgpg-error-1.12 "libgpg-error.patch" "" $(VERBOSE)
+
+libgcrypt: env libgpg-error $(BUILD_ROOT_DEPS)/lib/libgcrypt.la
+
+$(BUILD_ROOT_DEPS)/lib/libgcrypt.la:
+ @./get-src ftp://ftp.gnutls.org/gcrypt/libgcrypt libgcrypt-1.6.1.tar.bz2
+ @export w32root=$(BUILD_ROOT_DEPS) && \
+ ./build acmmi "$(BUILD_ROOT_DEPS)" libgcrypt-1.6.1 "" "--build-w32^" $(VERBOSE)
+
+regex: env $(BUILD_ROOT_DEPS)/include/regex.h
+
+$(BUILD_ROOT_DEPS)/include/regex.h:
+ @./get-src "http://downloads.sourceforge.net/project/mingw/MSYS/Base/regex/regex-1.20090805-2/regex-1.20090805-2-msys-1.0.13-src.tar.lzma?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmingw%2Ffiles%2FMSYS%2FBase%2Fregex%2Fregex-1.20090805-2%2Fregex-1.20090805-2-msys-1.0.13-src.tar.lzma%2Fdownload&ts=1395255273&use_mirror=cznic" "0" regex-1.20090805-2-msys-1.0.13-src.tar.lzma
+ @tar -xf src/regex-20090805.tar.xz --directory=src
+ @./build cmmi "$(BUILD_ROOT_DEPS)" regex-20090805 "regex.patch" "" $(VERBOSE)
+
+catgets: env $(BUILD_ROOT_DEPS)/include/langinfo.h
+
+$(BUILD_ROOT_DEPS)/include/langinfo.h:
+ @./get-src "http://downloads.sourceforge.net/project/mingw/MinGW/Extension/catgets/mingw-catgets-1.0.1/mingw-catgets-1.0.1-src.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmingw%2Ffiles%2FMinGW%2FExtension%2Fcatgets%2Fmingw-catgets-1.0.1%2F&ts=1396202721&use_mirror=freefr" "0" mingw-catgets-1.0.1-src.tar.gz "mingw-catgets-1.0.1"
+ @./build cmmi "$(BUILD_ROOT_DEPS)" mingw-catgets-1.0.1 "" "" $(VERBOSE)
+
+libdb: env $(BUILD_ROOT_DEPS)/lib/libdb.a
+
+$(BUILD_ROOT_DEPS)/lib/libdb.a:
+ @./get-src http://download.oracle.com/berkeley-db db-5.1.29.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" db-5.1.29/build_unix "@libdb.patch" "../dist/configure --enable-smallbuild --disable-cxx --disable-java --disable-replication --enable-mingw" $(VERBOSE)
+
+libgdata: env glib libsoup liboauth json-glib $(BUILD_ROOT_DEPS)/lib/pkgconfig/libgdata.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libgdata.pc:
+ @./get-src https://download.gnome.org/sources/libgdata/0.15 libgdata-0.15.1.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libgdata-0.15.1 "libgdata.patch" "--disable-gnome --disable-goa $(DISABLE_GTK_DOC)" $(VERBOSE)
+
+gsettings-desktop-schemas: env gtk $(BUILD_ROOT_DEPS)/share/pkgconfig/gsettings-desktop-schemas.pc
+
+$(BUILD_ROOT_DEPS)/share/pkgconfig/gsettings-desktop-schemas.pc:
+ @./get-src https://download.gnome.org/sources/gsettings-desktop-schemas/3.10 gsettings-desktop-schemas-3.10.1.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gsettings-desktop-schemas-3.10.1 "" "" $(VERBOSE)
+
+gtkspell: env gtk enchant $(BUILD_ROOT_DEPS)/lib/pkgconfig/gtkspell3-3.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/gtkspell3-3.0.pc:
+ @./get-src "http://downloads.sourceforge.net/project/gtkspell/3.0.4/gtkspell3-3.0.4.tar.gz?r=http%3A%2F%2Fgtkspell.sourceforge.net%2F&ts=1395867752&use_mirror=skylink" "0" gtkspell3-3.0.4.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gtkspell3-3.0.4 "" "$(DISABLE_GTK_DOC)" $(VERBOSE)
+
+gtkhtml: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/libgtkhtml-4.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libgtkhtml-4.0.pc:
+ @./get-src https://download.gnome.org/sources/gtkhtml/4.8 gtkhtml-4.8.0.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gtkhtml-4.8.0 "" "$(DISABLE_GTK_DOC)" $(VERBOSE)
+
+gnome-common: env $(BUILD_ROOT_DEPS)/share/aclocal/gnome-common.m4
+
+$(BUILD_ROOT_DEPS)/share/aclocal/gnome-common.m4:
+ @./get-src https://download.gnome.org/sources/gnome-common/3.10 gnome-common-3.10.0.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gnome-common-3.10.0 "" "" $(VERBOSE)
+
+webkitgtk: env gtk enchant libsoup ruby gperf libwebp icu libsecret libxslt $(BUILD_ROOT_DEPS)/lib/pkgconfig/webkitgtk-3.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/webkitgtk-3.0.pc:
+ @./get-src http://webkitgtk.org/releases webkitgtk-2.4.4.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" webkitgtk-2.4.4 "webkitgtk.patch" "--enable-win32-target --enable-spellcheck --enable-jit --disable-geolocation --disable-video --disable-web-audio --disable-webgl --disable-accelerated-compositing --disable-glx --disable-egl --disable-gles2 --disable-webkit2 $(DISABLE_GTK_DOC)" $(VERBOSE)
+
+ruby: env 7zip $(BUILD_ROOT_DEPS)/bin/ruby.exe
+
+$(BUILD_ROOT_DEPS)/bin/ruby.exe:
+ @./get-src http://dl.bintray.com/oneclick/rubyinstaller ruby-1.9.3-p545-i386-mingw32.7z
+ @cp -r src/ruby-1.9.3-p545-i386-mingw32/bin/* $(BUILD_ROOT_DEPS)/bin/
+ @cp -r src/ruby-1.9.3-p545-i386-mingw32/include/* $(BUILD_ROOT_DEPS)/include/
+ @cp -r src/ruby-1.9.3-p545-i386-mingw32/lib/* $(BUILD_ROOT_DEPS)/lib/
+
+gperf: env $(BUILD_ROOT_DEPS)/bin/gperf.exe
+
+$(BUILD_ROOT_DEPS)/bin/gperf.exe:
+ @./get-src http://ftp.gnu.org/pub/gnu/gperf gperf-3.0.4.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gperf-3.0.4 "" "" $(VERBOSE)
+
+libwebp: env giflib $(BUILD_ROOT_DEPS)/lib/pkgconfig/libwebp.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libwebp.pc:
+ @./get-src https://webp.googlecode.com/files libwebp-0.4.0.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libwebp-0.4.0 "" "" $(VERBOSE)
+
+icu: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-uc.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-uc.pc:
+ @./get-src http://download.icu-project.org/files/icu4c/53.1 icu4c-53_1-src.tgz "" "" icu
+ @./build cmmi "$(BUILD_ROOT_DEPS)" icu/source "" "--disable-rpath" $(VERBOSE)
+ @mv $(BUILD_ROOT_DEPS)/lib/icu*.dll $(BUILD_ROOT_DEPS)/bin/
+ @mv $(BUILD_ROOT_DEPS)/lib/icudt.dll.a $(BUILD_ROOT_DEPS)/lib/libicudt.dll.a
+ @mv $(BUILD_ROOT_DEPS)/lib/icuin.dll.a $(BUILD_ROOT_DEPS)/lib/libicuin.dll.a
+ @mv $(BUILD_ROOT_DEPS)/lib/icuio.dll.a $(BUILD_ROOT_DEPS)/lib/libicuio.dll.a
+ @mv $(BUILD_ROOT_DEPS)/lib/icule.dll.a $(BUILD_ROOT_DEPS)/lib/libicule.dll.a
+ @mv $(BUILD_ROOT_DEPS)/lib/iculx.dll.a $(BUILD_ROOT_DEPS)/lib/libiculx.dll.a
+ @mv $(BUILD_ROOT_DEPS)/lib/icutest.dll.a $(BUILD_ROOT_DEPS)/lib/libicutest.dll.a
+ @mv $(BUILD_ROOT_DEPS)/lib/icutu.dll.a $(BUILD_ROOT_DEPS)/lib/libicutu.dll.a
+ @mv $(BUILD_ROOT_DEPS)/lib/icuuc.dll.a $(BUILD_ROOT_DEPS)/lib/libicuuc.dll.a
+ @mv $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-i18n.pc $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-i18n.pc.bak && \
+ cat $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-i18n.pc.bak | grep -v "Libs: -licuin53" >$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-i18n.pc && \
+ echo "Libs: -licuin" >>$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-i18n.pc && \
+ rm $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-i18n.pc.bak
+ @mv $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-io.pc $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-io.pc.bak && \
+ cat $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-io.pc.bak | grep -v "Libs: -licuio53" >$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-io.pc && \
+ echo "Libs: -licuio" >>$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-io.pc && \
+ rm $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-io.pc.bak
+ @mv $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-le.pc $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-le.pc.bak && \
+ cat $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-le.pc.bak | grep -v "Libs: -licule53" >$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-le.pc && \
+ echo "Libs: -licule" >>$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-le.pc && \
+ rm $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-le.pc.bak
+ @mv $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-lx.pc $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-lx.pc.bak && \
+ cat $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-lx.pc.bak | grep -v "Libs: -liculx53" >$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-lx.pc && \
+ echo "Libs: -liculx" >>$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-lx.pc && \
+ rm $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-lx.pc.bak
+ @mv $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-uc.pc $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-uc.pc.bak && \
+ cat $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-uc.pc.bak | grep -v "} -licuuc53 -licudt53" >$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-uc.pc && \
+ echo "Libs: -L$(BUILD_ROOT_DEPS)/lib/ -licuuc -licudt" >>$(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-uc.pc && \
+ rm $(BUILD_ROOT_DEPS)/lib/pkgconfig/icu-uc.pc.bak
+
+libsecret: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/libsecret-1.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libsecret-1.pc:
+ @./get-src https://download.gnome.org/sources/libsecret/0.16 libsecret-0.16.tar.xz
+ @./build acmmi "$(BUILD_ROOT_DEPS)" libsecret-0.16 "libsecret.patch" "--disable-manpages" $(VERBOSE)
+
+libxslt: env libxml2 $(BUILD_ROOT_DEPS)/lib/pkgconfig/libxslt.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libxslt.pc:
+ @./get-src https://git.gnome.org/browse/libxslt/snapshot libxslt-1.1.28.tar.gz
+ @./build acmmi "$(BUILD_ROOT_DEPS)" libxslt-1.1.28 "libxslt.patch" "" $(VERBOSE)
+
+json-glib: env glib $(BUILD_ROOT_DEPS)/lib/pkgconfig/json-glib-1.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/json-glib-1.0.pc:
+ @./get-src https://download.gnome.org/sources/json-glib/0.99 json-glib-0.99.2.tar.xz
+ @mv $(BUILD_ROOT_DEPS)/bin/msgmerge.exe $(BUILD_ROOT_DEPS)/bin/msgmerge.ex && \
+ ./build cmmi "$(BUILD_ROOT_DEPS)" json-glib-0.99.2 "" "$(DISABLE_GTK_DOC)" $(VERBOSE) && \
+ mv $(BUILD_ROOT_DEPS)/bin/msgmerge.ex $(BUILD_ROOT_DEPS)/bin/msgmerge.exe
+
+libunistring: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/libunistring.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libunistring.pc:
+ @./get-src ftp://ftp.gnu.org/pub/gnu/libunistring libunistring-0.9.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libunistring-0.9 "" "" $(VERBOSE)
+
+libtasn1: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/libtasn1.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libtasn1.pc:
+ @./get-src http://ftp.gnu.org/gnu/libtasn1 libtasn1-3.4.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libtasn1-3.4 "@libtasn1.patch" "" $(VERBOSE)
+
+openssl: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/openssl.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/openssl.pc:
+ @./get-src http://www.openssl.org/source openssl-1.0.1g.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" openssl-1.0.1g "" "mingw" $(VERBOSE)
+
+gtk: env glib intltool atk gdk-pixbuf cairo pango $(BUILD_ROOT_DEPS)/lib/pkgconfig/gtk+-3.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/gtk+-3.0.pc:
+ @./get-src https://download.gnome.org/sources/gtk+/3.10 gtk+-3.10.6.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gtk+-3.10.6 "gtk.patch" "--disable-static $(DISABLE_GTK_DOC) --disable-man" $(VERBOSE)
+
+atk: env glib $(BUILD_ROOT_DEPS)/lib/pkgconfig/atk.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/atk.pc:
+ @./get-src https://download.gnome.org/sources/atk/2.10 atk-2.10.0.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" atk-2.10.0 "atk.patch" "--disable-static" $(VERBOSE)
+
+cairo: env glib pixman libpng freetype fontconfig $(BUILD_ROOT_DEPS)/lib/pkgconfig/cairo.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/cairo.pc:
+ @./get-src http://cairographics.org/releases cairo-1.12.16.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" cairo-1.12.16 "" "--disable-static $(DISABLE_GTK_DOC)" $(VERBOSE)
+
+pixman: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/pixman-1.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/pixman-1.pc:
+ @./get-src http://cairographics.org/releases pixman-0.32.4.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" pixman-0.32.4 "" "--disable-static" $(VERBOSE)
+
+libpng: env zlib $(BUILD_ROOT_DEPS)/lib/pkgconfig/libpng.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libpng.pc:
+ @./get-src http://download.sourceforge.net/libpng libpng-1.6.7.tar.xz
+ @./build mmi "$(BUILD_ROOT_DEPS)" libpng-1.6.7 "libpng.patch" "-f scripts/makefile.msys prefix=$(BUILD_ROOT_DEPS)" $(VERBOSE)
+ @cp $(BUILD_ROOT_DEPS)/lib/libpng16.dll.a $(BUILD_ROOT_DEPS)/lib/libpng.dll.a
+
+fontconfig: env freetype expat $(BUILD_ROOT_DEPS)/lib/pkgconfig/fontconfig.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/fontconfig.pc:
+ @./get-src http://www.freedesktop.org/software/fontconfig/release fontconfig-2.11.0.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" fontconfig-2.11.0 "@fontconfig.patch" "--disable-docs" $(VERBOSE)
+
+freetype: env zlib giflib libpng libjpeg libtiff jasper $(BUILD_ROOT_DEPS)/lib/pkgconfig/freetype2.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/freetype2.pc:
+ @./get-src http://download.savannah.gnu.org/releases/freetype freetype-2.5.2.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" freetype-2.5.2 "freetype.patch" "" $(VERBOSE)
+
+harfbuzz: env cairo freetype glib icu $(BUILD_ROOT_DEPS)/lib/pkgconfig/harfbuzz.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/harfbuzz.pc:
+ @./get-src http://www.freedesktop.org/software/harfbuzz/release harfbuzz-0.9.27.tar.bz2 || test -d src/harfbuzz-0.9.27
+ @./build cmmi "$(BUILD_ROOT_DEPS)" harfbuzz-0.9.27 "harfbuzz.patch" "--with-icu=yes --disable-static" $(VERBOSE)
+
+librsvg2: env zlib cairo gdk-pixbuf libcroco $(BUILD_ROOT_DEPS)/lib/pkgconfig/librsvg-2.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/librsvg-2.0.pc:
+ @./get-src http://ftp.acc.umu.se/pub/gnome/sources/librsvg/2.36 librsvg-2.36.4.tar.xz
+ @export PATH="$(PATH):`pwd`/src/librsvg-2.36.4/.libs" && \
+ ./build cmmi "$(BUILD_ROOT_DEPS)" librsvg-2.36.4 "" "--disable-gtk-theme --enable-pixbuf-loader --enable-introspection=no $(DISABLE_GTK_DOC)" $(VERBOSE)
+
+pango: env glib cairo fontconfig freetype harfbuzz $(BUILD_ROOT_DEPS)/lib/pkgconfig/pango.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/pango.pc:
+ @./get-src http://ftp.gnome.org/pub/GNOME/sources/pango/1.36 pango-1.36.1.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" pango-1.36.1 "" "" $(VERBOSE)
+
+icon-themes: hicolor-icon-theme icon-naming-utils gnome-icon-theme gnome-icon-theme-symbolic
+
+hicolor-icon-theme: env $(BUILD_ROOT_DEPS)/share/icons/hicolor/index.theme
+
+$(BUILD_ROOT_DEPS)/share/icons/hicolor/index.theme:
+ @./get-src http://icon-theme.freedesktop.org/releases hicolor-icon-theme-0.13.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" hicolor-icon-theme-0.13 "" "" $(VERBOSE)
+
+perl-xml-simple: /lib/perl5/5.8/XML
+
+/lib/perl5/5.8/XML:
+ @./get-src http://pkgs.fedoraproject.org/repo/pkgs/perl-XML-Simple/XML-Simple-2.18.tar.gz/593aa8001e5c301cdcdb4bb3b63abc33 XML-Simple-2.18.tar.gz
+ @cp -r src/XML-Simple-2.18/lib/XML /lib/perl5/5.8/
+
+icon-naming-utils: env perl-xml-simple $(BUILD_ROOT_DEPS)/share/pkgconfig/icon-naming-utils.pc
+
+$(BUILD_ROOT_DEPS)/share/pkgconfig/icon-naming-utils.pc:
+ @./get-src http://tango.freedesktop.org/releases icon-naming-utils-0.8.90.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" icon-naming-utils-0.8.90 "" "" $(VERBOSE)
+
+gnome-icon-theme: env icon-naming-utils gtk $(BUILD_ROOT_DEPS)/share/pkgconfig/gnome-icon-theme.pc
+
+$(BUILD_ROOT_DEPS)/share/pkgconfig/gnome-icon-theme.pc:
+ @./get-src https://download.gnome.org/sources/gnome-icon-theme/3.10 gnome-icon-theme-3.10.0.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gnome-icon-theme-3.10.0 "" "" $(VERBOSE)
+
+gnome-icon-theme-symbolic: env gnome-icon-theme $(BUILD_ROOT_DEPS)/share/pkgconfig/gnome-icon-theme-symbolic.pc
+
+$(BUILD_ROOT_DEPS)/share/pkgconfig/gnome-icon-theme-symbolic.pc:
+ @./get-src https://download.gnome.org/sources/gnome-icon-theme-symbolic/3.10 gnome-icon-theme-symbolic-3.10.1.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gnome-icon-theme-symbolic-3.10.1 "" "" $(VERBOSE)
+
+gdk-pixbuf: env giflib libpng libjpeg libtiff jasper glib $(BUILD_ROOT_DEPS)/lib/pkgconfig/gdk-pixbuf-2.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/gdk-pixbuf-2.0.pc:
+ @./get-src https://download.gnome.org/sources/gdk-pixbuf/2.30 gdk-pixbuf-2.30.2.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gdk-pixbuf-2.30.2 "" "--disable-static --with-libjasper" $(VERBOSE)
+
+libcroco: env glib $(BUILD_ROOT_DEPS)/lib/pkgconfig/libcroco-0.6.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libcroco-0.6.pc:
+ @./get-src http://ftp.acc.umu.se/pub/gnome/sources/libcroco/0.6 libcroco-0.6.8.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libcroco-0.6.8 "" "$(DISABLE_GTK_DOC)" $(VERBOSE)
+
+giflib: env $(BUILD_ROOT_DEPS)/include/gif_lib.h
+
+$(BUILD_ROOT_DEPS)/include/gif_lib.h:
+ @./get-src "http://downloads.sourceforge.net/project/giflib/giflib-5.0.6.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fgiflib%2F&ts=1398011957&use_mirror=kent" "0" giflib-5.0.6.tar.bz2
+ @./build cmmi "$(BUILD_ROOT_DEPS)" giflib-5.0.6 "" "" $(VERBOSE)
+
+libjpeg: env zlib $(BUILD_ROOT_DEPS)/bin/libjpeg-9.dll
+
+$(BUILD_ROOT_DEPS)/bin/libjpeg-9.dll:
+ @./get-src http://www.ijg.org/files jpegsrc.v9.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" jpeg-9 "" "" $(VERBOSE)
+
+libtiff: env zlib $(BUILD_ROOT_DEPS)/lib/pkgconfig/libtiff-4.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libtiff-4.pc:
+ @./get-src ftp://ftp.remotesensing.org/pub/libtiff tiff-4.0.3.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" tiff-4.0.3 "" "" $(VERBOSE)
+
+jasper: env zlib $(BUILD_ROOT_DEPS)/include/jasper/jasper.h
+
+$(BUILD_ROOT_DEPS)/include/jasper/jasper.h:
+ @./get-src http://www.ece.uvic.ca/~frodo/jasper/software jasper-1.900.1.zip
+ @./build cmmi "$(BUILD_ROOT_DEPS)" jasper-1.900.1 "jasper.patch" "" $(VERBOSE)
+
+libffi: env $(BUILD_ROOT_DEPS)/lib/pkgconfig/libffi.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libffi.pc:
+ @./get-src ftp://sourceware.org/pub/libffi/ libffi-3.0.9.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libffi-3.0.9 "" "" $(VERBOSE)
+
+dbus: env expat $(BUILD_ROOT_DEPS)/lib/pkgconfig/dbus-1.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/dbus-1.pc:
+ @./get-src http://dbus.freedesktop.org/releases/dbus dbus-1.8.0.tar.gz
+ @./build rcmmi "$(BUILD_ROOT_DEPS)" dbus-1.8.0 "dbus.patch" "--build=mingw32" $(VERBOSE)
+
+expat: env libxml2 $(BUILD_ROOT_DEPS)/lib/pkgconfig/expat.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/expat.pc:
+ @./get-src "http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fexpat%2Ffiles%2Fexpat%2F2.1.0%2F&ts=1388081569&use_mirror=heanet" "0" expat-2.1.0.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" expat-2.1.0 "" "" $(VERBOSE)
+
+krb5: env $(BUILD_ROOT_DEPS)/include/krb5.h
+
+$(BUILD_ROOT_DEPS)/include/krb5.h:
+ @./get-src http://web.mit.edu/kerberos/dist/krb5/1.12 krb5-1.12-signed.tar
+ @./build cmmi "$(BUILD_ROOT_DEPS)" krb5-1.12-signed "" "" $(VERBOSE)
+
+# to be able to call ./autogen.sh
+fake-gtk-doc: env $(BUILD_ROOT_DEPS)/bin/gtkdocize
+
+$(BUILD_ROOT_DEPS)/bin/gtkdocize:
+ @echo "#!/bin/bash" >$(BUILD_ROOT_DEPS)/bin/gtkdocize
+ @echo "echo fake gtkdocize binary >&2" >>$(BUILD_ROOT_DEPS)/bin/gtkdocize
+ @echo "#if [ x$-1 = x--version ] ; then" >>$(BUILD_ROOT_DEPS)/bin/gtkdocize
+ @echo " echo 1.20.1" >>$(BUILD_ROOT_DEPS)/bin/gtkdocize
+ @echo " exit 0" >>$(BUILD_ROOT_DEPS)/bin/gtkdocize
+ @echo "#fi" >>$(BUILD_ROOT_DEPS)/bin/gtkdocize
+ @echo "exit 1" >>$(BUILD_ROOT_DEPS)/bin/gtkdocize
+ @cp patches/gtk-doc.m4 $(BUILD_ROOT_DEPS)/share/aclocal/
+ @cp patches/yelp.m4 $(BUILD_ROOT_DEPS)/share/aclocal/
+
+libxml2: env libiconv $(BUILD_ROOT_DEPS)/lib/pkgconfig/libxml-2.0.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/libxml-2.0.pc:
+ @./get-src ftp://xmlsoft.org/libxml2 libxml2-2.8.0.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libxml2-2.8.0 "" "" $(VERBOSE)
+
+zlib: env pkg-config $(BUILD_ROOT_DEPS)/lib/pkgconfig/zlib.pc
+
+$(BUILD_ROOT_DEPS)/lib/pkgconfig/zlib.pc:
+ @./get-src http://zlib.net/ zlib-1.2.8.tar.xz
+ @./build mmi "$(BUILD_ROOT_DEPS)" zlib-1.2.8 "" "-f win32/Makefile.gcc NO_MSCVER_FILE64_FUNC=1" $(VERBOSE)
+ @cd src/zlib-1.2.8 && \
+ cp libz.dll.a $(BUILD_ROOT_DEPS)/lib/ && \
+ cp zlib1.dll $(BUILD_ROOT_DEPS)/bin/ && \
+ cd ../..
+
+cmake: env $(BUILD_ROOT_DEPS)/bin/cmake.exe
+
+$(BUILD_ROOT_DEPS)/bin/cmake.exe:
+ @./get-src http://www.cmake.org/files/v2.8 cmake-2.8.12.2-win32-x86.zip
+ @cp -r src/cmake-2.8.12.2-win32-x86/share/* $(BUILD_ROOT_DEPS)/share/
+ @cp -r src/cmake-2.8.12.2-win32-x86/bin/* $(BUILD_ROOT_DEPS)/bin/
+
+7zip: env $(BUILD_ROOT_DEPS)/bin/7za.exe
+
+$(BUILD_ROOT_DEPS)/bin/7za.exe:
+ @./get-src http://downloads.sourceforge.net/sevenzip 7za920.zip
+ @cp src/7za.exe $(BUILD_ROOT_DEPS)/bin/7za.exe
+
+intltool: env $(BUILD_ROOT_DEPS)/bin/intltoolize
+
+$(BUILD_ROOT_DEPS)/bin/intltoolize:
+ @./get-src https://launchpad.net/intltool/trunk/0.50.2/+download intltool-0.50.2.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" intltool-0.50.2 "" "" $(VERBOSE)
+
+core-tools: regex libtool autoconf automake pkg-config intltool libiconv gettext
+
+libtool: env $(BUILD_ROOT_DEPS)/bin/libtool
+
+$(BUILD_ROOT_DEPS)/bin/libtool:
+ @./get-src http://ftp.gnu.org/gnu/libtool libtool-2.4.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libtool-2.4 "" "" $(VERBOSE)
+
+autoconf: env $(BUILD_ROOT_DEPS)/bin/autoconf
+
+$(BUILD_ROOT_DEPS)/bin/autoconf:
+ @./get-src http://ftp.gnu.org/gnu/autoconf autoconf-2.69.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" autoconf-2.69 "" "" $(VERBOSE)
+
+automake: env $(BUILD_ROOT_DEPS)/bin/automake
+
+$(BUILD_ROOT_DEPS)/bin/automake:
+ @./get-src http://ftp.gnu.org/gnu/automake automake-1.14.tar.xz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" automake-1.14 "" "" $(VERBOSE)
+
+libiconv: env $(BUILD_ROOT_DEPS)/bin/iconv.exe
+
+$(BUILD_ROOT_DEPS)/bin/iconv.exe:
+ @./get-src http://ftp.gnu.org/gnu/libiconv libiconv-1.14.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" libiconv-1.14 "" "" $(VERBOSE)
+
+gettext: env $(BUILD_ROOT_DEPS)/bin/gettext.exe
+
+$(BUILD_ROOT_DEPS)/bin/gettext.exe:
+ @./get-src http://ftp.gnu.org/pub/gnu/gettext gettext-0.18.3.1.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" gettext-0.18.3.1 "@gettext.patch" "" $(VERBOSE)
+
+bison: env $(BUILD_ROOT_DEPS)/bin/bison.exe
+
+$(BUILD_ROOT_DEPS)/bin/bison.exe:
+ @./get-src http://ftp.gnu.org/gnu/bison bison-3.0.2.tar.xz
+ @./build acmmi "$(BUILD_ROOT_DEPS)" bison-3.0.2 "bison.patch" "" $(VERBOSE)
+
+pkg-config: env $(BUILD_ROOT_DEPS)/bin/pkg-config.exe
+
+$(BUILD_ROOT_DEPS)/bin/pkg-config.exe:
+ @./get-src "http://downloads.sourceforge.net/project/pkgconfiglite/0.28-1/pkg-config-lite-0.28-1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpkgconfiglite%2Ffiles%2F0.28-1%2F&ts=1391208353&use_mirror=garr" "0" pkg-config-lite-0.28-1.tar.gz
+ @./build cmmi "$(BUILD_ROOT_DEPS)" pkg-config-lite-0.28-1 "" "" $(VERBOSE)
diff --git a/win32/build b/win32/build
new file mode 100755
index 0000000000..915e352c35
--- /dev/null
+++ b/win32/build
@@ -0,0 +1,130 @@
+#!/bin/bash
+
+HOW=$1
+PREFIX=$2
+WHAT=$3
+PATCHES=$4
+CFGPARAMS=$5
+VERBOSE=$6
+SRCDIR=$7
+MKPARAMS=
+PATCHAFTERCFG=0
+
+if test "$HOW" = "m" -o "$HOW" = "mmi" ; then
+ MKPARAMS=$CFGPARAMS
+fi
+
+PATCHAFTERCFG=0
+if test "${PATCHES:0:1}" = "@" ; then
+ PATCHAFTERCFG=1
+ PATCHES=${PATCHES:1}
+fi
+
+if test "$SRCDIR" = "" ; then
+ SRCDIR=src/$WHAT
+fi
+
+cd $SRCDIR
+
+if test "$?" != "0" ; then
+ exit 1
+fi
+
+export BINARY_PATH=$PREFIX/bin
+export INCLUDE_PATH=$PREFIX/include
+export LIBRARY_PATH=$PREFIX/lib
+
+if test "$PATCHAFTERCFG" != "1" ; then
+ for p in $PATCHES; do patch -p1 -f --fuzz=0 <../../patches/$p; done
+fi
+
+if test "${HOW:0:1}" = "r" ; then
+ echo " * Running autoreconf for '$WHAT'..."
+
+ HOW=${HOW:1}
+ if test "$VERBOSE" != "1" ; then
+ autoreconf --force --install >/dev/null
+
+ else
+ autoreconf --force --install
+ fi
+
+ if test "$?" != "0" ; then
+ exit 1
+ fi
+fi
+
+if test "${HOW:0:1}" = "a" ; then
+ AUTOGENSH=
+ if test -f "./autogen.sh" ; then
+ AUTOGENSH="./autogen.sh"
+ AUTOGENPARAMS="$CFGPARAMS --prefix=$PREFIX"
+ else
+ AUTOGENSH="autoreconf -fi"
+ AUTOGENPARAMS=
+ fi
+
+ echo " * Running $AUTOGENSH for '$WHAT'..."
+
+ HOW=${HOW:1}
+ if test "$CFGPARAMS" != "" -a "${CFGPARAMS%%^}" != "" -a "${CFGPARAMS%%^}" != "$CFGPARAMS" ; then
+ AUTOGENPARAMS="${CFGPARAMS%%^}"
+ CFGPARAMS="${CFGPARAMS##*^}"
+ fi
+ if test "$VERBOSE" != "1" ; then
+ $AUTOGENSH $AUTOGENPARAMS >/dev/null
+ else
+ $AUTOGENSH $AUTOGENPARAMS
+ fi
+
+ if test "$?" != "0" ; then
+ exit 1
+ fi
+fi
+
+if test "$HOW" = "cmmi" ; then
+ echo " * Configuring '$WHAT'..."
+
+ make clean &>/dev/null
+
+ FIRSTPARAM=${CFGPARAMS%% }
+ if test "$FIRSTPARAM" != "" -a "${FIRSTPARAM%%/}" != "" -a "${FIRSTPARAM%%/}" != "$FIRSTPARAM" ; then
+ if test "$VERBOSE" != "1" ; then
+ $CFGPARAMS --prefix=$PREFIX >/dev/null
+
+ else
+ $CFGPARAMS --prefix=$PREFIX
+ fi
+ elif test "$VERBOSE" != "1" ; then
+ ./configure --prefix=$PREFIX $CFGPARAMS >/dev/null
+
+ else
+ ./configure --prefix=$PREFIX $CFGPARAMS
+ fi
+
+ if test "$?" != "0" ; then
+ exit 1
+ fi
+fi
+
+if test "$PATCHAFTERCFG" = "1" ; then
+ for p in $PATCHES; do patch -p1 -f --fuzz=0 <../../patches/$p; done
+fi
+
+if test "$VERBOSE" != "1" ; then
+ echo " * Building '$WHAT'..." && \
+ make $MKPARAMS >/dev/null && \
+ if test "$HOW" != "m" ; then
+ make install $MKPARAMS >/dev/null
+ fi
+else
+ echo " * Building '$WHAT'..." && \
+ make V=1 $MKPARAMS && \
+ if test "$HOW" != "m" ; then
+ make install V=1 $MKPARAMS
+ fi
+fi
+
+if test "$?" != "0" ; then
+ exit 1
+fi
diff --git a/win32/get-src b/win32/get-src
new file mode 100755
index 0000000000..7332815982
--- /dev/null
+++ b/win32/get-src
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+OK=0
+MKPWD=$PWD
+URLLINK=$1
+DOWNLOADEDFILE=$2
+EXTRACTTO=$4
+EXTRACTEDDIR=$5
+
+if test "$DOWNLOADEDFILE" = "0" ; then
+ DOWNLOADEDFILE=$3 ;
+else
+ URLLINK="$URLLINK/$DOWNLOADEDFILE" ;
+fi
+
+if test ! -f "downloads/$DOWNLOADEDFILE" ; then
+ cd downloads && \
+ wget --no-check-certificate $URLLINK && \
+ cd .. && \
+ OK=1
+else
+ OK=1
+fi
+if test "$OK" = "0" ; then
+ exit 1;
+fi
+
+case "$DOWNLOADEDFILE" in
+ *.7z)
+ if test "$EXTRACTEDDIR" = "" ; then
+ EXTRACTEDDIR=${DOWNLOADEDFILE%%.7z}
+ fi
+ if test ! -d "src/${EXTRACTEDDIR}" ; then
+ echo " * Unpacking '$DOWNLOADEDFILE'..."
+ if test "$EXTRACTTO" != "" ; then
+ cd $EXTRACTTO &&
+ 7za x -y $MKPWD/downloads/$DOWNLOADEDFILE >/dev/null &&
+ cd $MKPWD
+ else
+ cd src && \
+ 7za x -y ../downloads/$DOWNLOADEDFILE >/dev/null && \
+ cd ..
+ fi
+ fi
+ ;;
+ *.zip)
+ if test "$EXTRACTEDDIR" = "" ; then
+ EXTRACTEDDIR=${DOWNLOADEDFILE%%.zip}
+ fi
+ if test ! -d "src/${EXTRACTEDDIR}" ; then
+ echo " * Unpacking '$DOWNLOADEDFILE'..."
+ if test "$EXTRACTTO" != "" ; then
+ cd $EXTRACTTO &&
+ unzip -o $MKPWD/downloads/$DOWNLOADEDFILE >/dev/null &&
+ cd $MKPWD
+ else
+ cd src && \
+ unzip -o ../downloads/$DOWNLOADEDFILE >/dev/null && \
+ cd ..
+ fi
+ fi
+ ;;
+ *.tar*|*.tgz)
+ if test "$EXTRACTEDDIR" = "" ; then
+ case "$DOWNLOADEDFILE" in
+ *.tar*) EXTRACTEDDIR=${DOWNLOADEDFILE%%.tar*} ;;
+ *.tgz) EXTRACTEDDIR=${DOWNLOADEDFILE%%.tgz*} ;;
+ *) echo "unknown archive type for tar case: '$DOWNLOADEDFILE'"; exit 1; ;;
+ esac
+ fi
+ if test ! -d "src/$EXTRACTEDDIR" ; then
+ echo " * Unpacking '$DOWNLOADEDFILE'..."
+ if test "$EXTRACTTO" = "" ; then
+ EXTRACTTO=src
+ fi
+ if test ! -d "$EXTRACTTO" ; then
+ mkdir -p "$EXTRACTTO";
+ fi
+ tar -xf downloads/$DOWNLOADEDFILE --directory=$EXTRACTTO
+ fi
+ ;;
+ *) echo "unknown archive type '$DOWNLOADEDFILE'"; exit 1; ;;
+esac
diff --git a/win32/patches/atk.patch b/win32/patches/atk.patch
new file mode 100644
index 0000000000..7429516d5a
--- /dev/null
+++ b/win32/patches/atk.patch
@@ -0,0 +1,11 @@
+diff -upr -x .deps -x .libs -x '*.la' atk-2.10.0.old/atk/atk.symbols atk-2.10.0/atk/atk.symbols
+--- atk-2.10.0.old/atk/atk.symbols 2013-09-13 15:00:44 +0000
++++ atk-2.10.0/atk/atk.symbols 2014-05-17 16:34:24 +0000
+@@ -107,6 +107,7 @@
+ atk_object_get_n_accessible_children
+ atk_object_get_name
+ atk_object_get_parent
++ atk_object_get_object_locale
+ atk_object_get_role
+ atk_object_get_type
+ atk_object_initialize
diff --git a/win32/patches/bison.patch b/win32/patches/bison.patch
new file mode 100644
index 0000000000..ae77ae2688
--- /dev/null
+++ b/win32/patches/bison.patch
@@ -0,0 +1,18 @@
+diff -upr bison-3.0.2.old/Makefile.am bison-3.0.2/Makefile.am
+--- bison-3.0.2.old/Makefile.am 2013-08-02 15:35:13 +0000
++++ bison-3.0.2/Makefile.am 2014-05-08 07:40:11 +0000
+@@ -54,12 +54,12 @@ noinst_LIBRARIES =
+ include build-aux/local.mk
+ include data/local.mk
+ include djgpp/local.mk
+-include doc/local.mk
++#include doc/local.mk
+ include etc/local.mk
+ include examples/local.mk
+ include lib/local.mk
+ include src/local.mk
+-include tests/local.mk
++#include tests/local.mk
+
+ # See comments in build-aux/git-version-gen. However, we make .version depend
+ # on configure so that .version and VERSION/PACKAGE_VERSION stay in sync in the
diff --git a/win32/patches/dbus.patch b/win32/patches/dbus.patch
new file mode 100644
index 0000000000..c876f2fce0
--- /dev/null
+++ b/win32/patches/dbus.patch
@@ -0,0 +1,202 @@
+diff -upr -x .deps -x .libs -x '*.la' dbus-1.8.0.old/dbus/Makefile.am dbus-1.8.0/dbus/Makefile.am
+--- dbus-1.8.0.old/dbus/Makefile.am 2014-01-20 13:40:21 +0000
++++ dbus-1.8.0/dbus/Makefile.am 2014-08-09 12:50:47 +0000
+@@ -304,8 +304,8 @@ if DBUS_WIN
+ # this code is used, we don't actually need libstdc++.
+ noinst_LTLIBRARIES += libdbus-init-win.la
+ libdbus_init_win_la_SOURCES = dbus-init-win.cpp
+-libdbus_1_la_LIBADD += libdbus-init-win.la
+-libdbus_internal_la_LIBADD += libdbus-init-win.la
++libdbus_1_la_LIBADD += libdbus-init-win.la -lole32
++libdbus_internal_la_LIBADD += libdbus-init-win.la -lole32
+ endif
+
+ noinst_PROGRAMS =
+diff -upr -x .deps -x .libs -x '*.la' dbus-1.8.0.old/dbus/dbus-sysdeps-win.c dbus-1.8.0/dbus/dbus-sysdeps-win.c
+--- dbus-1.8.0.old/dbus/dbus-sysdeps-win.c 2014-01-07 11:32:53 +0000
++++ dbus-1.8.0/dbus/dbus-sysdeps-win.c 2014-08-09 13:35:34 +0000
+@@ -55,6 +55,7 @@
+ #include <ws2tcpip.h>
+ #include <wincrypt.h>
+ #include <iphlpapi.h>
++#include <shlobj.h>
+
+ /* Declarations missing in mingw's and windows sdk 7.0 headers */
+ extern BOOL WINAPI ConvertStringSidToSidA (LPCSTR StringSid, PSID *Sid);
+@@ -3379,6 +3380,139 @@ _dbus_lookup_session_address (dbus_bool_
+ return TRUE;
+ }
+
++static char *
++get_special_folder (int csidl)
++{
++ char path[MAX_PATH+1];
++ HRESULT hr;
++ LPITEMIDLIST pidl = NULL;
++ BOOL b;
++ char *retval = NULL;
++
++ hr = SHGetSpecialFolderLocation (NULL, csidl, &pidl);
++ if (hr == S_OK)
++ {
++ b = SHGetPathFromIDListA (pidl, path);
++ if (b)
++ retval = strdup (path);
++ CoTaskMemFree (pidl);
++ }
++ return retval;
++}
++
++static char *
++get_windows_directory_root (void)
++{
++ char windowsdir[MAX_PATH];
++
++ if (GetWindowsDirectory (windowsdir, MAX_PATH))
++ {
++ /* Usually X:\Windows, but in terminal server environments
++ * might be an UNC path, AFAIK.
++ */
++ int len;
++
++ if (!*windowsdir)
++ return strdup("C:\\");
++
++ len = strlen(windowsdir);
++ if (len < MAX_PATH - 1 && windowsdir[len - 1] != '\\' && windowsdir[len - 1] != '/') {
++ char sep[2] = {0, 0}, *p;
++
++ for (p = windowsdir; *p && !*sep; p++) {
++ if (*p == '/' || *p == '\\') {
++ sep[0] = *p;
++ break;
++ }
++ }
++
++ strcat(windowsdir, sep);
++ }
++ return strdup(windowsdir);
++ }
++ else
++ return strdup("C:\\");
++}
++
++static dbus_bool_t
++_dbus_set_user_home (DBusString *homedir)
++{
++ const char *env;
++ char *tmp = NULL;
++
++ env = _dbus_getenv("HOME");
++
++ /* Only believe HOME if it is an absolute path and exists.
++ *
++ * We only do this check on Windows for a couple of reasons.
++ * Historically, we only did it there because we used to ignore $HOME
++ * on UNIX. There are concerns about enabling it now on UNIX because
++ * of things like autofs. In short, if the user has a bogus value in
++ * $HOME then they get what they pay for...
++ */
++ if (env)
++ {
++ /* In case HOME is Unix-style (it happens), convert it to
++ * Windows style.
++ */
++ char *p;
++ tmp = strdup(env);
++ while ((p = strchr(tmp, '/')) != NULL) {
++ *p = '\\';
++ }
++
++ if (!((tmp[0] == '\\' || (((tmp[0] >= 'a' && tmp[0] <= 'z') || (tmp[0] >= 'A' && tmp[0] <= 'Z')) && tmp[1] == ':')) &&
++ GetFileAttributesA (tmp) != INVALID_FILE_ATTRIBUTES &&
++ (GetFileAttributesA (tmp) & FILE_ATTRIBUTE_DIRECTORY) != 0))
++ {
++ env = NULL;
++ free(tmp);
++ tmp = NULL;
++ }
++ }
++
++ if (!tmp)
++ {
++ /* USERPROFILE is probably the closest equivalent to $HOME? */
++ env = _dbus_getenv("USERPROFILE");
++ if (env != NULL)
++ tmp = strdup(env);
++ }
++
++ if (!tmp)
++ tmp = get_special_folder(CSIDL_PROFILE);
++
++ if (!tmp)
++ tmp = get_windows_directory_root();
++
++ if (tmp) {
++ _dbus_string_append (homedir, tmp);
++ free(tmp);
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++static void
++_dbus_set_homedir_from_drive_and_path_env(DBusString *homedir)
++{
++ const char *homepath;
++ const char *homedrive;
++
++ homedrive = _dbus_getenv("HOMEDRIVE");
++ if (homedrive != NULL && *homedrive != '\0')
++ {
++ _dbus_string_append(homedir,homedrive);
++ }
++
++ homepath = _dbus_getenv("HOMEPATH");
++ if (homepath != NULL && *homepath != '\0')
++ {
++ _dbus_string_append(homedir,homepath);
++ }
++}
++
+ /**
+ * Appends the directory in which a keyring for the given credentials
+ * should be stored. The credentials should have either a Windows or
+@@ -3398,8 +3532,6 @@ _dbus_append_keyring_directory_for_crede
+ {
+ DBusString homedir;
+ DBusString dotdir;
+- const char *homepath;
+- const char *homedrive;
+
+ _dbus_assert (credentials != NULL);
+ _dbus_assert (!_dbus_credentials_are_anonymous (credentials));
+@@ -3407,18 +3539,16 @@ _dbus_append_keyring_directory_for_crede
+ if (!_dbus_string_init (&homedir))
+ return FALSE;
+
+- homedrive = _dbus_getenv("HOMEDRIVE");
+- if (homedrive != NULL && *homedrive != '\0')
+- {
+- _dbus_string_append(&homedir,homedrive);
+- }
++ _dbus_set_homedir_from_drive_and_path_env(&homedir);
++ /* It's a default folder, like X:\, try to use a better one, in user's home directory */
++ if (_dbus_string_get_length(&homedir) <= 3) {
++ _dbus_string_set_length(&homedir, 0);
++ if (!_dbus_set_user_home(&homedir)) {
++ _dbus_string_set_length(&homedir, 0);
++ _dbus_set_homedir_from_drive_and_path_env(&homedir);
++ }
++ }
+
+- homepath = _dbus_getenv("HOMEPATH");
+- if (homepath != NULL && *homepath != '\0')
+- {
+- _dbus_string_append(&homedir,homepath);
+- }
+-
+ #ifdef DBUS_ENABLE_EMBEDDED_TESTS
+ {
+ const char *override;
diff --git a/win32/patches/fontconfig.patch b/win32/patches/fontconfig.patch
new file mode 100644
index 0000000000..6fcb8881d6
--- /dev/null
+++ b/win32/patches/fontconfig.patch
@@ -0,0 +1,35 @@
+diff -upr fontconfig-2.11.0/src/fcatomic.h fontconfig-2.11.0.new/src/fcatomic.h
+--- fontconfig-2.11.0/src/fcatomic.h 2013-10-11 03:10:18 +0000
++++ fontconfig-2.11.0.new/src/fcatomic.h 2014-01-10 21:56:13 +0000
+@@ -51,6 +51,7 @@
+ /* mingw32 does not have MemoryBarrier.
+ * MemoryBarrier may be defined as a macro or a function.
+ * Just make a failsafe version for ourselves. */
++#undef MemoryBarrier
+ #ifdef MemoryBarrier
+ #define HBMemoryBarrier MemoryBarrier
+ #else
+diff -upr fontconfig-2.11.0/test/Makefile fontconfig-2.11.0.new/test/Makefile
+--- fontconfig-2.11.0/test/Makefile 2014-01-10 22:09:27 +0000
++++ fontconfig-2.11.0.new/test/Makefile 2014-01-10 22:00:23 +0000
+@@ -78,7 +78,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ build_triplet = i686-pc-mingw32
+ host_triplet = i686-pc-mingw32
+-check_PROGRAMS = test-migration$(EXEEXT) $(am__EXEEXT_1)
++check_PROGRAMS =
+ #am__append_1 = test-pthread
+ subdir = test
+ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+diff -upr fontconfig-2.11.0/test/Makefile.in fontconfig-2.11.0.new/test/Makefile.in
+--- fontconfig-2.11.0/test/Makefile.in 2013-10-11 04:28:47 +0000
++++ fontconfig-2.11.0.new/test/Makefile.in 2014-01-10 21:59:55 +0000
+@@ -78,7 +78,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-check_PROGRAMS = test-migration$(EXEEXT) $(am__EXEEXT_1)
++check_PROGRAMS =
+ @HAVE_PTHREAD_TRUE@am__append_1 = test-pthread
+ subdir = test
+ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
diff --git a/win32/patches/freetype.patch b/win32/patches/freetype.patch
new file mode 100644
index 0000000000..1593340a0c
--- /dev/null
+++ b/win32/patches/freetype.patch
@@ -0,0 +1,18 @@
+diff -upr freetype-2.5.2/src/gzip/ftgzip.c freetype-2.5.2.new/src/gzip/ftgzip.c
+--- freetype-2.5.2/src/gzip/ftgzip.c 2013-08-29 15:53:13 +0000
++++ freetype-2.5.2.new/src/gzip/ftgzip.c 2014-01-10 20:14:37 +0000
+@@ -45,6 +44,14 @@
+ #error "gzip code does not support PIC yet"
+ #endif
+
++#ifndef __int64
++# define __int64 long long
++#endif
++typedef long _off_t;
++typedef _off_t off_t;
++typedef __int64 _off64_t;
++typedef __int64 off64_t;
++
+ #ifdef FT_CONFIG_OPTION_SYSTEM_ZLIB
+
+ #include <zlib.h>
diff --git a/win32/patches/gcr.patch b/win32/patches/gcr.patch
new file mode 100644
index 0000000000..1ba13b8788
--- /dev/null
+++ b/win32/patches/gcr.patch
@@ -0,0 +1,933 @@
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/configure.ac gcr-3.10.1/configure.ac
+--- gcr-3.10.1.old/configure.ac 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/configure.ac 2014-06-20 21:46:28 +0000
+@@ -62,20 +62,44 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET
+ AC_SUBST(GETTEXT_PACKAGE)
+ AM_GLIB_GNU_GETTEXT
+
++dnl ******************************
++dnl Check for Win32
++dnl ******************************
++AC_MSG_CHECKING([for Win32])
++case "$host" in
++*-mingw*)
++ os_win32='yes'
++ AC_CACHE_VAL(ac_cv_have_addrinfo, [ac_cv_have_addrinfo=yes])
++ AC_DEFINE(_WIN32_WINNT, 0x501, [To get getaddrinfo etc declarations])
++ ;;
++*)
++ os_win32='no'
++ ;;
++esac
++AC_MSG_RESULT([$os_win32])
++AM_CONDITIONAL(OS_WIN32, [test $os_win32 = yes])
++
+ # -----------------------------------------------------------------------------
+ # GLib and GTK+ stuff
+
++GIO_PLAT=
++if test "$os_win32" = "yes" ; then
++ GIO_PLAT=gio-windows-2.0
++else
++ GIO_PLAT=gio-unix-2.0
++fi
++
+ PKG_CHECK_MODULES(GLIB,
+ glib-2.0 >= 2.32.0
+ gmodule-no-export-2.0
+ gthread-2.0
+ gobject-2.0
+- gio-2.0 gio-unix-2.0)
++ gio-2.0 $GIO_PLAT)
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+
+ GLIB_GSETTINGS
+-GOBJECT_INTROSPECTION_CHECK([1.34])
++dnl GOBJECT_INTROSPECTION_CHECK([1.34])
+ AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
+ AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)
+
+@@ -107,7 +131,7 @@ fi
+
+ VALA_REQUIRED=0.18.0.22
+
+-VAPIGEN_CHECK($VALA_REQUIRED)
++dnl VAPIGEN_CHECK($VALA_REQUIRED)
+
+ if test "$enable_vala" != "no"; then
+ AC_PATH_PROG([VALAC], [valac], [])
+@@ -120,6 +144,8 @@ AM_CONDITIONAL(HAVE_VALAC, test "x$VALAC
+
+ AC_CHECK_FUNCS(timegm, AC_DEFINE(HAVE_TIMEGM,1,[Have timegm]))
+ AC_CHECK_FUNCS(mlock)
++AC_CHECK_FUNCS(gmtime_r strptime memrchr)
++AC_CHECK_HEADERS([err.h pwd.h syslog.h sys/mman.h sys/wait.h])
+
+ # --------------------------------------------------------------------
+ # p11-kit
+@@ -370,6 +396,9 @@ else
+ valgrind_status="no"
+ fi
+
++AM_CONDITIONAL(HAVE_INTROSPECTION, test "yes" = "no")
++AM_CONDITIONAL(ENABLE_VAPIGEN, test "yes" = "no")
++
+ # ----------------------------------------------------------------------
+
+ GCK_LT_RELEASE=$GCK_CURRENT:$GCK_REVISION:$GCK_AGE
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/egg/egg-armor.c gcr-3.10.1/egg/egg-armor.c
+--- gcr-3.10.1.old/egg/egg-armor.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/egg/egg-armor.c 2014-06-20 21:46:28 +0000
+@@ -60,6 +60,29 @@ EGG_SECURE_DECLARE (armor);
+ #define ARMOR_PREF_END "-----END "
+ #define ARMOR_PREF_END_L 9
+
++#ifndef HAVE_MEMRCHR
++extern void* memrchr (const void *s, int c, size_t n);
++
++void*
++memrchr (const void *s, int c, size_t n)
++{
++ if (n > 0) {
++ const char* p = (const char*) s;
++ const char* q = p + n;
++
++ while (1) {
++ q--; if (q < p || q[0] == (char) c) break;
++ q--; if (q < p || q[0] == (char) c) break;
++ q--; if (q < p || q[0] == (char) c) break;
++ q--; if (q < p || q[0] == (char) c) break;
++ }
++ if (q >= p)
++ return (void*)q;
++ }
++ return NULL;
++}
++#endif
++
+ static void
+ parse_header_lines (const gchar *hbeg,
+ const gchar *hend,
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/egg/egg-asn1x.c gcr-3.10.1/egg/egg-asn1x.c
+--- gcr-3.10.1.old/egg/egg-asn1x.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/egg/egg-asn1x.c 2014-06-20 21:46:28 +0000
+@@ -1929,7 +1929,7 @@ static int
+ two_to_four_digit_year (int year)
+ {
+ time_t now;
+- struct tm tm;
++ GDate *date;
+ int century, current;
+
+ g_return_val_if_fail (year >= 0 && year <= 99, -1);
+@@ -1937,11 +1937,15 @@ two_to_four_digit_year (int year)
+ /* Get the current year */
+ now = time (NULL);
+ g_return_val_if_fail (now >= 0, -1);
+- if (!gmtime_r (&now, &tm))
++ date = g_date_new ();
++ g_date_set_time_t (date, now);
++ if (!g_date_valid (date))
+ g_return_val_if_reached (-1);
+
+- current = (tm.tm_year % 100);
+- century = (tm.tm_year + 1900) - current;
++ century = (g_date_get_year (date) / 100) * 100;
++ current = g_date_get_year (date) - century;
++
++ g_date_free (date);
+
+ /*
+ * Check if it's within 40 years before the
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/egg/egg-secure-memory.c gcr-3.10.1/egg/egg-secure-memory.c
+--- gcr-3.10.1.old/egg/egg-secure-memory.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/egg/egg-secure-memory.c 2014-06-20 21:46:28 +0000
+@@ -32,7 +32,9 @@
+ #include "egg-secure-memory.h"
+
+ #include <sys/types.h>
++#ifdef HAVE_SYS_MMAN_H
+ #include <sys/mman.h>
++#endif
+ #include <stddef.h>
+ #include <string.h>
+ #include <stdio.h>
+@@ -188,9 +190,11 @@ pool_alloc (void)
+
+ /* Create a new pool */
+ if (pool == NULL) {
++#if !defined(_WIN32)
+ len = getpagesize () * 2;
+ pages = mmap (0, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+ if (pages == MAP_FAILED)
++#endif
+ return NULL;
+
+ /* Fill in the block header, and inlude in block list */
+@@ -254,7 +258,9 @@ pool_free (void* item)
+ VALGRIND_DESTROY_MEMPOOL (pool);
+ #endif
+
++#if !defined(_WIN32)
+ munmap (pool, pool->length);
++#endif
+ return;
+ }
+
+@@ -860,11 +866,11 @@ sec_acquire_pages (size_t *sz,
+ ASSERT (*sz);
+ ASSERT (during_tag);
+
++#if defined(HAVE_MLOCK)
+ /* Make sure sz is a multiple of the page size */
+ pgsize = getpagesize ();
+ *sz = (*sz + pgsize -1) & ~(pgsize - 1);
+
+-#if defined(HAVE_MLOCK)
+ pages = mmap (0, *sz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+ if (pages == MAP_FAILED) {
+ if (show_warning && egg_secure_warnings)
+@@ -902,9 +908,9 @@ static void
+ sec_release_pages (void *pages, size_t sz)
+ {
+ ASSERT (pages);
+- ASSERT (sz % getpagesize () == 0);
+
+ #if defined(HAVE_MLOCK)
++ ASSERT (sz % getpagesize () == 0);
+ if (munlock (pages, sz) < 0 && egg_secure_warnings)
+ fprintf (stderr, "couldn't unlock private memory: %s\n", strerror (errno));
+
+@@ -914,7 +920,7 @@ sec_release_pages (void *pages, size_t s
+ DEBUG_ALLOC ("gkr-secure-memory: freed block ", sz);
+
+ #else
+- ASSERT (FALSE);
++ ASSERT (0);
+ #endif
+ }
+
+@@ -937,6 +943,11 @@ sec_block_create (size_t size,
+ if (getenv ("SECMEM_FORCE_FALLBACK"))
+ return NULL;
+
++#ifdef _WIN32
++ /* win32 does not have mlock(), so just fail in that case */
++ return NULL;
++#endif
++
+ block = pool_alloc ();
+ if (!block)
+ return NULL;
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/egg/tests/test-asn1x.c gcr-3.10.1/egg/tests/test-asn1x.c
+--- gcr-3.10.1.old/egg/tests/test-asn1x.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/egg/tests/test-asn1x.c 2014-06-20 21:46:28 +0000
+@@ -27,7 +27,9 @@
+ #include "egg/egg-asn1-defs.h"
+ #include "egg/egg-testing.h"
+
++#ifdef HAVE_PWD_H
+ #include <pwd.h>
++#endif
+ #include <stdlib.h>
+ #include <unistd.h>
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/Makefile.am gcr-3.10.1/gck/Makefile.am
+--- gcr-3.10.1.old/gck/Makefile.am 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/Makefile.am 2014-06-20 21:46:28 +0000
+@@ -1,6 +1,6 @@
+ include $(top_srcdir)/Makefile.decl
+
+-SUBDIRS = . tests
++SUBDIRS = .
+
+ incdir = $(includedir)/gck-@GCK_MAJOR@/gck
+
+@@ -77,16 +77,6 @@ libgck_@GCK_MAJOR@_la_LIBADD = \
+ $(GIO_LIBS) \
+ $(GLIB_LIBS)
+
+-noinst_LTLIBRARIES = libgck-testable.la
+-libgck_testable_la_SOURCES = \
+- gck-mock.c \
+- gck-mock.h \
+- gck-test.c \
+- gck-test.h
+-libgck_testable_la_LIBADD = $(libgck_@GCK_MAJOR@_la_OBJECTS) \
+- $(libgck_@GCK_MAJOR@_la_LIBADD)
+-libgck_testable_la_DEPENDENCIES = $(libgck_@GCK_MAJOR@_la_OBJECTS)
+-
+ gck-marshal.h: gck-marshal.list $(GLIB_GENMARSHAL)
+ $(GLIB_GENMARSHAL) $< --header --prefix=_gck_marshal > $@
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/gck-debug.c gcr-3.10.1/gck/gck-debug.c
+--- gcr-3.10.1.old/gck/gck-debug.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/gck-debug.c 2014-06-20 21:46:28 +0000
+@@ -33,6 +33,11 @@
+
+ #include <unistd.h>
+
++#ifdef G_OS_WIN32
++
++#include <windows.h>
++#endif
++
+ #ifdef WITH_DEBUG
+
+ static gsize initialized_flags = 0;
+@@ -69,21 +74,30 @@ on_gck_log_debug (const gchar *log_domai
+ {
+ GString *gstring;
+ const gchar *progname;
++#ifdef G_OS_WIN32
++ DWORD pid = GetCurrentProcessId ();
++#else
++ pid_t pid = getpid ();
++#endif
+
+ gstring = g_string_new (NULL);
+
+ progname = g_get_prgname ();
+ g_string_append_printf (gstring, "(%s:%lu): %s-DEBUG: %s\n",
+ progname ? progname : "process",
+- (gulong)getpid (), log_domain,
++ (gulong) pid, log_domain,
+ message ? message : "(NULL) message");
+
++
++#ifdef G_OS_WIN32
++ g_print ("%s", gstring->str);
++#else
+ /*
+ * Give up on debug messages if stdout got lost.
+ */
+ if (write (1, gstring->str, gstring->len) != gstring->len)
+ current_flags = 0;
+-
++#endif
+ g_string_free (gstring, TRUE);
+ }
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/gck-slot.c gcr-3.10.1/gck/gck-slot.c
+--- gcr-3.10.1.old/gck/gck-slot.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/gck-slot.c 2014-06-20 21:46:28 +0000
+@@ -606,7 +606,7 @@ _gck_token_info_from_pkcs11 (CK_TOKEN_IN
+ {
+ GckTokenInfo *token_info;
+ gchar *string;
+- struct tm tm;
++ GTimeVal tv;
+
+ token_info = g_new0 (GckTokenInfo, 1);
+ token_info->label = gck_string_from_chars (info->label, sizeof (info->label));
+@@ -634,10 +634,12 @@ _gck_token_info_from_pkcs11 (CK_TOKEN_IN
+ /* Parse the time into seconds since epoch */
+ if (info->flags & CKF_CLOCK_ON_TOKEN) {
+ string = g_strndup ((gchar*)info->utcTime, MIN (14, sizeof (info->utcTime)));
+- if (!strptime (string, "%Y%m%d%H%M%S", &tm))
++ /* Transform into an ISO-8601 string */
++ string = g_strconcat (g_strndup (string,8), "T", g_strndup (string+8,6), "Z", NULL);
++ if (!g_time_val_from_iso8601 (string, &tv))
+ token_info->utc_time = -1;
+ else
+- token_info->utc_time = timegm (&tm);
++ token_info->utc_time = tv.tv_sec;
+ g_free (string);
+ } else {
+ token_info->utc_time = -1;
+@@ -649,8 +651,8 @@ _gck_token_info_from_pkcs11 (CK_TOKEN_IN
+ void
+ _gck_token_info_to_pkcs11 (GckTokenInfo *token_info, CK_TOKEN_INFO_PTR info)
+ {
+- gchar buffer[64];
+- struct tm tm;
++ gchar *buffer;
++ GDateTime *datetime = NULL;
+ time_t tim;
+ gsize len;
+
+@@ -690,9 +692,12 @@ _gck_token_info_to_pkcs11 (GckTokenInfo
+ /* Parse the time into seconds since epoch */
+ if (token_info->flags & CKF_CLOCK_ON_TOKEN) {
+ tim = token_info->utc_time;
+- if (!gmtime_r (&tim, &tm))
++ datetime = g_date_time_new_from_unix_utc (tim);
++ if (datetime == NULL)
+ g_return_if_reached ();
+- len = strftime (buffer, sizeof (buffer), "%Y%m%d%H%M%S", &tm);
++ buffer = g_date_time_format (datetime, "%Y%m%d%H%M%S");
++ len = strlen (buffer);
++ g_date_time_unref (datetime);
+ g_return_if_fail (len == sizeof (info->utcTime));
+ memcpy (info->utcTime, buffer, sizeof (info->utcTime));
+ } else {
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/tests/test-gck-crypto.c gcr-3.10.1/gck/tests/test-gck-crypto.c
+--- gcr-3.10.1.old/gck/tests/test-gck-crypto.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/tests/test-gck-crypto.c 2014-06-20 21:46:28 +0000
+@@ -57,7 +57,11 @@ setup (Test *test, gconstpointer unused)
+ GckSlot *slot;
+
+ /* Successful load */
++#ifdef G_OS_WIN32
++ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.dll", NULL, &err);
++#else
+ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
++#endif
+ g_assert_no_error (err);
+ g_assert (GCK_IS_MODULE (test->module));
+ g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/tests/test-gck-enumerator.c gcr-3.10.1/gck/tests/test-gck-enumerator.c
+--- gcr-3.10.1.old/gck/tests/test-gck-enumerator.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/tests/test-gck-enumerator.c 2014-06-20 21:46:28 +0000
+@@ -50,7 +50,11 @@ setup (Test *test, gconstpointer unused)
+ GError *err = NULL;
+
+ /* Successful load */
++#ifdef G_OS_WIN32
++ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.dll", NULL, &err);
++#else
+ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
++#endif
+ g_assert_no_error (err);
+ g_assert (GCK_IS_MODULE (test->module));
+ g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/tests/test-gck-module.c gcr-3.10.1/gck/tests/test-gck-module.c
+--- gcr-3.10.1.old/gck/tests/test-gck-module.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/tests/test-gck-module.c 2014-06-20 21:46:28 +0000
+@@ -42,7 +42,11 @@ setup (Test *test, gconstpointer unused)
+ GError *err = NULL;
+
+ /* Successful load */
++#ifdef G_OS_WIN32
++ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.dll", NULL, &err);
++#else
+ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
++#endif
+ g_assert_no_error (err);
+ g_assert (test->module);
+ g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
+@@ -71,7 +75,11 @@ test_initialize_async (void)
+ GError *error = NULL;
+
+ /* Shouldn't be able to load modules */
++#ifdef G_OS_WIN32
++ gck_module_initialize_async (BUILDDIR "/.libs/libmock-test-module.dll",
++#else
+ gck_module_initialize_async (BUILDDIR "/.libs/libmock-test-module.so",
++#endif
+ NULL, fetch_async_result, &result);
+
+ egg_test_wait_until (500);
+@@ -101,7 +109,11 @@ test_invalid_modules (Test *test, gconst
+ g_clear_error (&error);
+
+ /* Shouldn't be able to load any file successfully */
++#ifdef G_OS_WIN32
++ invalid = gck_module_initialize ("c:\\windows\\system32\\shell32.dll", NULL, &error);
++#else
+ invalid = gck_module_initialize ("/usr/lib/libm.so", NULL, &error);
++#endif
+ g_assert_error (error, GCK_ERROR, (int)CKR_GCK_MODULE_PROBLEM);
+ g_assert (invalid == NULL);
+
+@@ -139,7 +151,11 @@ test_module_props (Test *test, gconstpoi
+
+ g_object_get (test->module, "path", &path, NULL);
+ g_assert (path != NULL && "no module-path");
++#ifdef G_OS_WIN32
++ g_assert (strcmp (BUILDDIR "/.libs/libmock-test-module.dll", path) == 0 && "module path wrong");
++#else
+ g_assert (strcmp (BUILDDIR "/.libs/libmock-test-module.so", path) == 0 && "module path wrong");
++#endif
+ g_free (path);
+ }
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/tests/test-gck-modules.c gcr-3.10.1/gck/tests/test-gck-modules.c
+--- gcr-3.10.1.old/gck/tests/test-gck-modules.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/tests/test-gck-modules.c 2014-06-20 21:46:28 +0000
+@@ -48,7 +48,11 @@ setup (Test *test, gconstpointer unused)
+ GError *err = NULL;
+
+ /* Successful load */
++#ifdef G_OS_WIN32
++ module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.dll", NULL, &err);
++#else
+ module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
++#endif
+ g_assert_no_error (err);
+ g_assert (GCK_IS_MODULE (module));
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/tests/test-gck-object.c gcr-3.10.1/gck/tests/test-gck-object.c
+--- gcr-3.10.1.old/gck/tests/test-gck-object.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/tests/test-gck-object.c 2014-06-20 21:46:28 +0000
+@@ -50,7 +50,11 @@ setup (Test *test, gconstpointer unused)
+ GList *slots;
+
+ /* Successful load */
++#ifdef G_OS_WIN32
++ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.dll", NULL, &err);
++#else
+ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
++#endif
+ g_assert_no_error (err);
+ g_assert (GCK_IS_MODULE (test->module));
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/tests/test-gck-session.c gcr-3.10.1/gck/tests/test-gck-session.c
+--- gcr-3.10.1.old/gck/tests/test-gck-session.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/tests/test-gck-session.c 2014-06-20 21:46:28 +0000
+@@ -50,7 +50,11 @@ setup (Test *test, gconstpointer unused)
+ GList *slots;
+
+ /* Successful load */
++#ifdef G_OS_WIN32
++ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.dll", NULL, &err);
++#else
+ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
++#endif
+ g_assert_no_error (err);
+ g_assert (GCK_IS_MODULE (test->module));
+ g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gck/tests/test-gck-slot.c gcr-3.10.1/gck/tests/test-gck-slot.c
+--- gcr-3.10.1.old/gck/tests/test-gck-slot.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gck/tests/test-gck-slot.c 2014-06-20 21:46:28 +0000
+@@ -43,7 +43,11 @@ setup (Test *test, gconstpointer unused)
+ GList *slots;
+
+ /* Successful load */
++#ifdef G_OS_WIN32
++ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.dll", NULL, &err);
++#else
+ test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
++#endif
+ g_assert_no_error (err);
+ g_assert (GCK_IS_MODULE (test->module));
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gcr/Makefile.am gcr-3.10.1/gcr/Makefile.am
+--- gcr-3.10.1.old/gcr/Makefile.am 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gcr/Makefile.am 2014-06-20 21:46:28 +0000
+@@ -1,6 +1,6 @@
+ include $(top_srcdir)/Makefile.decl
+
+-SUBDIRS = . tests
++SUBDIRS = .
+
+ incdir = $(includedir)/gcr-@GCR_MAJOR@/gcr
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gcr/gcr-gnupg-collection.c gcr-3.10.1/gcr/gcr-gnupg-collection.c
+--- gcr-3.10.1.old/gcr/gcr-gnupg-collection.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gcr/gcr-gnupg-collection.c 2014-06-20 21:46:28 +0000
+@@ -36,7 +36,9 @@
+ #include "gcr-record.h"
+ #include "gcr-util.h"
+
++#ifdef HAVE_SYS_WAIT_H
+ #include <sys/wait.h>
++#endif
+ #include <string.h>
+
+ enum {
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gcr/gcr-gnupg-process.c gcr-3.10.1/gcr/gcr-gnupg-process.c
+--- gcr-3.10.1.old/gcr/gcr-gnupg-process.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gcr/gcr-gnupg-process.c 2014-06-20 21:46:28 +0000
+@@ -31,7 +31,12 @@
+
+ #include <glib/gi18n-lib.h>
+
++#ifdef HAVE_SYS_WAIT_H
+ #include <sys/wait.h>
++#endif
++#ifdef G_OS_WIN32
++#include <windows.h>
++#endif
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <string.h>
+@@ -854,12 +859,18 @@ on_gnupg_process_child_exited (GPid pid,
+ gint code;
+ guint i;
+
++#if defined (G_OS_UNIX)
+ _gcr_debug ("process exited: %d", (int)pid);
++#elif defined (G_OS_WIN32)
++ DWORD real_pid = GetProcessId (pid);
++ _gcr_debug ("process exited: %d", (int)real_pid);
++#endif
+
+ g_spawn_close_pid (gnupg_source->child_pid);
+ gnupg_source->child_pid = 0;
+ gnupg_source->child_sig = 0;
+
++#ifndef G_OS_WIN32
+ if (WIFEXITED (status)) {
+ code = WEXITSTATUS (status);
+ if (code != 0) {
+@@ -873,6 +884,7 @@ on_gnupg_process_child_exited (GPid pid,
+ error = g_error_new (G_SPAWN_ERROR, G_SPAWN_ERROR_FAILED,
+ _("Gnupg process was terminated with signal: %d"), code);
+ }
++#endif
+
+ /* Take this as the async result error */
+ if (error && !self->pv->error) {
+@@ -891,11 +903,16 @@ on_gnupg_process_child_exited (GPid pid,
+ }
+
+ complete_source_is_done (gnupg_source);
++
++#ifdef G_OS_WIN32
++ g_spawn_close_pid (pid);
++#endif
+ }
+
+ static void
+ on_gnupg_process_child_setup (gpointer user_data)
+ {
++#ifdef G_OS_UNIX
+ int *child_fds = user_data;
+ long val;
+ guint i;
+@@ -911,6 +928,7 @@ on_gnupg_process_child_setup (gpointer u
+ fcntl (child_fds[i], F_SETFD, val & ~FD_CLOEXEC);
+ }
+ }
++#endif
+ }
+
+ static void
+@@ -929,9 +947,16 @@ on_cancellable_cancelled (GCancellable *
+
+ /* Try and kill the child process */
+ if (gnupg_source->child_pid) {
++#if defined(G_OS_UNIX)
+ _gcr_debug ("sending term signal to process: %d",
+ (int)gnupg_source->child_pid);
+ kill (gnupg_source->child_pid, SIGTERM);
++#elif defined(G_OS_WIN32)
++ DWORD real_pid = GetProcessId (gnupg_source->child_pid);
++ _gcr_debug ("sending term signal to process: %d",
++ (int)real_pid);
++ TerminateProcess (gnupg_source->child_pid, 0);
++#endif
+ }
+ }
+
+@@ -1000,14 +1025,22 @@ _gcr_gnupg_process_run_async (GcrGnupgPr
+ child_fds[FD_ERROR] = 2;
+
+ if (flags & GCR_GNUPG_PROCESS_WITH_STATUS) {
++#if defined(G_OS_UNIX)
+ if (pipe (status_fds) < 0)
++#elif defined(G_OS_WIN32)
++ if (_pipe (status_fds, 4096, _O_BINARY) < 0)
++#endif
+ g_return_if_reached ();
+ child_fds[FD_STATUS] = status_fds[1];
+ g_ptr_array_add (args, g_strdup ("--status-fd"));
+ g_ptr_array_add (args, g_strdup_printf ("%d", child_fds[FD_STATUS]));
+ }
+ if (flags & GCR_GNUPG_PROCESS_WITH_ATTRIBUTES) {
++#if defined(G_OS_UNIX)
+ if (pipe (attribute_fds) < 0)
++#elif defined(G_OS_WIN32)
++ if (_pipe (attribute_fds, 4096, _O_BINARY) < 0)
++#endif
+ g_return_if_reached ();
+ child_fds[FD_ATTRIBUTE] = attribute_fds[1];
+ g_ptr_array_add (args, g_strdup ("--attribute-fd"));
+@@ -1036,11 +1069,11 @@ _gcr_gnupg_process_run_async (GcrGnupgPr
+
+ if (_gcr_debugging) {
+ gchar *command = g_strjoinv (" ", (gchar**)args->pdata);
+- gchar *environ = g_strjoinv (", ", (gchar**)envs->pdata);
++ gchar *environment = g_strjoinv (", ", (gchar**)envs->pdata);
+ _gcr_debug ("running command: %s", command);
+- _gcr_debug ("process environment: %s", environ);
++ _gcr_debug ("process environment: %s", environment);
+ g_free (command);
+- g_free (environ);
++ g_free (environment);
+ }
+
+ g_spawn_async_with_pipes (self->pv->directory, (gchar**)args->pdata,
+@@ -1068,7 +1101,12 @@ _gcr_gnupg_process_run_async (GcrGnupgPr
+ return;
+ }
+
++#if defined (G_OS_UNIX)
+ _gcr_debug ("process started: %d", (int)pid);
++#elif defined (G_OS_WIN32)
++ DWORD real_pid = GetProcessId (pid);
++ _gcr_debug ("process started: %d", (int)real_pid);
++#endif
+
+ source = g_source_new (&gnupg_source_funcs, sizeof (GnupgSource));
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/gcr/gcr-record.c gcr-3.10.1/gcr/gcr-record.c
+--- gcr-3.10.1.old/gcr/gcr-record.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/gcr/gcr-record.c 2014-06-20 21:46:28 +0000
+@@ -597,7 +597,9 @@ _gcr_record_get_date (GcrRecord *record,
+ const gchar *raw;
+ gulong result;
+ gchar *end = NULL;
+- struct tm tm;
++ gchar **string;
++ int year, month, day;
++ GDateTime *dt = NULL;
+
+ g_return_val_if_fail (record, NULL);
+
+@@ -615,14 +617,20 @@ _gcr_record_get_date (GcrRecord *record,
+ }
+
+ /* Try to parse as a date */
+- memset (&tm, 0, sizeof (tm));
+- end = strptime (raw, "%Y-%m-%d", &tm);
+- if (!end || end[0]) {
++ string = g_strsplit (raw, "-", 3);
++ if ((string[0] != NULL) && (string[1] != NULL) && (string[2] != NULL)) {
++ year = strtol (string[0], NULL, 10);
++ month = strtol (string[1], NULL, 10);
++ day = strtol (string[2], NULL, 10);
++ dt = g_date_time_new_utc (year, month, day, 0, 0, 0);
++ }
++ g_strfreev (string);
++ if (dt == NULL) {
+ _gcr_debug ("invalid date value: %s", raw);
+ return NULL;
+ }
+
+- return g_date_time_new_utc (tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, 0, 0, 0);
++ return dt;
+ }
+
+ /**
+@@ -860,4 +868,4 @@ _gcr_records_parse_colons (gconstpointer
+ g_free (lines);
+
+ return result;
+-}
++}
+\ No newline at end of file
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/ui/Makefile.am gcr-3.10.1/ui/Makefile.am
+--- gcr-3.10.1.old/ui/Makefile.am 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/ui/Makefile.am 2014-06-20 21:46:28 +0000
+@@ -1,6 +1,6 @@
+ include $(top_srcdir)/Makefile.decl
+
+-SUBDIRS = . icons tests
++SUBDIRS = . icons
+
+ incdir = $(includedir)/gcr-@GCR_MAJOR@/ui
+
+@@ -51,11 +51,13 @@ libgcr_ui_@GCR_MAJOR@_la_LIBADD = \
+ $(GTK_LIBS) \
+ $(NULL)
+
++if !OS_WIN32
+ # libgcr-3.so (and friends) symlink to libgcr-ui-3.so for compatibility raisons
+ install-exec-hook:
+ $(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui-@GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr-@GCR_MAJOR@.so
+ $(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui-@GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr-@GCR_MAJOR@.so.@GCR_CURRENT@
+ $(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui-@GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr-@GCR_MAJOR@.so.@GCR_CURRENT@.0.0
++endif
+
+ uidir = $(datadir)/gcr-@GCR_MAJOR@/ui/
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/ui/gcr-prompt-dialog.c gcr-3.10.1/ui/gcr-prompt-dialog.c
+--- gcr-3.10.1.old/ui/gcr-prompt-dialog.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/ui/gcr-prompt-dialog.c 2014-06-20 21:46:28 +0000
+@@ -31,7 +31,13 @@
+ #include "gcr-secure-entry-buffer.h"
+
+ #include <gtk/gtk.h>
++#if defined(GDK_WINDOWING_X11)
+ #include <gdk/gdkx.h>
++#endif
++#if defined(GDK_WINDOWING_WIN32)
++#include <gdk/gdkwin32.h>
++#include <windows.h>
++#endif
+ #include <glib/gi18n.h>
+
+ /**
+@@ -152,12 +158,21 @@ update_transient_for (GcrPromptDialog *s
+ }
+
+ display = gtk_widget_get_display (GTK_WIDGET (self));
++#if defined(GDK_WINDOWING_X11)
+ transient_for = gdk_x11_window_foreign_new_for_display (display, (Window)handle);
++#elif defined(GDK_WINDOWING_WIN32)
++ transient_for = gdk_win32_window_foreign_new_for_display (display, (HWND)handle);
++#endif
+ if (transient_for == NULL) {
+ g_warning ("caller-window property doesn't represent a window on current display: %s",
+ self->pv->caller_window);
+ } else {
++#if defined(GDK_WINDOWING_X11)
+ gdk_window_set_transient_for (window, transient_for);
++#elif defined(GDK_WINDOWING_WIN32)
++ HWND chandle = gdk_win32_window_get_handle (window);
++ SetWindowLongPtr (chandle, GWLP_HWNDPARENT, (LONG_PTR)handle);
++#endif
+ g_object_unref (transient_for);
+ }
+
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/ui/gcr-prompter-tool.c gcr-3.10.1/ui/gcr-prompter-tool.c
+--- gcr-3.10.1.old/ui/gcr-prompter-tool.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/ui/gcr-prompter-tool.c 2014-06-20 21:46:28 +0000
+@@ -30,13 +30,17 @@
+
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
++#ifdef GDK_WINDOWING_X11
+ #include <gdk/gdkx.h>
++#endif
+ #include <pango/pango.h>
+
+ #include <locale.h>
+ #include <stdlib.h>
+ #include <string.h>
++#ifdef HAVE_SYSLOG_H
+ #include <syslog.h>
++#endif
+
+ #define QUIT_TIMEOUT 10
+
+@@ -138,6 +142,7 @@ log_handler (const gchar *log_domain,
+ const gchar *message,
+ gpointer user_data)
+ {
++#ifdef HAVE_SYSLOG_H
+ int level;
+
+ /* Note that crit and err are the other way around in syslog */
+@@ -171,6 +176,7 @@ log_handler (const gchar *log_domain,
+ syslog (level, "%s: %s", log_domain, message);
+ else
+ syslog (level, "%s", message);
++#endif
+
+ /* And then to default handler for aborting and stuff like that */
+ g_log_default_handler (log_domain, log_level, message, user_data);
+@@ -179,9 +185,11 @@ log_handler (const gchar *log_domain,
+ static void
+ printerr_handler (const gchar *string)
+ {
++#ifdef HAVE_SYSLOG_H
+ /* Print to syslog and stderr */
+ syslog (LOG_WARNING, "%s", string);
+ fprintf (stderr, "%s", string);
++#endif
+ }
+
+ static void
+@@ -191,7 +199,9 @@ prepare_logging ()
+ G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING |
+ G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO;
+
++#ifdef HAVE_SYSLOG_H
+ openlog ("gcr-prompter", LOG_PID, LOG_AUTH);
++#endif
+
+ g_log_set_handler (NULL, flags, log_handler, NULL);
+ g_log_set_handler ("Glib", flags, log_handler, NULL);
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/ui/gcr-ui.pc.in gcr-3.10.1/ui/gcr-ui.pc.in
+--- gcr-3.10.1.old/ui/gcr-ui.pc.in 2013-04-21 12:31:47 +0000
++++ gcr-3.10.1/ui/gcr-ui.pc.in 2014-06-20 22:22:58 +0000
+@@ -11,5 +11,5 @@ Description: GObject and GUI library for
+ Version: @VERSION@
+ Requires: glib-2.0 gobject-2.0 gio-2.0 gtk+-3.0 gcr-base-@GCR_MAJOR@ gck-@GCK_MAJOR@
+ Requires.private: p11-kit-1
+-Libs: -L${libdir} -lgcr-@GCR_MAJOR@
++Libs: -L${libdir} -lgcr-ui-@GCR_MAJOR@
+ Cflags: -I${includedir}/gcr-@GCR_MAJOR@
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/ui/tests/frob-prompt.c gcr-3.10.1/ui/tests/frob-prompt.c
+--- gcr-3.10.1.old/ui/tests/frob-prompt.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/ui/tests/frob-prompt.c 2014-06-20 21:46:28 +0000
+@@ -27,15 +27,45 @@
+ #include "gcr/gcr-base.h"
+
+ #include <gtk/gtk.h>
++#ifdef GDK_WINDOWING_X11
+ #include <gdk/gdkx.h>
++#endif
++#ifdef GDK_WINDOWING_WIN32
++#include <gdk/gdkwin32.h>
++#endif
+
++#ifdef HAVE_ERR_H
+ #include <err.h>
++#else
++#include <errno.h>
++#endif
++#include <stdlib.h>
+
+ static const gchar *file_name = NULL;
+ static gchar *prompt_type = NULL;
+ static gint prompt_delay = 0;
+ static gboolean prompt_window = FALSE;
+
++#ifndef HAVE_ERR_H
++extern void errx (int eval, char *format, ...);
++
++void errx (int eval, char *format, ...)
++{
++ gchar *err_s;
++
++ va_list ap;
++ va_start (ap, format);
++ vsprintf (err_s, format, ap);
++ va_end (ap);
++
++ err_s = g_strconcat (g_get_prgname (), ": ", g_strdup (err_s), "\n", NULL);
++ g_printerr (err_s);
++ g_free (err_s);
++
++ exit (eval);
++}
++#endif
++
+ static gboolean
+ on_delay_timeout (gpointer data)
+ {
+@@ -80,7 +110,11 @@ prompt_perform (GtkWidget *parent)
+ errx (1, "couldn't create prompt: %s", error->message);
+
+ if (parent) {
++#if defined(GDK_WINDOWING_X11)
+ caller_id = g_strdup_printf ("%lu", (gulong)GDK_WINDOW_XID (gtk_widget_get_window (parent)));
++#elif defined(GDK_WINDOWING_WIN32)
++ caller_id = g_strdup_printf ("%lu", (gulong)GDK_WINDOW_HWND (gtk_widget_get_window (parent)));
++#endif
+ gcr_prompt_set_caller_window (GCR_PROMPT (prompt), caller_id);
+ g_free (caller_id);
+ }
+diff -upr -x .deps -x .libs -x '*.la' gcr-3.10.1.old/ui/tests/frob-system-prompt.c gcr-3.10.1/ui/tests/frob-system-prompt.c
+--- gcr-3.10.1.old/ui/tests/frob-system-prompt.c 2014-06-20 22:20:25 +0000
++++ gcr-3.10.1/ui/tests/frob-system-prompt.c 2014-06-20 21:46:28 +0000
+@@ -28,7 +28,12 @@
+ #include "egg/egg-testing.h"
+
+ #include <gtk/gtk.h>
++#ifdef GDK_WINDOWING_X11
+ #include <gdk/gdkx.h>
++#endif
++#ifdef GDK_WINDOWING_WIN32
++#include <gdk/gdkwin32.h>
++#endif
+
+ #include <unistd.h>
+ #include <string.h>
+@@ -56,7 +61,11 @@ on_prompt_clicked (GtkToolButton *button
+ gcr_prompt_set_message (GCR_PROMPT (prompt), "This is the message");
+ gcr_prompt_set_description (GCR_PROMPT (prompt), "This is the description");
+
++#if defined(GDK_WINDOWING_X11)
+ caller_id = g_strdup_printf ("%lu", (gulong)GDK_WINDOW_XID (gtk_widget_get_window (parent)));
++#elif defined(GDK_WINDOWING_WIN32)
++ caller_id = g_strdup_printf ("%lu", (gulong)GDK_WINDOW_HWND (gtk_widget_get_window (parent)));
++#endif
+ gcr_prompt_set_caller_window (GCR_PROMPT (prompt), caller_id);
+ g_free (caller_id);
+
diff --git a/win32/patches/gettext.patch b/win32/patches/gettext.patch
new file mode 100644
index 0000000000..a3b5385bf3
--- /dev/null
+++ b/win32/patches/gettext.patch
@@ -0,0 +1,97 @@
+diff -upr gettext-0.18.3.1.old/gettext-tools/gnulib-lib/Makefile gettext-0.18.3.1/gettext-tools/gnulib-lib/Makefile
+--- gettext-0.18.3.1.old/gettext-tools/gnulib-lib/Makefile 2014-05-08 15:10:25 +0000
++++ gettext-0.18.3.1/gettext-tools/gnulib-lib/Makefile 2014-05-07 19:38:11 +0000
+@@ -129,7 +129,7 @@ am__append_12 = $(LTLIBCROCO) $(LTLIBGLI
+ #am__append_17 = libxml_rpl.la
+ #am__append_18 = libxml_rpl.la
+ #am__append_19 = term-styled-ostream.c
+-am__append_20 = ../woe32dll/c++term-styled-ostream.cc
++#am__append_20 = ../woe32dll/c++term-styled-ostream.cc
+ am__append_21 = uniconv/u8-conv-from-enc.c
+ am__append_22 = unilbrk/u8-possible-linebreaks.c
+ am__append_23 = unilbrk/u8-width-linebreaks.c
+@@ -475,7 +475,7 @@ am__libgettextlib_la_SOURCES_DIST = copy
+ findprog.h findprog.c fstrcmp.h fstrcmp.c full-write.h \
+ full-write.c fwriteerror.h fwriteerror.c gcd.h gcd.c gettext.h \
+ ../woe32dll/gettextlib-exports.c hash.h hash.c html-ostream.c \
+- html-styled-ostream.c ../woe32dll/c++html-styled-ostream.cc \
++ \
+ javacomp.h javacomp.c javaexec.h javaexec.c javaversion.h \
+ javaversion.c gl_linkedhash_list.h gl_linkedhash_list.c \
+ gl_anyhash_list1.h gl_anyhash_list2.h gl_anylinked_list1.h \
+@@ -490,8 +490,8 @@ am__libgettextlib_la_SOURCES_DIST = copy
+ sig-handler.c size_max.h spawn-pipe.h spawn-pipe.c striconv.h \
+ striconv.c striconveh.h striconveh.c striconveha.h \
+ striconveha.c strnlen1.h strnlen1.c styled-ostream.c \
+- tempname.c term-ostream.c term-styled-ostream.c \
+- ../woe32dll/c++term-styled-ostream.cc glthread/threadlib.c \
++ tempname.c term-ostream.c \
++ glthread/threadlib.c \
+ glthread/tls.h glthread/tls.c tmpdir.h tmpdir.c trim.c \
+ uniconv/u8-conv-from-enc.c unilbrk/lbrktables.c \
+ unilbrk/u8-possible-linebreaks.c unilbrk/u8-width-linebreaks.c \
+@@ -509,9 +509,9 @@ am__libgettextlib_la_SOURCES_DIST = copy
+ xvasprintf.c xasprintf.c
+ am__objects_1 = ../woe32dll/gettextlib-exports.lo
+ #am__objects_2 = html-styled-ostream.lo
+-am__objects_3 = ../woe32dll/c++html-styled-ostream.lo
++#am__objects_3 = ../woe32dll/c++html-styled-ostream.lo
+ #am__objects_4 = term-styled-ostream.lo
+-am__objects_5 = ../woe32dll/c++term-styled-ostream.lo
++#am__objects_5 = ../woe32dll/c++term-styled-ostream.lo
+ am__objects_6 = uniconv/u8-conv-from-enc.lo
+ am__objects_7 = unilbrk/u8-possible-linebreaks.lo
+ am__objects_8 = unilbrk/u8-width-linebreaks.lo
+@@ -545,7 +545,7 @@ am_libgettextlib_la_OBJECTS = copy-acl.l
+ fd-hook.lo fd-ostream.lo fd-safer-flag.lo dup-safer-flag.lo \
+ file-ostream.lo findprog.lo fstrcmp.lo full-write.lo \
+ fwriteerror.lo gcd.lo $(am__objects_1) hash.lo html-ostream.lo \
+- $(am__objects_2) $(am__objects_3) javacomp.lo javaexec.lo \
++ $(am__objects_2) javacomp.lo javaexec.lo \
+ javaversion.lo gl_linkedhash_list.lo gl_list.lo \
+ localcharset.lo localename.lo glthread/lock.lo malloca.lo \
+ mbchar.lo mbiter.lo mbslen.lo mbsstr.lo mbswidth.lo mbuiter.lo \
+@@ -555,7 +555,7 @@ am_libgettextlib_la_OBJECTS = copy-acl.l
+ safe-read.lo safe-write.lo sh-quote.lo sig-handler.lo \
+ spawn-pipe.lo striconv.lo striconveh.lo striconveha.lo \
+ strnlen1.lo styled-ostream.lo tempname.lo term-ostream.lo \
+- $(am__objects_4) $(am__objects_5) glthread/threadlib.lo \
++ $(am__objects_4) glthread/threadlib.lo \
+ glthread/tls.lo tmpdir.lo trim.lo $(am__objects_6) \
+ unilbrk/lbrktables.lo $(am__objects_7) $(am__objects_8) \
+ unilbrk/ulc-common.lo $(am__objects_9) $(am__objects_10) \
+diff -upr gettext-0.18.3.1.old/gettext-tools/src/write-catalog.c gettext-0.18.3.1/gettext-tools/src/write-catalog.c
+--- gettext-0.18.3.1.old/gettext-tools/src/write-catalog.c 2012-12-10 01:59:06 +0000
++++ gettext-0.18.3.1/gettext-tools/src/write-catalog.c 2014-05-07 19:41:40 +0000
+@@ -240,7 +240,7 @@ message catalog has plural form translat
+ }
+
+ style_file_prepare ();
+- stream = term_styled_ostream_create (fd, filename, style_file_name);
++ stream = NULL; /*term_styled_ostream_create (fd, filename, style_file_name);*/
+ if (stream == NULL)
+ stream = fd_ostream_create (fd, filename, true);
+ output_syntax->print (mdlp, stream, page_width, debug);
+@@ -286,11 +286,11 @@ message catalog has plural form translat
+ stream = file_ostream_create (fp);
+
+ #if ENABLE_COLOR
+- if (output_syntax->supports_color && color_mode == color_html)
++ /*if (output_syntax->supports_color && color_mode == color_html)
+ {
+ html_styled_ostream_t html_stream;
+
+- /* Convert mdlp to UTF-8 encoding. */
++ /* Convert mdlp to UTF-8 encoding. * /
+ if (mdlp->encoding != po_charset_utf8)
+ {
+ mdlp = msgdomain_list_copy (mdlp, 0);
+@@ -302,7 +302,7 @@ message catalog has plural form translat
+ output_syntax->print (mdlp, html_stream, page_width, debug);
+ ostream_free (html_stream);
+ }
+- else
++ else*/
+ #endif
+ {
+ output_syntax->print (mdlp, stream, page_width, debug);
diff --git a/win32/patches/gnutls.patch b/win32/patches/gnutls.patch
new file mode 100644
index 0000000000..6960842292
--- /dev/null
+++ b/win32/patches/gnutls.patch
@@ -0,0 +1,21 @@
+diff -upr gnutls-3.2.12.old/lib/libgnutls.map gnutls-3.2.12/lib/libgnutls.map
+--- gnutls-3.2.12.old/lib/libgnutls.map 2014-03-24 22:56:11 +0000
++++ gnutls-3.2.12/lib/libgnutls.map 2014-03-23 20:24:12 +0000
+@@ -936,6 +936,7 @@ GNUTLS_PRIVATE {
+ _gnutls_read_uint24;
+ _gnutls_get_cred;
+ _gnutls_recv_int;
++ _gnutls_vasprintf;
+ # Internal symbols needed by libgnutls-openssl:
+ _gnutls_pkix1_asn;
+ _gnutls_x509_parse_dn_oid;
+diff -upr gnutls-3.2.12.old/lib/vasprintf.c gnutls-3.2.12/lib/vasprintf.c
+--- gnutls-3.2.12.old/lib/vasprintf.c 2014-03-24 22:56:11 +0000
++++ gnutls-3.2.12/lib/vasprintf.c 2014-03-23 20:24:12 +0000
+@@ -1,5 +1,6 @@
+ #include <config.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include "vasprintf.h"
+
+ #ifndef HAVE_VASPRINTF
diff --git a/win32/patches/gtk-doc.m4 b/win32/patches/gtk-doc.m4
new file mode 100644
index 0000000000..36755432b5
--- /dev/null
+++ b/win32/patches/gtk-doc.m4
@@ -0,0 +1,88 @@
+dnl -*- mode: autoconf -*-
+
+# serial 2
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+
+ ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"])
+ AC_MSG_CHECKING([for gtk-doc])
+ PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no])
+ AC_MSG_RESULT($have_gtk_doc)
+
+ if test "$have_gtk_doc" = "no"; then
+ AC_MSG_WARN([
+ You will not be able to create source packages with 'make dist'
+ because $gtk_doc_requires is not found.])
+ fi
+
+ dnl check for tools we added during development
+ dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that
+ dnl may not be writable by the user. Currently, automake requires that the
+ dnl test name must end in '.test'.
+ dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638
+ AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test])
+ AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check])
+ AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
+ AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
+
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH([html-dir],
+ AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST([HTML_DIR])
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE([gtk-doc],
+ AS_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [[default=no]]]),,
+ [enable_gtk_doc=no])
+
+ AC_MSG_CHECKING([whether to build gtk-doc documentation])
+ AC_MSG_RESULT($enable_gtk_doc)
+
+ if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then
+ AC_MSG_ERROR([
+ You must have $gtk_doc_requires installed to build documentation for
+ $PACKAGE_NAME. Please install gtk-doc or disable building the
+ documentation by adding '--disable-gtk-doc' to '[$]0'.])
+ fi
+
+ dnl don't check for glib if we build glib
+ if test "x$PACKAGE_NAME" != "xglib"; then
+ dnl don't fail if someone does not have glib
+ PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:])
+ fi
+
+ dnl enable/disable output formats
+ AC_ARG_ENABLE([gtk-doc-html],
+ AS_HELP_STRING([--enable-gtk-doc-html],
+ [build documentation in html format [[default=yes]]]),,
+ [enable_gtk_doc_html=yes])
+ AC_ARG_ENABLE([gtk-doc-pdf],
+ AS_HELP_STRING([--enable-gtk-doc-pdf],
+ [build documentation in pdf format [[default=no]]]),,
+ [enable_gtk_doc_pdf=no])
+
+ if test -z "$GTKDOC_MKPDF"; then
+ enable_gtk_doc_pdf=no
+ fi
+
+ if test -z "$AM_DEFAULT_VERBOSITY"; then
+ AM_DEFAULT_VERBOSITY=1
+ fi
+ AC_SUBST([AM_DEFAULT_VERBOSITY])
+
+ AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes])
+ AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
+ AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
+ AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
+ AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
+ AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
+])
diff --git a/win32/patches/gtk-doc.make b/win32/patches/gtk-doc.make
new file mode 100644
index 0000000000..dd319930f4
--- /dev/null
+++ b/win32/patches/gtk-doc.make
@@ -0,0 +1,315 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN =
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+SETUP_FILES = \
+ $(content_files) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+EXTRA_DIST = \
+ $(HTML_IMAGES) \
+ $(SETUP_FILES)
+
+DOC_STAMPS=setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
+ html-build.stamp pdf-build.stamp \
+ tmpl.stamp sgml.stamp html.stamp pdf.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+gtkdoc-check.test: Makefile
+ $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \
+ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \
+ chmod +x $@
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test
+
+if GTK_DOC_BUILD_HTML
+HTML_BUILD_STAMP=html-build.stamp
+else
+HTML_BUILD_STAMP=
+endif
+if GTK_DOC_BUILD_PDF
+PDF_BUILD_STAMP=pdf-build.stamp
+else
+PDF_BUILD_STAMP=
+endif
+
+all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+.PHONY: all-gtk-doc
+
+if ENABLE_GTK_DOC
+all-local: all-gtk-doc
+endif
+
+docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### setup ####
+
+GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V))
+GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_SETUP_0=@echo " DOC Preparing build";
+
+setup-build.stamp:
+ -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
+ if test "x$$files" != "x" ; then \
+ for file in $$files ; do \
+ destdir=`dirname $(abs_builddir)/$$file` ;\
+ test -d "$$destdir" || mkdir -p "$$destdir"; \
+ test -f $(abs_srcdir)/$$file && \
+ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
+ done; \
+ fi; \
+ test -d $(abs_srcdir)/tmpl && \
+ { cp -pR $(abs_srcdir)/tmpl $(abs_builddir)/; \
+ chmod -R u+w $(abs_builddir)/tmpl; } \
+ fi
+ $(AM_V_at)touch setup-build.stamp
+
+#### scan ####
+
+GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V))
+GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files";
+
+GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V))
+GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects";
+
+scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB)
+ $(GTK_DOC_V_SCAN)_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ scanobj_options=""; \
+ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ scanobj_options="--verbose"; \
+ fi; \
+ fi; \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
+ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
+ else \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ $(AM_V_at)touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+#### templates ####
+
+GTK_DOC_V_TMPL=$(GTK_DOC_V_TMPL_$(V))
+GTK_DOC_V_TMPL_=$(GTK_DOC_V_TMPL_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_TMPL_0=@echo " DOC Rebuilding template files";
+
+tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ $(GTK_DOC_V_TMPL)gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ $(AM_V_at)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ if test -w $(abs_srcdir) ; then \
+ cp -pR $(abs_builddir)/tmpl $(abs_srcdir)/; \
+ fi \
+ fi
+ $(AM_V_at)touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+$(srcdir)/tmpl/*.sgml:
+ @true
+
+#### xml ####
+
+GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V))
+GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_XML_0=@echo " DOC Building XML";
+
+sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ -$(GTK_DOC_V_XML)chmod -R u+w $(srcdir) && _source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
+ $(AM_V_at)touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V))
+GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_HTML_0=@echo " DOC Building HTML";
+
+GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V))
+GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references";
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \
+ mkhtml_options=""; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkhtml_options="$$mkhtml_options --verbose"; \
+ fi; \
+ fi; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
+ if test "$(?)" = "0"; then \
+ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
+ fi; \
+ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ -@test "x$(HTML_IMAGES)" = "x" || \
+ for file in $(HTML_IMAGES) ; do \
+ if test -f $(abs_srcdir)/$$file ; then \
+ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
+ fi; \
+ if test -f $(abs_builddir)/$$file ; then \
+ cp $(abs_builddir)/$$file $(abs_builddir)/html; \
+ fi; \
+ done;
+ $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ $(AM_V_at)touch html-build.stamp
+
+#### pdf ####
+
+GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V))
+GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_PDF_0=@echo " DOC Building PDF";
+
+pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \
+ mkpdf_options=""; \
+ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkpdf_options="$$mkpdf_options --verbose"; \
+ fi; \
+ fi; \
+ if test "x$(HTML_IMAGES)" != "x"; then \
+ for img in $(HTML_IMAGES); do \
+ part=`dirname $$img`; \
+ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
+ if test $$? != 0; then \
+ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
+ fi; \
+ done; \
+ fi; \
+ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
+ $(AM_V_at)touch pdf-build.stamp
+
+##############
+
+clean-local:
+ @rm -f *~ *.bak
+ @rm -rf .libs
+ @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \
+ rm -f $(DOC_MODULE).types; \
+ fi
+
+distclean-local:
+ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
+ rm -rf tmpl; \
+ fi
+
+maintainer-clean-local:
+ @rm -rf xml html
+
+install-data-local:
+ @installfiles=`echo $(builddir)/html/*`; \
+ if test "$$installfiles" = '$(builddir)/html/*'; \
+ then echo 1>&2 'Nothing to install' ; \
+ else \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ $(mkinstalldirs) $${installdir} ; \
+ for i in $$installfiles; do \
+ echo ' $(INSTALL_DATA) '$$i ; \
+ $(INSTALL_DATA) $$i $${installdir}; \
+ done; \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+ fi; \
+ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+ fi
+
+uninstall-local:
+ @if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+if HAVE_GTK_DOC
+dist-check-gtkdoc: docs
+else
+dist-check-gtkdoc:
+ @echo "*** gtk-doc is needed to run 'make dist'. ***"
+ @echo "*** gtk-doc was not found when 'configure' ran. ***"
+ @echo "*** please install gtk-doc and rerun 'configure'. ***"
+ @false
+endif
+
+dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local
+ @mkdir $(distdir)/tmpl
+ @mkdir $(distdir)/html
+ @-cp ./tmpl/*.sgml $(distdir)/tmpl
+ @cp ./html/* $(distdir)/html
+ @-cp ./$(DOC_MODULE).pdf $(distdir)/
+ @-cp ./$(DOC_MODULE).types $(distdir)/
+ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
+ @cd $(distdir) && rm -f $(DISTCLEANFILES)
+ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/win32/patches/gtk.patch b/win32/patches/gtk.patch
new file mode 100644
index 0000000000..595b4054b0
--- /dev/null
+++ b/win32/patches/gtk.patch
@@ -0,0 +1,116 @@
+diff -upr gtk+-3.10.6/gdk/Makefile.in gtk+-3.10.6.new/gdk/Makefile.in
+--- gtk+-3.10.6/gdk/Makefile.in 2013-12-05 04:09:38 +0000
++++ gtk+-3.10.6.new/gdk/Makefile.in 2014-01-26 19:43:22 +0000
+@@ -94,7 +94,7 @@ DIST_COMMON = $(top_srcdir)/Makefile.dec
+ @USE_WIN32_FALSE@ $(am__append_1) $(am__append_3) \
+ @USE_WIN32_FALSE@ $(am__append_5) $(am__append_7) \
+ @USE_WIN32_FALSE@ $(am__append_8)
+-@USE_WIN32_TRUE@am__append_6 = -Wl,win32/rc/gdk-win32-res.o -export-symbols $(srcdir)/gdk.def
++@USE_WIN32_TRUE@am__append_6 = -Wl,win32/rc/gdk-win32-res.o
+ @USE_BROADWAY_TRUE@am__append_7 = broadway/libgdk-broadway.la
+ @USE_WAYLAND_TRUE@am__append_8 = wayland/libgdk-wayland.la
+ @HAVE_INTROSPECTION_TRUE@am__append_9 = Gdk-3.0.gir
+@@ -737,7 +737,7 @@ libgdk_3_la_CFLAGS = $(AM_CFLAGS) $(GDK_
+ libgdk_3_la_LIBADD = $(GDK_DEP_LIBS) $(am__append_1) $(am__append_3) \
+ $(am__append_5) $(am__append_7) $(am__append_8)
+ libgdk_3_la_LDFLAGS = $(LDADD) $(am__append_6)
+-@USE_WIN32_TRUE@libgdk_3_la_DEPENDENCIES = win32/libgdk-win32.la win32/rc/gdk-win32-res.o gdk.def
++@USE_WIN32_TRUE@libgdk_3_la_DEPENDENCIES = win32/libgdk-win32.la win32/rc/gdk-win32-res.o
+ @HAVE_INTROSPECTION_TRUE@introspection_files = \
+ @HAVE_INTROSPECTION_TRUE@ $(filter-out gdkkeysyms-compat.h, $(gdk_public_h_sources)) \
+ @HAVE_INTROSPECTION_TRUE@ $(gdk_c_sources) \
+@@ -1625,16 +1625,8 @@ check-local: test-cwd
+
+ @HAVE_INTROSPECTION_TRUE@@USE_X11_TRUE@GdkX11-3.0.gir: libgdk-3.la Gdk-3.0.gir Makefile
+
+-@OS_WIN32_TRUE@install-def-file: gdk.def
+-@OS_WIN32_TRUE@ mkdir -p $(DESTDIR)$(libdir)
+-@OS_WIN32_TRUE@ $(INSTALL) $(srcdir)/gdk.def $(DESTDIR)$(libdir)/gdk-win32-3.0.def
+-@OS_WIN32_TRUE@uninstall-def-file:
+-@OS_WIN32_TRUE@ -rm $(DESTDIR)$(libdir)/gdk-win32-3.0.def
+-@OS_WIN32_FALSE@install-def-file:
+-@OS_WIN32_FALSE@uninstall-def-file:
+-
+-@MS_LIB_AVAILABLE_TRUE@gdk-win32-$(GTK_API_VERSION).lib: libgdk-win32-$(GTK_API_VERSION).la gdk.def
+-@MS_LIB_AVAILABLE_TRUE@ lib -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgdk-win32-$(GTK_API_VERSION)-@LT_CURRENT_MINUS_AGE@.dll -def:gdk.def -out:$@
++@MS_LIB_AVAILABLE_TRUE@gdk-win32-$(GTK_API_VERSION).lib: libgdk-win32-$(GTK_API_VERSION).la
++@MS_LIB_AVAILABLE_TRUE@ lib -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgdk-win32-$(GTK_API_VERSION)-@LT_CURRENT_MINUS_AGE@.dll -out:$@
+
+ @MS_LIB_AVAILABLE_TRUE@install-ms-lib:
+ @MS_LIB_AVAILABLE_TRUE@ mkdir -p $(DESTDIR)$(libdir)
+@@ -1714,9 +1706,9 @@ dist-hook: ../build/win32/vs9/gdk.vcproj
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/gdk.vcxproj.filtersin >$@
+ rm libgdk.vs10.sourcefiles.filters
+
+-install-data-local: install-ms-lib install-def-file
++install-data-local: install-ms-lib
+
+-uninstall-local: uninstall-ms-lib uninstall-def-file
++uninstall-local: uninstall-ms-lib
+ rm -f $(DESTDIR)$(configexecincludedir)/gdkconfig.h
+
+ # if srcdir!=builddir, clean out maintainer-clean files from builddir
+diff -upr gtk+-3.10.6/gtk/Makefile.in gtk+-3.10.6.new/gtk/Makefile.in
+--- gtk+-3.10.6/gtk/Makefile.in 2013-12-05 04:09:40 +0000
++++ gtk+-3.10.6.new/gtk/Makefile.in 2014-01-26 19:45:23 +0000
+@@ -111,7 +111,7 @@ DIST_COMMON = $(top_srcdir)/Makefile.dec
+ @USE_QUARTZ_FALSE@@USE_WIN32_FALSE@@USE_X11_FALSE@am__append_13 = $(gtk_use_stub_c_sources)
+ @USE_WIN32_TRUE@am__append_14 = -lole32 -lgdi32 -lcomdlg32 -lwinspool -lcomctl32
+ @USE_WIN32_TRUE@am__append_15 = -Wl,-luuid
+-@USE_WIN32_TRUE@am__append_16 = $(gtk_def) $(gtk_win32_res) $(deps)
++@USE_WIN32_TRUE@am__append_16 = $(gtk_win32_res) $(deps)
+
+ # And include the regular ones:
+ @HAVE_INTROSPECTION_TRUE@@USE_QUARTZ_TRUE@am__append_17 = \
+@@ -1047,8 +1047,6 @@ AM_CPPFLAGS = \
+ $(INCLUDED_IMMODULE_DEFINE)
+
+ @PLATFORM_WIN32_TRUE@no_undefined = -no-undefined
+-@OS_WIN32_TRUE@gtk_def = gtk.def
+-@OS_WIN32_TRUE@gtk_win32_symbols = -export-symbols $(srcdir)/gtk.def
+ @OS_WIN32_TRUE@gtk_win32_res = gtk-win32-res.o
+ @OS_WIN32_TRUE@gtk_win32_res_ldflag = -Wl,gtk-win32-res.o
+ @MS_LIB_AVAILABLE_TRUE@noinst_DATA = gtk-win32-$(GTK_API_VERSION).lib
+@@ -1959,7 +1957,7 @@ libgtk_3_la_SOURCES = $(gtk_c_sources)
+ libgtk_3_la_LDFLAGS = $(libtool_opts) $(am__append_15)
+ libgtk_3_la_LIBADD = $(libadd) $(am__append_14)
+ libgtk_3_la_DEPENDENCIES = $(deps) $(am__append_16)
+-@USE_WIN32_TRUE@libgtk_target_ldflags = $(gtk_win32_res_ldflag) $(gtk_win32_symbols)
++@USE_WIN32_TRUE@libgtk_target_ldflags = $(gtk_win32_res_ldflag)
+ DEPS = libgtk-3.la $(top_builddir)/gdk/libgdk-3.la
+ TEST_DEPS = $(DEPS) immodules.cache
+ LDADDS = \
+@@ -5912,15 +5910,8 @@ check-local: test-cwd
+ @OS_WIN32_TRUE@gtk-win32-res.o : gtk-win32.rc
+ @OS_WIN32_TRUE@ $(WINDRES) gtk-win32.rc $@
+
+-@OS_WIN32_TRUE@install-def-file: gtk.def
+-@OS_WIN32_TRUE@ $(INSTALL) $(srcdir)/gtk.def $(DESTDIR)$(libdir)/gtk-win32-3.0.def
+-@OS_WIN32_TRUE@uninstall-def-file:
+-@OS_WIN32_TRUE@ -rm $(DESTDIR)$(libdir)/gtk-win32-3.0.def
+-@OS_WIN32_FALSE@install-def-file:
+-@OS_WIN32_FALSE@uninstall-def-file:
+-
+-@MS_LIB_AVAILABLE_TRUE@gtk-win32-$(GTK_API_VERSION).lib: libgtk-win32-$(GTK_API_VERSION).la gtk.def
+-@MS_LIB_AVAILABLE_TRUE@ lib -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgtk-win32-$(GTK_API_VERSION)-@LT_CURRENT_MINUS_AGE@.dll -def:gtk.def -out:$@
++@MS_LIB_AVAILABLE_TRUE@gtk-win32-$(GTK_API_VERSION).lib: libgtk-win32-$(GTK_API_VERSION).la
++@MS_LIB_AVAILABLE_TRUE@ lib -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgtk-win32-$(GTK_API_VERSION)-@LT_CURRENT_MINUS_AGE@.dll -out:$@
+
+ @MS_LIB_AVAILABLE_TRUE@install-ms-lib:
+ @MS_LIB_AVAILABLE_TRUE@ $(INSTALL) gtk-win32-$(GTK_API_VERSION).lib $(DESTDIR)$(libdir)
+@@ -6055,13 +6046,13 @@ dist-hook: ../build/win32/vs9/gtk.vcproj
+ rm libgtk.vs10.sourcefiles.filters
+
+ # Install a RC file for the default GTK+ theme, and key themes
+-install-data-local: install-ms-lib install-def-file install-mac-key-theme
++install-data-local: install-ms-lib install-mac-key-theme
+ $(MKDIR_P) $(DESTDIR)$(datadir)/themes/Default/gtk-3.0
+ $(INSTALL_DATA) $(srcdir)/gtk-keys.css.default $(DESTDIR)$(datadir)/themes/Default/gtk-3.0/gtk-keys.css
+ $(MKDIR_P) $(DESTDIR)$(datadir)/themes/Emacs/gtk-3.0
+ $(INSTALL_DATA) $(srcdir)/gtk-keys.css.emacs $(DESTDIR)$(datadir)/themes/Emacs/gtk-3.0/gtk-keys.css
+
+-uninstall-local: uninstall-ms-lib uninstall-def-file uninstall-mac-key-theme
++uninstall-local: uninstall-ms-lib uninstall-mac-key-theme
+ rm -f $(DESTDIR)$(datadir)/themes/Raleigh/gtk-3.0/gtk.css
+ rm -f $(DESTDIR)$(datadir)/themes/Default/gtk-3.0/gtk-keys.css
+ rm -f $(DESTDIR)$(datadir)/themes/Emacs/gtk-3.0/gtk-keys.css
diff --git a/win32/patches/harfbuzz.patch b/win32/patches/harfbuzz.patch
new file mode 100644
index 0000000000..792feef4ce
--- /dev/null
+++ b/win32/patches/harfbuzz.patch
@@ -0,0 +1,25 @@
+diff -upr harfbuzz-0.9.27.old//Makefile.in harfbuzz-0.9.27/Makefile.in
+--- harfbuzz-0.9.27.old//Makefile.in 2014-03-18 17:07:54 +0000
++++ harfbuzz-0.9.27/Makefile.in 2014-04-20 18:18:47 +0000
+@@ -365,7 +365,7 @@ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ NULL =
+ ACLOCAL_AMFLAGS = -I m4
+-SUBDIRS = src util test docs
++SUBDIRS = src
+ EXTRA_DIST = \
+ autogen.sh \
+ harfbuzz.doap \
+diff -upr harfbuzz-0.9.27.old//src/hb-common.cc harfbuzz-0.9.27/src/hb-common.cc
+--- harfbuzz-0.9.27.old//src/hb-common.cc 2014-03-16 20:40:33 +0000
++++ harfbuzz-0.9.27/src/hb-common.cc 2014-04-20 18:16:17 +0000
+@@ -33,6 +33,9 @@
+
+ #include <locale.h>
+
++extern "C" {
++_CRTIMP char* __cdecl __MINGW_NOTHROW strdup (const char*) __MINGW_ATTRIB_MALLOC;
++}
+
+ /* hb_options_t */
+
diff --git a/win32/patches/jasper.patch b/win32/patches/jasper.patch
new file mode 100644
index 0000000000..ee1e67f8d1
--- /dev/null
+++ b/win32/patches/jasper.patch
@@ -0,0 +1,12 @@
+diff -upr jasper-1.900.1/src/appl/tmrdemo.c jasper-1.900.1.new/src/appl/tmrdemo.c
+--- jasper-1.900.1/src/appl/tmrdemo.c 2007-01-19 21:43:08 +0000
++++ jasper-1.900.1.new/src/appl/tmrdemo.c 2013-12-29 22:42:52 +0000
+@@ -43,7 +43,7 @@ int main(int argc, char **argv)
+ printf("zero time %.3f us\n", t * 1e6);
+
+ jas_tmr_start(&tmr);
+- sleep(1);
++ //sleep(1);
+ jas_tmr_stop(&tmr);
+ t = jas_tmr_get(&tmr);
+ printf("time delay %.8f s\n", t);
diff --git a/win32/patches/libgdata.patch b/win32/patches/libgdata.patch
new file mode 100644
index 0000000000..25bcd0d262
--- /dev/null
+++ b/win32/patches/libgdata.patch
@@ -0,0 +1,158 @@
+diff -upr -x .deps -x .libs -x '*.la' libgdata-0.15.1.old/Makefile.am libgdata-0.15.1/Makefile.am
+--- libgdata-0.15.1.old/Makefile.am 2014-06-20 21:01:11 +0000
++++ libgdata-0.15.1/Makefile.am 2014-06-20 20:58:04 +0000
+@@ -1,4 +1,4 @@
+-SUBDIRS = . gdata/tests po docs
++SUBDIRS = . po docs
+
+ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+
+diff -upr -x .deps -x .libs -x '*.la' libgdata-0.15.1.old/Makefile.in libgdata-0.15.1/Makefile.in
+--- libgdata-0.15.1.old/Makefile.in 2014-06-20 21:01:11 +0000
++++ libgdata-0.15.1/Makefile.in 2014-06-20 20:58:04 +0000
+@@ -775,7 +775,7 @@ target_alias = @target_alias@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+-SUBDIRS = . gdata/tests po docs
++SUBDIRS = . po docs
+ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+ DISTCHECK_CONFIGURE_FLAGS = --enable-introspection --enable-gtk-doc
+ MAINTAINERCLEANFILES = $(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \
+diff -upr -x .deps -x .libs -x '*.la' libgdata-0.15.1.old/configure libgdata-0.15.1/configure
+--- libgdata-0.15.1.old/configure 2014-06-20 21:01:11 +0000
++++ libgdata-0.15.1/configure 2014-06-20 20:58:04 +0000
+@@ -16239,96 +16239,6 @@ fi
+
+
+
+-pkg_failed=no
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for UHTTPMOCK" >&5
+-$as_echo_n "checking for UHTTPMOCK... " >&6; }
+-
+-if test -n "$UHTTPMOCK_CFLAGS"; then
+- pkg_cv_UHTTPMOCK_CFLAGS="$UHTTPMOCK_CFLAGS"
+- elif test -n "$PKG_CONFIG"; then
+- if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libuhttpmock-0.0\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "libuhttpmock-0.0") 2>&5
+- ac_status=$?
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; }; then
+- pkg_cv_UHTTPMOCK_CFLAGS=`$PKG_CONFIG --cflags "libuhttpmock-0.0" 2>/dev/null`
+- test "x$?" != "x0" && pkg_failed=yes
+-else
+- pkg_failed=yes
+-fi
+- else
+- pkg_failed=untried
+-fi
+-if test -n "$UHTTPMOCK_LIBS"; then
+- pkg_cv_UHTTPMOCK_LIBS="$UHTTPMOCK_LIBS"
+- elif test -n "$PKG_CONFIG"; then
+- if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libuhttpmock-0.0\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "libuhttpmock-0.0") 2>&5
+- ac_status=$?
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; }; then
+- pkg_cv_UHTTPMOCK_LIBS=`$PKG_CONFIG --libs "libuhttpmock-0.0" 2>/dev/null`
+- test "x$?" != "x0" && pkg_failed=yes
+-else
+- pkg_failed=yes
+-fi
+- else
+- pkg_failed=untried
+-fi
+-
+-
+-
+-if test $pkg_failed = yes; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-
+-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+- _pkg_short_errors_supported=yes
+-else
+- _pkg_short_errors_supported=no
+-fi
+- if test $_pkg_short_errors_supported = yes; then
+- UHTTPMOCK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libuhttpmock-0.0" 2>&1`
+- else
+- UHTTPMOCK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libuhttpmock-0.0" 2>&1`
+- fi
+- # Put the nasty error message in config.log where it belongs
+- echo "$UHTTPMOCK_PKG_ERRORS" >&5
+-
+- as_fn_error $? "Package requirements (libuhttpmock-0.0) were not met:
+-
+-$UHTTPMOCK_PKG_ERRORS
+-
+-Consider adjusting the PKG_CONFIG_PATH environment variable if you
+-installed software in a non-standard prefix.
+-
+-Alternatively, you may set the environment variables UHTTPMOCK_CFLAGS
+-and UHTTPMOCK_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details." "$LINENO" 5
+-elif test $pkg_failed = untried; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+-as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+-is in your PATH or set the PKG_CONFIG environment variable to the full
+-path to pkg-config.
+-
+-Alternatively, you may set the environment variables UHTTPMOCK_CFLAGS
+-and UHTTPMOCK_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
+-
+-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+-See \`config.log' for more details" "$LINENO" 5; }
+-else
+- UHTTPMOCK_CFLAGS=$pkg_cv_UHTTPMOCK_CFLAGS
+- UHTTPMOCK_LIBS=$pkg_cv_UHTTPMOCK_LIBS
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }
+-
+-fi
+
+ # Various necessary functions and headers
+ for ac_func in strchr
+diff -upr -x .deps -x .libs -x '*.la' libgdata-0.15.1.old/configure.ac libgdata-0.15.1/configure.ac
+--- libgdata-0.15.1.old/configure.ac 2014-06-20 21:01:11 +0000
++++ libgdata-0.15.1/configure.ac 2014-06-20 20:58:04 +0000
+@@ -123,11 +123,6 @@ AC_SUBST([GNOME_PACKAGES_PRIVATE])
+ AC_SUBST([GNOME_PACKAGES])
+ AC_SUBST([GOA_ENABLED])
+
+-dnl ****************************
+-dnl Check for uhttpmock
+-dnl ****************************
+-PKG_CHECK_MODULES(UHTTPMOCK, libuhttpmock-0.0)
+-
+ # Various necessary functions and headers
+ AC_CHECK_FUNCS([strchr])
+ AC_CHECK_FUNCS([strstr])
+diff -upr -x .deps -x .libs -x '*.la' libgdata-0.15.1.old/gdata/gdata.symbols libgdata-0.15.1/gdata/gdata.symbols
+--- libgdata-0.15.1.old/gdata/gdata.symbols 2014-06-20 21:01:11 +0000
++++ libgdata-0.15.1/gdata/gdata.symbols 2014-06-20 21:02:28 +0000
+@@ -965,9 +965,6 @@ gdata_documents_entry_get_quota_used
+ gdata_documents_service_copy_document
+ gdata_documents_service_copy_document_async
+ gdata_documents_service_copy_document_finish
+-gdata_goa_authorizer_get_type
+-gdata_goa_authorizer_new
+-gdata_goa_authorizer_get_goa_object
+ gdata_documents_document_get_thumbnail_uri
+ gdata_tasks_task_get_type
+ gdata_tasks_task_new
+@@ -1087,8 +1084,6 @@ gdata_freebase_topic_value_is_image
+ gdata_freebase_topic_result_get_type
+ gdata_freebase_topic_result_new
+ gdata_freebase_topic_result_dup_object
+-gdata_freebase_result_error_get_type
+-gdata_freebase_result_error_quark
+ gdata_freebase_result_get_type
+ gdata_freebase_result_new
+ gdata_freebase_result_dup_variant
diff --git a/win32/patches/libgpg-error.patch b/win32/patches/libgpg-error.patch
new file mode 100644
index 0000000000..416f5258a9
--- /dev/null
+++ b/win32/patches/libgpg-error.patch
@@ -0,0 +1,12 @@
+diff -upr libgpg-error-1.12.old/po/LINGUAS libgpg-error-1.12/po/LINGUAS
+--- libgpg-error-1.12.old/po/LINGUAS 2014-04-27 14:43:44 +0000
++++ libgpg-error-1.12/po/LINGUAS 2014-04-27 14:44:04 +0000
+@@ -7,8 +7,6 @@ fr
+ it
+ ja
+ nl
+-pl
+-ro
+ sv
+ uk
+ vi
diff --git a/win32/patches/libgweather.patch b/win32/patches/libgweather.patch
new file mode 100644
index 0000000000..3a7eb3e7fe
--- /dev/null
+++ b/win32/patches/libgweather.patch
@@ -0,0 +1,191 @@
+diff -upr libgweather-3.10.2.old//configure libgweather-3.10.2/configure
+--- libgweather-3.10.2.old//configure 2014-02-02 16:39:52 +0000
++++ libgweather-3.10.2/configure 2014-04-15 14:05:25 +0000
+@@ -15884,16 +15884,16 @@ case "$am__api_version" in
+ ;;
+ esac
+
+-INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.50.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
++INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.40.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+ INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+ INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+-if test -n "0.50.0"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.50.0" >&5
+-$as_echo_n "checking for intltool >= 0.50.0... " >&6; }
++if test -n "0.40.0"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.40.0" >&5
++$as_echo_n "checking for intltool >= 0.40.0... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5
+ $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; }
+ test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+- as_fn_error $? "Your intltool is too old. You need intltool 0.50.0 or later." "$LINENO" 5
++ as_fn_error $? "Your intltool is too old. You need intltool 0.40.0 or later." "$LINENO" 5
+ fi
+
+ # Extract the first word of "intltool-update", so it can be a program name with args.
+diff -upr libgweather-3.10.2.old//libgweather/weather-owm.c libgweather-3.10.2/libgweather/weather-owm.c
+--- libgweather-3.10.2.old//libgweather/weather-owm.c 2014-04-15 14:03:39 +0000
++++ libgweather-3.10.2/libgweather/weather-owm.c 2014-04-15 13:58:56 +0000
+@@ -29,7 +29,6 @@
+ #include <math.h>
+ #include <time.h>
+ #include <unistd.h>
+-#include <langinfo.h>
+
+ #include <libxml/parser.h>
+ #include <libxml/xpath.h>
+@@ -130,32 +129,20 @@ static time_t
+ date_to_time_t (const xmlChar *str, const char * tzid)
+ {
+ struct tm time = { 0 };
+- GTimeZone *tz;
+ GDateTime *dt;
+ time_t rval;
++ GTimeVal tv;
+ char *after;
+
+- after = strptime ((const char*) str, "%Y-%m-%dT%T", &time);
+- if (after == NULL) {
++ if (!g_time_val_from_iso8601 ((const char*) str, &tv)) {
+ g_warning ("Cannot parse date string \"%s\"", str);
+ return 0;
+ }
+
+- if (*after == 'Z')
+- tzid = "UTC";
+-
+- tz = g_time_zone_new (tzid);
+- dt = g_date_time_new (tz,
+- time.tm_year + 1900,
+- time.tm_mon + 1,
+- time.tm_mday,
+- time.tm_hour,
+- time.tm_min,
+- time.tm_sec);
++ dt = g_date_time_new_from_timeval_local (&tv);
+
+ rval = g_date_time_to_unix (dt);
+
+- g_time_zone_unref (tz);
+ g_date_time_unref (dt);
+
+ return rval;
+diff -upr libgweather-3.10.2.old//libgweather/weather-priv.h libgweather-3.10.2/libgweather/weather-priv.h
+--- libgweather-3.10.2.old//libgweather/weather-priv.h 2014-04-15 14:03:39 +0000
++++ libgweather-3.10.2/libgweather/weather-priv.h 2014-04-15 13:58:57 +0000
+@@ -32,7 +32,7 @@
+ #include "gweather-location.h"
+
+ #ifdef _WIN32
+-#include "gweather-win32.h"
++#define localtime_r(t,tmp) (localtime (t) ? ((*tmp) = *localtime (t), tmp) : NULL)
+ #endif
+
+ void _gweather_gettext_init (void);
+diff -upr libgweather-3.10.2.old//libgweather/weather-yahoo.c libgweather-3.10.2/libgweather/weather-yahoo.c
+--- libgweather-3.10.2.old//libgweather/weather-yahoo.c 2014-04-15 14:03:39 +0000
++++ libgweather-3.10.2/libgweather/weather-yahoo.c 2014-04-15 13:58:57 +0000
+@@ -151,10 +151,35 @@ date_to_time_t (const xmlChar *str)
+ {
+ struct tm time = { 0 };
+
++ #ifdef G_OS_WIN32
++ char mnthname[10] = {0};
++ int day, month, year;
++ const gchar tm_months[][4] = {
++ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
++ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
++ };
++ if (sscanf ((const char*) str, "%d %3s %4d", &day, mnthname, &year) != 3) {
++ g_warning ("Cannot parse date string \"%s\"", str);
++ return 0;
++ }
++ for (month = 0; month < 12; month++) {
++ if (g_ascii_strcasecmp (tm_months[month], mnthname) == 0) {
++ break;
++ }
++ }
++ if (month == 12) {
++ g_warning ("Cannot parse date string \"%s\"", str);
++ return 0;
++ }
++ time.tm_mday = day;
++ time.tm_mon = month;
++ time.tm_year = year - 1900;
++ #else
+ if (!strptime ((const char*) str, "%d %b %Y", &time)) {
+ g_warning ("Cannot parse date string \"%s\"", str);
+ return 0;
+ }
++ #endif
+
+ return mktime(&time);
+ }
+diff -upr libgweather-3.10.2.old//libgweather/weather-yrno.c libgweather-3.10.2/libgweather/weather-yrno.c
+--- libgweather-3.10.2.old//libgweather/weather-yrno.c 2014-04-15 14:03:39 +0000
++++ libgweather-3.10.2/libgweather/weather-yrno.c 2014-04-15 13:58:57 +0000
+@@ -91,32 +91,20 @@ static time_t
+ date_to_time_t (const xmlChar *str, const char * tzid)
+ {
+ struct tm time = { 0 };
+- GTimeZone *tz;
+ GDateTime *dt;
+ time_t rval;
++ GTimeVal tv;
+ char *after;
+
+- after = strptime ((const char*) str, "%Y-%m-%dT%T", &time);
+- if (after == NULL) {
++ if (!g_time_val_from_iso8601 ((const char*) str, &tv)) {
+ g_warning ("Cannot parse date string \"%s\"", str);
+ return 0;
+ }
+
+- if (*after == 'Z')
+- tzid = "UTC";
+-
+- tz = g_time_zone_new (tzid);
+- dt = g_date_time_new (tz,
+- time.tm_year + 1900,
+- time.tm_mon + 1,
+- time.tm_mday,
+- time.tm_hour,
+- time.tm_min,
+- time.tm_sec);
++ dt = g_date_time_new_from_timeval_local (&tv);
+
+ rval = g_date_time_to_unix (dt);
+
+- g_time_zone_unref (tz);
+ g_date_time_unref (dt);
+
+ return rval;
+diff -upr libgweather-3.10.2.old//libgweather/weather.c libgweather-3.10.2/libgweather/weather.c
+--- libgweather-3.10.2.old//libgweather/weather.c 2014-04-15 14:03:39 +0000
++++ libgweather-3.10.2/libgweather/weather.c 2014-04-15 13:58:57 +0000
+@@ -28,7 +28,10 @@
+ #include <math.h>
+ #include <time.h>
+ #include <unistd.h>
++
++#ifdef HAVE_NL_LANGINFO
+ #include <langinfo.h>
++#endif
+
+ #include <gtk/gtk.h>
+ #include <gdk-pixbuf/gdk-pixbuf.h>
+@@ -701,12 +704,14 @@ gweather_info_get_conditions (GWeatherIn
+ static gboolean
+ is_locale_metric (void)
+ {
++#ifdef HAVE_NL_LANGINFO
+ const char *fmt;
+ fmt = nl_langinfo (_NL_MEASUREMENT_MEASUREMENT);
+
+ if (fmt && *fmt == 2)
+ return FALSE;
+ else
++#endif /* HAVE_NL_LANGINFO */
+ return TRUE;
+ }
+
diff --git a/win32/patches/libical.patch b/win32/patches/libical.patch
new file mode 100644
index 0000000000..96a0c1e4b3
--- /dev/null
+++ b/win32/patches/libical.patch
@@ -0,0 +1,169 @@
+diff -upr -x .deps -x .libs -x '*.la' libical-1.0.old/src/libical/icaltime.c libical-1.0/src/libical/icaltime.c
+--- libical-1.0.old/src/libical/icaltime.c 2013-04-14 17:24:42 +0000
++++ libical-1.0/src/libical/icaltime.c 2014-08-03 13:58:29 +0000
+@@ -61,7 +61,7 @@
+ #undef gmtime_r
+
+ /* The gmtime() in Microsoft's C library is MT-safe */
+-#define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0)
++#define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):memset(tmp, 0, sizeof(*tmp)))
+ #endif
+
+ #ifdef HAVE_PTHREAD
+@@ -205,11 +205,7 @@ icaltime_from_timet_with_zone(const time
+
+ /* Convert the time_t to a struct tm in UTC time. We can trust gmtime
+ for this. */
+-#ifdef HAVE_PTHREAD
+ gmtime_r (&tm, &t);
+-#else
+- t = *(gmtime (&tm));
+-#endif
+
+ tt.year = t.tm_year + 1900;
+ tt.month = t.tm_mon + 1;
+diff -upr -x .deps -x .libs -x '*.la' libical-1.0.old/src/libical/icaltimezone.c libical-1.0/src/libical/icaltimezone.c
+--- libical-1.0.old/src/libical/icaltimezone.c 2013-04-14 17:24:42 +0000
++++ libical-1.0/src/libical/icaltimezone.c 2014-08-03 13:59:38 +0000
+@@ -61,12 +61,19 @@ static pthread_mutex_t builtin_mutex = P
+ #undef gmtime_r
+
+ /* The gmtime() in Microsoft's C library is MT-safe */
+-#define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0)
++#define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):memset(tmp, 0, sizeof(*tmp)))
+
+ // MSVC lacks the POSIX macro S_ISDIR, however it's a trivial one:
+ #ifndef S_ISDIR
+ #define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
+ #endif
++
++#define DIR_SEPARATOR "\\"
++
++#else
++
++#define DIR_SEPARATOR "/"
++
+ #endif
+
+ #if defined(_MSC_VER)
+@@ -75,7 +82,7 @@ static pthread_mutex_t builtin_mutex = P
+ #endif
+
+ /** This is the toplevel directory where the timezone data is installed in. */
+-#define ZONEINFO_DIRECTORY PACKAGE_DATA_DIR "/zoneinfo"
++#define ZONEINFO_DIRECTORY PACKAGE_DATA_DIR DIR_SEPARATOR "zoneinfo"
+
+ /** The prefix we use to uniquely identify TZIDs.
+ It must begin and end with forward slashes.
+@@ -1702,10 +1709,10 @@ icaltimezone_parse_zone_tab (void)
+ return;
+ }
+ #ifndef USE_BUILTIN_TZDATA
+- snprintf (filename, filename_len, "%s/%s", icaltzutil_get_zone_directory (),
++ snprintf (filename, filename_len, "%s" DIR_SEPARATOR "%s", icaltzutil_get_zone_directory (),
+ ZONES_TAB_SYSTEM_FILENAME);
+ #else
+- snprintf (filename, filename_len, "%s/%s", get_zone_directory(),
++ snprintf (filename, filename_len, "%s" DIR_SEPARATOR "%s", get_zone_directory(),
+ ZONES_TAB_FILENAME);
+ #endif
+
+@@ -1823,7 +1830,7 @@ icaltimezone_load_builtin_timezone (ical
+ goto out;
+ }
+
+- snprintf (filename, filename_len, "%s/%s.ics", get_zone_directory(),
++ snprintf (filename, filename_len, "%s " DIR_SEPARATOR " %s.ics", get_zone_directory(),
+ zone->location);
+
+ fp = fopen (filename, "r");
+diff -upr -x .deps -x .libs -x '*.la' libical-1.0.old/src/libical/icaltz-util.c libical-1.0/src/libical/icaltz-util.c
+--- libical-1.0.old/src/libical/icaltz-util.c 2013-04-14 17:24:42 +0000
++++ libical-1.0/src/libical/icaltz-util.c 2014-08-03 12:54:17 +0000
+@@ -50,7 +50,7 @@
+ # endif
+ #endif
+
+-#ifdef _MSC_VER
++#ifdef WIN32
+ #if !defined(HAVE_BYTESWAP_H) && !defined(HAVE_SYS_ENDIAN_H) && !defined(HAVE_ENDIAN_H)
+ #define bswap_16(x) (((x) << 8) & 0xff00) | (((x) >> 8 ) & 0xff)
+ #define bswap_32(x) (((x) << 24) & 0xff000000) \
+@@ -67,6 +67,11 @@
+ | (((x) & 0x00000000000000ffull) << 56))
+ #endif
+ #include <io.h>
++#include <sys/param.h> /* for BYTE_ORDER */
++#endif
++
++#ifdef WIN32
++#include <windows.h>
+ #endif
+
+ #if defined(__APPLE__)
+@@ -191,6 +196,7 @@ zname_from_stridx (char *str, long int i
+ static void
+ set_zonedir (void)
+ {
++ #ifndef WIN32
+ char file_path[PATH_MAX];
+ const char *fname = ZONES_TAB_SYSTEM_FILENAME;
+ int i;
+@@ -202,6 +208,42 @@ set_zonedir (void)
+ break;
+ }
+ }
++
++ #else
++ #define ZONEINFO_REL_PATH "..\\share\\zoneinfo"
++ if (!zdir) {
++ HMODULE lib = LoadLibrary("libical.dll");
++ if (lib) {
++ static char win32_path[PATH_MAX * 2 + 32 + 1];
++ DWORD read = GetModuleFileNameA (lib, win32_path, PATH_MAX * 2);
++ FreeLibrary(lib);
++
++ if (read > 0) {
++ char *backslash;
++ int cut_path_at;
++
++ win32_path[read] = 0;
++
++ backslash = strrchr(win32_path, '\\');
++ if (backslash)
++ backslash[1] = 0;
++
++ strcat (win32_path, ZONEINFO_REL_PATH);
++ cut_path_at = strlen (win32_path);
++ strcat (win32_path, "\\");
++ strcat (win32_path, ZONES_TAB_SYSTEM_FILENAME);
++
++ if (!access (win32_path, F_OK|R_OK)) {
++ win32_path[cut_path_at] = 0;
++ zdir = win32_path;
++ } else {
++ fprintf (stderr, "libical: Failed to find '%s'\n", win32_path);
++ }
++ }
++ }
++ }
++ #undef ZONEINFO_REL_PATH
++ #endif
+ }
+
+
+@@ -256,6 +298,14 @@ icaltzutil_fetch_timezone (const char *l
+
+ full_path = (char *) malloc (strlen (basedir) + strlen (location) + 2);
+ sprintf (full_path,"%s/%s",basedir, location);
++ #ifdef WIN32
++ pos = strlen(basedir);
++ while(full_path[pos]) {
++ if (full_path[pos] == '/')
++ full_path[pos] = '\\';
++ pos++;
++ }
++ #endif
+
+ if ((f = fopen (full_path, "rb")) == 0) {
+ icalerror_set_errno (ICAL_FILE_ERROR);
diff --git a/win32/patches/liboauth.patch b/win32/patches/liboauth.patch
new file mode 100644
index 0000000000..9613332bca
--- /dev/null
+++ b/win32/patches/liboauth.patch
@@ -0,0 +1,56 @@
+diff -upr -x .deps -x .libs -x '*.la' liboauth-1.0.1.old/src/Makefile liboauth-1.0.1/src/Makefile
+--- liboauth-1.0.1.old/src/Makefile 2014-06-20 20:41:31 +0000
++++ liboauth-1.0.1/src/Makefile 2014-06-20 20:38:41 +0000
+@@ -249,7 +249,7 @@ ACLOCAL_AMFLAGS = -I m4
+ lib_LTLIBRARIES = liboauth.la
+ include_HEADERS = oauth.h
+ liboauth_la_SOURCES = oauth.c config.h hash.c xmalloc.c xmalloc.h oauth_http.c
+-liboauth_la_LDFLAGS = -Wall -export-symbols-regex '^oauth_.*' -Wl,--as-needed -version-info 8:5:8
++liboauth_la_LDFLAGS = -Wall -export-symbols-regex '^oauth_.*' -Wl,--as-needed -version-info 8:5:8 -no-undefined
+ liboauth_la_LIBADD = -LC:/MinGW/msys/1.0/build/local/deps/lib -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4
+ liboauth_la_CFLAGS = -Wall -IC:/MinGW/msys/1.0/build/local/deps/include/nss -IC:/MinGW/msys/1.0/build/local/deps/include/nspr
+ all: config.h
+diff -upr -x .deps -x .libs -x '*.la' liboauth-1.0.1.old/src/oauth.c liboauth-1.0.1/src/oauth.c
+--- liboauth-1.0.1.old/src/oauth.c 2014-06-20 20:43:07 +0000
++++ liboauth-1.0.1/src/oauth.c 2014-05-17 20:27:28 +0000
+@@ -48,8 +48,10 @@
+ #include <unistd.h>
+ #else
+ #define snprintf _snprintf
++#ifndef strncasecmp
+ #define strncasecmp strnicmp
+ #endif
++#endif
+
+ /**
+ * Base64 encode one byte
+@@ -520,7 +522,7 @@ char *oauth_serialize_url_parameters (in
+ */
+ #if !defined HAVE_OPENSSL_HMAC_H && !defined USE_NSS
+ /* pre liboauth-0.7.2 and possible future versions that don't use OpenSSL or NSS */
+-char *oauth_gen_nonce() {
++char *oauth_gen_nonce(void) {
+ char *nc;
+ static int rndinit = 1;
+ const char *chars = "abcdefghijklmnopqrstuvwxyz"
+@@ -557,7 +559,7 @@ char *oauth_gen_nonce() {
+ # define MY_RAND RAND_bytes
+ # define MY_SRAND ;
+ #endif
+-char *oauth_gen_nonce() {
++char *oauth_gen_nonce(void) {
+ char *nc;
+ unsigned char buf;
+ const char *chars = "abcdefghijklmnopqrstuvwxyz"
+diff -upr -x .deps -x .libs -x '*.la' liboauth-1.0.1.old/src/oauth.h liboauth-1.0.1/src/oauth.h
+--- liboauth-1.0.1.old/src/oauth.h 2014-06-20 20:43:07 +0000
++++ liboauth-1.0.1/src/oauth.h 2014-05-17 20:27:28 +0000
+@@ -262,7 +262,7 @@ char *oauth_serialize_url_parameters (in
+ *
+ * @return zero terminated random string.
+ */
+-char *oauth_gen_nonce();
++char *oauth_gen_nonce(void);
+
+ /**
+ * string compare function for oauth parameters.
diff --git a/win32/patches/libpng.patch b/win32/patches/libpng.patch
new file mode 100644
index 0000000000..951fea13f5
--- /dev/null
+++ b/win32/patches/libpng.patch
@@ -0,0 +1,86 @@
+diff -upr -x .deps -x .libs -x '*.la' libpng-1.6.7.old/scripts/makefile.msys libpng-1.6.7/scripts/makefile.msys
+--- libpng-1.6.7.old/scripts/makefile.msys 2014-05-17 04:40:44 +0000
++++ libpng-1.6.7/scripts/makefile.msys 2014-05-17 05:27:20 +0000
+@@ -12,7 +12,7 @@
+ # For conditions of distribution and use, see the disclaimer
+ # and license in png.h
+ # # # # # # # # # # # # # # # # #
+-prefix=/usr/local
++prefix?=/usr/local
+ exec_prefix=$(prefix)
+
+ # Library name:
+@@ -29,8 +29,8 @@ OLDSO=libpng.dll
+ # Where the zlib library and include files are located.
+ #ZLIBLIB=../zlib
+ #ZLIBINC=../zlib
+-ZLIBLIB=/usr/local/lib
+-ZLIBINC=/usr/local/include
++ZLIBLIB=$(prefix)/lib
++ZLIBINC=$(prefix)/include
+
+ # Compiler, linker, lib and other tools
+ CC = gcc
+@@ -97,15 +97,14 @@ pnglibconf.h: scripts/pnglibconf.h.prebu
+
+ static: libpng$(A) pngtest$(EXE)
+
+-shared: $(LIBSOMAJ)
+- $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSO)
++shared: libpng$(A)
++ $(CC) -shared scripts/symbols.def $(LDFLAGS) -L$(ZLIBLIB) libpng$(A) $(LIBS) -o $(LIBSO) -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker $(LIBSO)$(A)
++ cp $(LIBSO) $(LIBSOMAJ)
++ cp $(LIBSO)$(A) $(LIBSOMAJ)$(A)
+
+ $(LIBSO): $(LIBSOMAJ)
+ $(LN_SF) $(LIBSOMAJ) $(LIBSO)
+
+-$(LIBSOMAJ):
+- $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSOMAJ)
+-
+ libpng$(A): $(OBJS)
+ $(AR_RC) $@ $(OBJS)
+ $(RANLIB) $@
+@@ -144,8 +143,10 @@ install-shared: install-headers $(LIBSOM
+ -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi
+ -@$(RM_F) $(DL)/$(LIBSO)
+ -@$(RM_F) $(DL)/$(OLDSO)
+- cp $(LIBSO) $(DL)/$(LIBSOREL)
+- (cd $(DL); \
++ cp $(LIBSO).a $(DL)/$(LIBSO).a
++ cp $(LIBSOMAJ).a $(DL)/$(LIBSOMAJ).a
++ cp $(LIBSO) $(DB)/$(LIBSOREL)
++ (cd $(DB); \
+ $(LN_SF) $(LIBSOREL) $(LIBSO); \
+ $(LN_SF) $(LIBSO) $(OLDSO))
+
+diff -upr -x .deps -x .libs -x '*.la' libpng-1.6.7.old/scripts/symbols.def libpng-1.6.7/scripts/symbols.def
+--- libpng-1.6.7.old/scripts/symbols.def 2013-11-14 19:03:02 +0000
++++ libpng-1.6.7/scripts/symbols.def 2014-05-17 04:56:00 +0000
+@@ -1,10 +1,3 @@
+-;Version 1.6.7
+-;--------------------------------------------------------------
+-; LIBPNG symbol list as a Win32 DEF file
+-; Contains all the symbols that can be exported from libpng
+-;--------------------------------------------------------------
+-LIBRARY
+-
+ EXPORTS
+ png_access_version_number @1
+ png_set_sig_bytes @2
+@@ -109,7 +102,6 @@ EXPORTS
+ png_free_default @101
+ png_error @102
+ png_chunk_error @103
+- png_err @104
+ png_warning @105
+ png_chunk_warning @106
+ png_benign_error @107
+@@ -190,7 +182,6 @@ EXPORTS
+ png_get_header_version @182
+ png_get_libpng_ver @183
+ png_permit_mng_features @184
+- png_set_strip_error_numbers @185
+ png_set_user_limits @186
+ png_get_user_width_max @187
+ png_get_user_height_max @188
diff --git a/win32/patches/libsecret.patch b/win32/patches/libsecret.patch
new file mode 100644
index 0000000000..5e6c70e7ff
--- /dev/null
+++ b/win32/patches/libsecret.patch
@@ -0,0 +1,157 @@
+diff -upr libsecret-0.16.old/Makefile.am libsecret-0.16/Makefile.am
+--- libsecret-0.16.old/Makefile.am 2013-03-25 12:10:12 +0000
++++ libsecret-0.16/Makefile.am 2014-04-20 18:49:09 +0000
+@@ -3,7 +3,7 @@ include $(top_srcdir)/Makefile.decl
+
+ ACLOCAL_AMFLAGS = -I build/m4 ${ACLOCAL_FLAGS}
+
+-SUBDIRS = build egg libsecret tool po docs .
++SUBDIRS = build egg libsecret po docs .
+
+ DISTCHECK_CONFIGURE_FLAGS = \
+ --enable-debug=yes \
+diff -upr libsecret-0.16.old/configure.ac libsecret-0.16/configure.ac
+--- libsecret-0.16.old/configure.ac 2013-06-21 13:11:14 +0000
++++ libsecret-0.16/configure.ac 2014-04-20 18:42:09 +0000
+@@ -55,20 +55,48 @@ AM_GLIB_GNU_GETTEXT
+ # Checks for functions
+
+ AC_CHECK_FUNCS(mlock)
++AC_CHECK_FUNCS(gmtime_r strptime memrchr)
++AC_CHECK_HEADERS([err.h pwd.h syslog.h sys/mman.h sys/wait.h])
++
++dnl ******************************
++dnl Check for Win32
++dnl ******************************
++AC_MSG_CHECKING([for Win32])
++case "$host" in
++*-mingw*)
++ os_win32='yes'
++ AC_CACHE_VAL(ac_cv_have_addrinfo, [ac_cv_have_addrinfo=yes])
++ AC_DEFINE(_WIN32_WINNT, 0x501, [To get getaddrinfo etc declarations])
++ ;;
++*)
++ os_win32='no'
++ ;;
++esac
++AC_MSG_RESULT([$os_win32])
++AM_CONDITIONAL(OS_WIN32, [test $os_win32 = yes])
+
+ # --------------------------------------------------------------------
+ # GLib
+
++GIO_PLAT=
++if test "$os_win32" = "yes" ; then
++ GIO_PLAT=gio-windows-2.0
++else
++ GIO_PLAT=gio-unix-2.0
++fi
++
+ PKG_CHECK_MODULES(GLIB,
+ glib-2.0 >= 2.32.0
+ gio-2.0 >= 2.32.0
+- gio-unix-2.0)
++ $GIO_PLAT)
+ LIBS="$LIBS $GLIB_LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+
+ GTK_DOC_CHECK(1.9)
+
+-GOBJECT_INTROSPECTION_CHECK([1.29])
++AM_CONDITIONAL(HAVE_INTROSPECTION, test "yes" = "no")
++
++dnl GOBJECT_INTROSPECTION_CHECK([1.29])
+ AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)
+
+ # --------------------------------------------------------------------
+diff -upr libsecret-0.16.old/egg/egg-secure-memory.c libsecret-0.16/egg/egg-secure-memory.c
+--- libsecret-0.16.old/egg/egg-secure-memory.c 2012-10-27 10:23:32 +0000
++++ libsecret-0.16/egg/egg-secure-memory.c 2014-04-20 18:43:03 +0000
+@@ -32,7 +32,9 @@
+ #include "egg-secure-memory.h"
+
+ #include <sys/types.h>
++#ifdef HAVE_SYS_MMAN_H
+ #include <sys/mman.h>
++#endif
+ #include <stddef.h>
+ #include <string.h>
+ #include <stdio.h>
+@@ -188,9 +190,11 @@ pool_alloc (void)
+
+ /* Create a new pool */
+ if (pool == NULL) {
++#if !defined(_WIN32)
+ len = getpagesize () * 2;
+ pages = mmap (0, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+ if (pages == MAP_FAILED)
++#endif
+ return NULL;
+
+ /* Fill in the block header, and inlude in block list */
+@@ -254,7 +258,9 @@ pool_free (void* item)
+ VALGRIND_DESTROY_MEMPOOL (pool);
+ #endif
+
++#if !defined(_WIN32)
+ munmap (pool, pool->length);
++#endif
+ return;
+ }
+
+@@ -860,11 +866,11 @@ sec_acquire_pages (size_t *sz,
+ ASSERT (*sz);
+ ASSERT (during_tag);
+
++#if defined(HAVE_MLOCK)
+ /* Make sure sz is a multiple of the page size */
+ pgsize = getpagesize ();
+ *sz = (*sz + pgsize -1) & ~(pgsize - 1);
+
+-#if defined(HAVE_MLOCK)
+ pages = mmap (0, *sz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+ if (pages == MAP_FAILED) {
+ if (show_warning && egg_secure_warnings)
+@@ -902,9 +908,9 @@ static void
+ sec_release_pages (void *pages, size_t sz)
+ {
+ ASSERT (pages);
+- ASSERT (sz % getpagesize () == 0);
+
+ #if defined(HAVE_MLOCK)
++ ASSERT (sz % getpagesize () == 0);
+ if (munlock (pages, sz) < 0 && egg_secure_warnings)
+ fprintf (stderr, "couldn't unlock private memory: %s\n", strerror (errno));
+
+@@ -914,7 +920,7 @@ sec_release_pages (void *pages, size_t s
+ DEBUG_ALLOC ("gkr-secure-memory: freed block ", sz);
+
+ #else
+- ASSERT (FALSE);
++ ASSERT (0);
+ #endif
+ }
+
+@@ -937,6 +943,11 @@ sec_block_create (size_t size,
+ if (getenv ("SECMEM_FORCE_FALLBACK"))
+ return NULL;
+
++#ifdef _WIN32
++ /* win32 does not have mlock(), so just fail in that case */
++ return NULL;
++#endif
++
+ block = pool_alloc ();
+ if (!block)
+ return NULL;
+diff -upr libsecret-0.16.old/libsecret/Makefile.am libsecret-0.16/libsecret/Makefile.am
+--- libsecret-0.16.old/libsecret/Makefile.am 2013-06-21 13:11:15 +0000
++++ libsecret-0.16/libsecret/Makefile.am 2014-04-20 18:45:31 +0000
+@@ -1,6 +1,6 @@
+ include $(top_srcdir)/Makefile.decl
+
+-SUBDIRS = . tests
++SUBDIRS = .
+
+ AM_CPPFLAGS = \
+ -I$(top_srcdir) \
diff --git a/win32/patches/libtasn1.patch b/win32/patches/libtasn1.patch
new file mode 100644
index 0000000000..a9b87ce03f
--- /dev/null
+++ b/win32/patches/libtasn1.patch
@@ -0,0 +1,42 @@
+diff -upr libtasn1-3.4.old/config.h libtasn1-3.4/config.h
+--- libtasn1-3.4.old/config.h 2014-03-24 22:51:20 +0000
++++ libtasn1-3.4/config.h 2014-03-24 22:53:52 +0000
+@@ -558,7 +558,7 @@
+ #define HAVE_WINSOCK2_H 1
+
+ /* Define to 1 if you have the `_ftelli64' function. */
+-#define HAVE__FTELLI64 1
++#undef HAVE__FTELLI64
+
+ /* Define to 1 if you have the `_ftime' function. */
+ #define HAVE__FTIME 1
+diff -upr libtasn1-3.4.old/gl/msvc-inval.c libtasn1-3.4/gl/msvc-inval.c
+--- libtasn1-3.4.old/gl/msvc-inval.c 2014-03-24 22:52:55 +0000
++++ libtasn1-3.4/gl/msvc-inval.c 2014-03-24 22:50:23 +0000
+@@ -28,7 +28,7 @@
+
+ # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+
+-static void cdecl
++static void __cdecl
+ gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+@@ -45,7 +45,7 @@ gl_msvc_invalid_parameter_handler (const
+
+ # if defined _MSC_VER
+
+-static void cdecl
++static void __cdecl
+ gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+@@ -94,7 +94,7 @@ gl_msvc_inval_current (void)
+ }
+ }
+
+-static void cdecl
++static void __cdecl
+ gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
diff --git a/win32/patches/libxslt.patch b/win32/patches/libxslt.patch
new file mode 100644
index 0000000000..6605d4efc2
--- /dev/null
+++ b/win32/patches/libxslt.patch
@@ -0,0 +1,24 @@
+diff -upr -x .deps -x .libs -x '*.la' libxslt-1.1.28.old/Makefile.am libxslt-1.1.28/Makefile.am
+--- libxslt-1.1.28.old/Makefile.am 2014-05-18 08:43:11 +0000
++++ libxslt-1.1.28/Makefile.am 2014-05-18 08:29:50 +0000
+@@ -2,7 +2,6 @@ SUBDIRS = \
+ libxslt \
+ libexslt \
+ xsltproc \
+- doc \
+ $(PYTHON_SUBDIR) \
+ tests
+
+diff -upr -x .deps -x .libs -x '*.la' libxslt-1.1.28.old/libxslt/security.c libxslt-1.1.28/libxslt/security.c
+--- libxslt-1.1.28.old/libxslt/security.c 2012-11-21 07:22:59 +0000
++++ libxslt-1.1.28/libxslt/security.c 2014-05-18 08:42:42 +0000
+@@ -40,6 +40,9 @@
+ #define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
+ #endif
+ #endif
++#if defined(WIN32)
++#include "win32config.h"
++#endif
+
+ #ifndef HAVE_STAT
+ # ifdef HAVE__STAT
diff --git a/win32/patches/ncurses.patch b/win32/patches/ncurses.patch
new file mode 100644
index 0000000000..eb357cfa06
--- /dev/null
+++ b/win32/patches/ncurses.patch
@@ -0,0 +1,15 @@
+diff -upr ncurses-5.9.old/include/curses.tail ncurses-5.9/include/curses.tail
+--- ncurses-5.9.old/include/curses.tail 2014-03-19 18:30:52 +0000
++++ ncurses-5.9/include/curses.tail 2014-03-19 18:31:25 +0000
+@@ -142,6 +142,11 @@ extern NCURSES_EXPORT(char *) _traceccha
+ #define _tracech_t _tracechtype
+ #define _tracech_t2 _tracechtype2
+ #endif
++
++#if defined(__MINGW32__)
++#undef trace
++#endif
++
+ extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *);
+ extern NCURSES_EXPORT(void) trace (const unsigned int);
+
diff --git a/win32/patches/nss.patch b/win32/patches/nss.patch
new file mode 100644
index 0000000000..7cbf8eff5f
--- /dev/null
+++ b/win32/patches/nss.patch
@@ -0,0 +1,464 @@
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/include/md/_win32_errors.h nss-3.15.4/nspr/pr/include/md/_win32_errors.h
+--- nss-3.15.4.old/nspr/pr/include/md/_win32_errors.h 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/include/md/_win32_errors.h 2014-07-29 18:09:32 +0000
+@@ -6,8 +6,8 @@
+ #ifndef nspr_win32_errors_h___
+ #define nspr_win32_errors_h___
+
++#include <winsock2.h>
+ #include <windows.h>
+-#include <winsock.h>
+ #include <errno.h>
+
+
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/include/md/_win95.h nss-3.15.4/nspr/pr/include/md/_win95.h
+--- nss-3.15.4.old/nspr/pr/include/md/_win95.h 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/include/md/_win95.h 2014-07-29 18:09:32 +0000
+@@ -8,8 +8,8 @@
+
+ #include "prio.h"
+
++#include <winsock2.h>
+ #include <windows.h>
+-#include <winsock.h>
+ #include <errno.h>
+
+ /*
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/include/md/_winnt.h nss-3.15.4/nspr/pr/include/md/_winnt.h
+--- nss-3.15.4.old/nspr/pr/include/md/_winnt.h 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/include/md/_winnt.h 2014-07-29 18:09:32 +0000
+@@ -16,8 +16,8 @@
+ #define _WIN32_WINNT 0x0400
+ #endif /* _WIN32_WINNT */
+
++#include <winsock2.h>
+ #include <windows.h>
+-#include <winsock.h>
+ #ifdef __MINGW32__
+ #include <mswsock.h>
+ #endif
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/include/pratom.h nss-3.15.4/nspr/pr/include/pratom.h
+--- nss-3.15.4.old/nspr/pr/include/pratom.h 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nspr/pr/include/pratom.h 2014-07-29 18:09:32 +0000
+@@ -14,6 +14,11 @@
+ #include "prtypes.h"
+ #include "prlock.h"
+
++#ifdef _WIN32
++#include <winsock2.h>
++#include <windows.h>
++#endif
++
+ PR_BEGIN_EXTERN_C
+
+ /*
+@@ -78,20 +83,20 @@ NSPR_API(PRInt32) PR_AtomicAdd(PRInt32 *
+ ** the macros and functions won't be compatible and can't be used
+ ** interchangeably.
+ */
+-#if defined(_WIN32) && !defined(_WIN32_WCE) && \
+- (!defined(_MSC_VER) || (_MSC_VER >= 1310))
++#if defined(_WIN32) && !defined(_WIN32_WCE)
+
++#if defined(_MSC_VER)
++#if (_MSC_VER >= 1310)
+ long __cdecl _InterlockedIncrement(long volatile *Addend);
+ long __cdecl _InterlockedDecrement(long volatile *Addend);
+ long __cdecl _InterlockedExchange(long volatile *Target, long Value);
+ long __cdecl _InterlockedExchangeAdd(long volatile *Addend, long Value);
++#endif
+
+-#ifdef _MSC_VER
+ #pragma intrinsic(_InterlockedIncrement)
+ #pragma intrinsic(_InterlockedDecrement)
+ #pragma intrinsic(_InterlockedExchange)
+ #pragma intrinsic(_InterlockedExchangeAdd)
+-#endif
+
+ #define PR_ATOMIC_INCREMENT(val) _InterlockedIncrement((long volatile *)(val))
+ #define PR_ATOMIC_DECREMENT(val) _InterlockedDecrement((long volatile *)(val))
+@@ -100,6 +105,15 @@ long __cdecl _InterlockedExchangeAdd(lon
+ #define PR_ATOMIC_ADD(ptr, val) \
+ (_InterlockedExchangeAdd((long volatile *)(ptr), (long)(val)) + (val))
+
++#elif defined(__MINGW32__)
++#define PR_ATOMIC_INCREMENT(val) InterlockedIncrement((long volatile *)(val))
++#define PR_ATOMIC_DECREMENT(val) InterlockedDecrement((long volatile *)(val))
++#define PR_ATOMIC_SET(val, newval) \
++ InterlockedExchange((long volatile *)(val), (long)(newval))
++#define PR_ATOMIC_ADD(ptr, val) \
++ (InterlockedExchangeAdd((long volatile *)(ptr), (long)(val)) + (val))
++#endif
++
+ #elif ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) && \
+ ((defined(__APPLE__) && \
+ (defined(__ppc__) || defined(__i386__) || defined(__x86_64__))) || \
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/prosdep.c nss-3.15.4/nspr/pr/src/md/prosdep.c
+--- nss-3.15.4.old/nspr/pr/src/md/prosdep.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/prosdep.c 2014-07-29 18:09:32 +0000
+@@ -10,6 +10,7 @@
+ #include <unistd.h>
+ #endif
+ #ifdef _WIN32
++#include <winsock2.h>
+ #include <windows.h>
+ #endif
+ #ifdef XP_BEOS
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/windows/ntdllmn.c nss-3.15.4/nspr/pr/src/md/windows/ntdllmn.c
+--- nss-3.15.4.old/nspr/pr/src/md/windows/ntdllmn.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/windows/ntdllmn.c 2014-07-29 18:09:32 +0000
+@@ -16,6 +16,7 @@
+ * or not.
+ */
+
++#include <winsock2.h>
+ #include <windows.h>
+ #include <primpl.h>
+
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/windows/ntgc.c nss-3.15.4/nspr/pr/src/md/windows/ntgc.c
+--- nss-3.15.4.old/nspr/pr/src/md/windows/ntgc.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/windows/ntgc.c 2014-07-29 18:09:32 +0000
+@@ -7,6 +7,7 @@
+ * GC related routines
+ *
+ */
++#include <winsock2.h>
+ #include <windows.h>
+ #include "primpl.h"
+
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/windows/ntio.c nss-3.15.4/nspr/pr/src/md/windows/ntio.c
+--- nss-3.15.4.old/nspr/pr/src/md/windows/ntio.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/windows/ntio.c 2014-07-29 18:09:32 +0000
+@@ -2461,7 +2461,7 @@ _PR_MD_WRITE(PRFileDesc *fd, const void
+ PRInt32
+ _PR_MD_SOCKETAVAILABLE(PRFileDesc *fd)
+ {
+- PRInt32 result;
++ u_long result;
+
+ if (ioctlsocket(fd->secret->md.osfd, FIONREAD, &result) < 0) {
+ PR_SetError(PR_BAD_DESCRIPTOR_ERROR, WSAGetLastError());
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/windows/ntmisc.c nss-3.15.4/nspr/pr/src/md/windows/ntmisc.c
+--- nss-3.15.4.old/nspr/pr/src/md/windows/ntmisc.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/windows/ntmisc.c 2014-07-29 18:09:32 +0000
+@@ -10,6 +10,7 @@
+
+ #include "primpl.h"
+ #include <math.h> /* for fabs() */
++#include <winsock2.h>
+ #include <windows.h>
+
+ char *_PR_MD_GET_ENV(const char *name)
+@@ -769,10 +770,14 @@ PRStatus _PR_WaitWindowsProcess(PRProces
+ return PR_FAILURE;
+ }
+ PR_ASSERT(dwRetVal == WAIT_OBJECT_0);
+- if (exitCode != NULL &&
+- GetExitCodeProcess(process->md.handle, exitCode) == FALSE) {
+- PR_SetError(PR_UNKNOWN_ERROR, GetLastError());
+- return PR_FAILURE;
++ if (exitCode != NULL) {
++ DWORD dwExitCode = 0;
++ if (GetExitCodeProcess(process->md.handle, &dwExitCode) == FALSE) {
++ *exitCode = dwExitCode;
++ PR_SetError(PR_UNKNOWN_ERROR, GetLastError());
++ return PR_FAILURE;
++ }
++ *exitCode = dwExitCode;
+ }
+ CloseHandle(process->md.handle);
+ PR_DELETE(process);
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/windows/w32rng.c nss-3.15.4/nspr/pr/src/md/windows/w32rng.c
+--- nss-3.15.4.old/nspr/pr/src/md/windows/w32rng.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/windows/w32rng.c 2014-07-29 18:09:32 +0000
+@@ -3,6 +3,7 @@
+ * 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/. */
+
++#include <winsock2.h>
+ #include <windows.h>
+ #include <time.h>
+ #include <io.h>
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/windows/w95dllmain.c nss-3.15.4/nspr/pr/src/md/windows/w95dllmain.c
+--- nss-3.15.4.old/nspr/pr/src/md/windows/w95dllmain.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/windows/w95dllmain.c 2014-07-29 18:09:32 +0000
+@@ -10,6 +10,7 @@
+ * nspr.
+ */
+
++#include <winsock2.h>
+ #include <windows.h>
+ #include <primpl.h>
+
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/windows/w95sock.c nss-3.15.4/nspr/pr/src/md/windows/w95sock.c
+--- nss-3.15.4.old/nspr/pr/src/md/windows/w95sock.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/windows/w95sock.c 2014-07-29 18:09:32 +0000
+@@ -110,7 +110,7 @@ _MD_CloseSocket(PROsfd osfd)
+ PRInt32
+ _MD_SocketAvailable(PRFileDesc *fd)
+ {
+- PRInt32 result;
++ u_long result;
+
+ if (ioctlsocket(fd->secret->md.osfd, FIONREAD, &result) < 0) {
+ PR_SetError(PR_BAD_DESCRIPTOR_ERROR, WSAGetLastError());
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/md/windows/win32_errors.c nss-3.15.4/nspr/pr/src/md/windows/win32_errors.c
+--- nss-3.15.4.old/nspr/pr/src/md/windows/win32_errors.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/md/windows/win32_errors.c 2014-07-29 18:09:32 +0000
+@@ -6,6 +6,7 @@
+ #include "prerror.h"
+ #include "prlog.h"
+ #include <errno.h>
++#include <winsock2.h>
+ #include <windows.h>
+
+ /*
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nspr/pr/src/misc/prtpool.c nss-3.15.4/nspr/pr/src/misc/prtpool.c
+--- nss-3.15.4.old/nspr/pr/src/misc/prtpool.c 2013-11-09 09:49:40 +0000
++++ nss-3.15.4/nspr/pr/src/misc/prtpool.c 2014-07-29 18:09:32 +0000
+@@ -12,6 +12,7 @@
+ *
+ */
+ #ifdef OPT_WINNT
++#include <winsock2.h>
+ #include <windows.h>
+ #endif
+
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/cmd/crmftest/Makefile nss-3.15.4/nss/cmd/crmftest/Makefile
+--- nss-3.15.4.old/nss/cmd/crmftest/Makefile 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/cmd/crmftest/Makefile 2014-07-29 18:09:32 +0000
+@@ -58,7 +58,7 @@ include $(CORE_DEPTH)/coreconf/rules.mk
+ LDDIST = $(DIST)/lib
+
+ ifeq (,$(filter-out WIN%,$(OS_TARGET)))
+-EXTRA_LIBS += $(LDDIST)/sectool.lib
++EXTRA_LIBS += $(LDDIST)/$(LIB_PREFIX)sectool.$(LIB_SUFFIX)
+ endif
+
+ include ../platrules.mk
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/cmd/manifest.mn nss-3.15.4/nss/cmd/manifest.mn
+--- nss-3.15.4.old/nss/cmd/manifest.mn 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/cmd/manifest.mn 2014-07-29 18:09:32 +0000
+@@ -47,7 +47,6 @@ DIRS = lib \
+ selfserv \
+ signtool \
+ signver \
+- $(SHLIBSIGN_SRCDIR) \
+ smimetools \
+ ssltap \
+ strsclnt \
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/cmd/p7env/p7env.c nss-3.15.4/nss/cmd/p7env/p7env.c
+--- nss-3.15.4.old/nss/cmd/p7env/p7env.c 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/cmd/p7env/p7env.c 2014-07-29 18:09:32 +0000
+@@ -14,6 +14,14 @@
+ #include "certdb.h"
+ #include "nss.h"
+
++#if defined(XP_WIN32)
++#include <winsock2.h>
++#include <windows.h>
++#ifdef EncryptFile
++#undef EncryptFile
++#endif
++#endif
++
+ #if defined(XP_UNIX)
+ #include <unistd.h>
+ #endif
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/cmd/platlibs.mk nss-3.15.4/nss/cmd/platlibs.mk
+--- nss-3.15.4.old/nss/cmd/platlibs.mk 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/cmd/platlibs.mk 2014-07-29 18:09:32 +0000
+@@ -80,6 +80,7 @@ EXTRA_LIBS += \
+ $(DIST)/lib/$(LIB_PREFIX)cryptohi.$(LIB_SUFFIX) \
+ $(DIST)/lib/$(LIB_PREFIX)pk11wrap.$(LIB_SUFFIX) \
+ $(DIST)/lib/$(LIB_PREFIX)certdb.$(LIB_SUFFIX) \
++ $(DIST)/lib/$(LIB_PREFIX)certhi.$(LIB_SUFFIX) \
+ $(SOFTOKENLIB) \
+ $(CRYPTOLIB) \
+ $(DIST)/lib/$(LIB_PREFIX)nsspki.$(LIB_SUFFIX) \
+@@ -95,10 +96,19 @@ EXTRA_LIBS += \
+ $(NULL)
+
+ # $(PROGRAM) has NO explicit dependencies on $(OS_LIBS)
+-#OS_LIBS += \
++ifdef NS_USE_GCC
++ OS_LIBS += \
++ -lws2_32 \
++ -lwsock32 \
++ -lwinmm \
++ $(NULL)
++else
++ OS_LIBS += \
+ wsock32.lib \
+ winmm.lib \
+ $(NULL)
++endif
++
+ else
+
+ EXTRA_LIBS += \
+@@ -167,10 +177,19 @@ EXTRA_LIBS += \
+ $(NULL)
+
+ # $(PROGRAM) has NO explicit dependencies on $(OS_LIBS)
+-#OS_LIBS += \
++ifdef NS_USE_GCC
++ OS_LIBS += \
++ -lws2_32 \
++ -lwsock32 \
++ -lwinmm \
++ $(NULL)
++else
++ OS_LIBS += \
+ wsock32.lib \
+ winmm.lib \
+ $(NULL)
++endif
++
+ else
+
+ # $(PROGRAM) has explicit dependencies on $(EXTRA_LIBS)
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/cmd/shlibsign/shlibsign.c nss-3.15.4/nss/cmd/shlibsign/shlibsign.c
+--- nss-3.15.4.old/nss/cmd/shlibsign/shlibsign.c 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/cmd/shlibsign/shlibsign.c 2014-07-29 18:09:32 +0000
+@@ -560,7 +560,7 @@ softokn_Init(CK_FUNCTION_LIST_PTR pFunct
+ CK_C_INITIALIZE_ARGS initArgs;
+ char *moduleSpec = NULL;
+
+- initArgs.CreateMutex = NULL;
++ initArgs.GenerateMutex = NULL;
+ initArgs.DestroyMutex = NULL;
+ initArgs.LockMutex = NULL;
+ initArgs.UnlockMutex = NULL;
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/coreconf/WINNT.mk nss-3.15.4/nss/coreconf/WINNT.mk
+--- nss-3.15.4.old/nss/coreconf/WINNT.mk 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/coreconf/WINNT.mk 2014-07-29 18:09:32 +0000
+@@ -12,9 +12,14 @@ include $(CORE_DEPTH)/coreconf/WIN32.mk
+ DEFINES += -DWINNT
+
+ #
+-# Win NT needs -GT so that fibers can work
++# MinGW needs IE 4.0 to have SHGetSpecialFolderPath functions
++# MSVC needs -GT so that fibers can work
+ #
+-OS_CFLAGS += -GT
++ifdef NS_USE_GCC
++ OS_CFLAGS += -D_WIN32_IE=0x0400
++else
++ OS_CFLAGS += -GT
++endif
+
+ # WINNT uses the lib prefix, Win95 doesn't
+ NSPR31_LIB_PREFIX = lib
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/lib/ckfw/wrap.c nss-3.15.4/nss/lib/ckfw/wrap.c
+--- nss-3.15.4.old/nss/lib/ckfw/wrap.c 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/lib/ckfw/wrap.c 2014-07-29 18:09:32 +0000
+@@ -107,7 +107,7 @@ nssCKFW_GetThreadSafeState(CK_C_INITIALI
+ *pLocking_state = MultiThreaded;
+ return CKR_OK;
+ }
+- if ((CK_CREATEMUTEX) NULL != pInitArgs->CreateMutex) functionCount++;
++ if ((CK_CREATEMUTEX) NULL != pInitArgs->GenerateMutex) functionCount++;
+ if ((CK_DESTROYMUTEX) NULL != pInitArgs->DestroyMutex) functionCount++;
+ if ((CK_LOCKMUTEX) NULL != pInitArgs->LockMutex) functionCount++;
+ if ((CK_UNLOCKMUTEX) NULL != pInitArgs->UnlockMutex) functionCount++;
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_object.c nss-3.15.4/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_object.c
+--- nss-3.15.4.old/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_object.c 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_object.c 2014-07-29 18:09:32 +0000
+@@ -480,6 +480,8 @@ cleanup:
+ * work as proxy function to a real objects.
+ *
+ */
++#undef ERROR
++
+ PKIX_Error *
+ pkix_pl_Object_RegisterSelf(void *plContext)
+ {
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/lib/softoken/legacydb/manifest.mn nss-3.15.4/nss/lib/softoken/legacydb/manifest.mn
+--- nss-3.15.4.old/nss/lib/softoken/legacydb/manifest.mn 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/lib/softoken/legacydb/manifest.mn 2014-07-29 18:09:32 +0000
+@@ -12,6 +12,8 @@ LIBRARY_NAME = nssdbm
+ LIBRARY_VERSION = 3
+ MAPFILE = $(OBJDIR)/nssdbm.def
+
++OS_CFLAGS += -I../../../../../dbm/include
++
+ DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\"
+
+ CSRCS = \
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/lib/softoken/pkcs11.c nss-3.15.4/nss/lib/softoken/pkcs11.c
+--- nss-3.15.4.old/nss/lib/softoken/pkcs11.c 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/lib/softoken/pkcs11.c 2014-07-29 18:09:32 +0000
+@@ -2855,7 +2855,7 @@ CK_RV nsc_CommonInitialize(CK_VOID_PTR p
+
+ /* initialize the key and cert db's */
+ if (init_args && (!(init_args->flags & CKF_OS_LOCKING_OK))) {
+- if (init_args->CreateMutex && init_args->DestroyMutex &&
++ if (init_args->GenerateMutex && init_args->DestroyMutex &&
+ init_args->LockMutex && init_args->UnlockMutex) {
+ /* softoken always uses NSPR (ie. OS locking), and doesn't know how
+ * to use the lock functions provided by the application.
+@@ -2863,7 +2863,7 @@ CK_RV nsc_CommonInitialize(CK_VOID_PTR p
+ crv = CKR_CANT_LOCK;
+ return crv;
+ }
+- if (init_args->CreateMutex || init_args->DestroyMutex ||
++ if (init_args->GenerateMutex || init_args->DestroyMutex ||
+ init_args->LockMutex || init_args->UnlockMutex) {
+ /* only some of the lock functions were provided by the
+ * application. This is invalid per PKCS#11 spec.
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/lib/ssl/sslmutex.c nss-3.15.4/nss/lib/ssl/sslmutex.c
+--- nss-3.15.4.old/nss/lib/ssl/sslmutex.c 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/lib/ssl/sslmutex.c 2014-07-29 18:09:32 +0000
+@@ -6,6 +6,11 @@
+ /* This ifdef should match the one in sslsnce.c */
+ #if defined(XP_UNIX) || defined(XP_WIN32) || defined (XP_OS2) || defined(XP_BEOS)
+
++#if defined(XP_WIN32)
++#include <winsock2.h>
++#include <windows.h>
++#endif
++
+ #include "sslmutex.h"
+ #include "prerr.h"
+
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/lib/util/pkcs11t.h nss-3.15.4/nss/lib/util/pkcs11t.h
+--- nss-3.15.4.old/nss/lib/util/pkcs11t.h 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/lib/util/pkcs11t.h 2014-07-29 18:09:32 +0000
+@@ -1181,7 +1181,7 @@ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_U
+ /* CK_C_INITIALIZE_ARGS provides the optional arguments to
+ * C_Initialize */
+ typedef struct CK_C_INITIALIZE_ARGS {
+- CK_CREATEMUTEX CreateMutex;
++ CK_CREATEMUTEX GenerateMutex;
+ CK_DESTROYMUTEX DestroyMutex;
+ CK_LOCKMUTEX LockMutex;
+ CK_UNLOCKMUTEX UnlockMutex;
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/lib/util/secport.c nss-3.15.4/nss/lib/util/secport.c
+--- nss-3.15.4.old/nss/lib/util/secport.c 2014-07-29 17:38:22 +0000
++++ nss-3.15.4/nss/lib/util/secport.c 2014-07-29 18:09:32 +0000
+@@ -31,6 +31,10 @@
+ #if defined(XP_UNIX) || defined(XP_OS2) || defined(XP_BEOS)
+ #include <stdlib.h>
+ #else
++#if defined(XP_WIN32)
++#include <winsock2.h>
++#include <windows.h>
++#endif
+ #include "wtypes.h"
+ #endif
+
+diff -upr -x .deps -x .libs -x '*.la' nss-3.15.4.old/nss/nss.pc nss-3.15.4/nss/nss.pc
+--- nss-3.15.4.old/nss/nss.pc 2014-07-29 17:44:30 +0000
++++ nss-3.15.4/nss/nss.pc 2014-07-29 18:09:32 +0000
+@@ -0,0 +1,10 @@
++exec_prefix=${prefix}
++libdir=${exec_prefix}/lib
++includedir=${prefix}/include/nss
++
++Name: NSS
++Description: The Netscape Security Services
++Version: 3.15.4
++Requires: nspr
++Libs: -L${exec_prefix}/lib -lssl3 -lsmime3 -lnss3 -lnssutil3
++Cflags: -I${prefix}/include/nss
diff --git a/win32/patches/openldap.patch b/win32/patches/openldap.patch
new file mode 100644
index 0000000000..3f737f014c
--- /dev/null
+++ b/win32/patches/openldap.patch
@@ -0,0 +1,82 @@
+diff -upr openldap-2.4.9.old/Makefile openldap-2.4.9/Makefile
+--- openldap-2.4.9.old/Makefile 2014-03-26 05:17:05 +0000
++++ openldap-2.4.9/Makefile 2014-03-26 21:20:23 +0000
+@@ -264,7 +264,7 @@ FORCE:
+ ## top-level directory of the distribution or, alternatively, at
+ ## <http://www.OpenLDAP.org/license.html>.
+
+-SUBDIRS= include libraries clients servers tests doc
++SUBDIRS= include libraries clients servers
+ CLEANDIRS=
+ INSTALLDIRS=
+
+diff -upr openldap-2.4.9.old/Makefile.in openldap-2.4.9/Makefile.in
+--- openldap-2.4.9.old/Makefile.in 2014-03-26 05:17:05 +0000
++++ openldap-2.4.9/Makefile.in 2014-03-26 21:20:00 +0000
+@@ -13,7 +13,7 @@
+ ## top-level directory of the distribution or, alternatively, at
+ ## <http://www.OpenLDAP.org/license.html>.
+
+-SUBDIRS= include libraries clients servers tests doc
++SUBDIRS= include libraries clients servers
+ CLEANDIRS=
+ INSTALLDIRS=
+
+diff -upr openldap-2.4.9.old/include/ldap_pvt_thread.h openldap-2.4.9/include/ldap_pvt_thread.h
+--- openldap-2.4.9.old/include/ldap_pvt_thread.h 2014-03-26 05:17:20 +0000
++++ openldap-2.4.9/include/ldap_pvt_thread.h 2014-03-26 21:19:42 +0000
+@@ -61,7 +61,7 @@ ldap_pvt_thread_set_concurrency LDAP_P((
+ #define LDAP_PVT_THREAD_SET_STACK_SIZE
+ #ifndef LDAP_PVT_THREAD_STACK_SIZE
+ /* LARGE stack. Will be twice as large on 64 bit machine. */
+-#define LDAP_PVT_THREAD_STACK_SIZE ( 1 * 1024 * 1024 * sizeof(void *) )
++#define LDAP_PVT_THREAD_STACK_SIZE ( 1 * 1024 * 1024 * 4 )
+ /* May be explicitly defined to zero to disable it */
+ #elif LDAP_PVT_THREAD_STACK_SIZE == 0
+ #undef LDAP_PVT_THREAD_SET_STACK_SIZE
+diff -upr openldap-2.4.9.old/include/portable.h openldap-2.4.9/include/portable.h
+--- openldap-2.4.9.old/include/portable.h 2014-03-26 05:17:20 +0000
++++ openldap-2.4.9/include/portable.h 2014-03-26 21:19:42 +0000
+@@ -1086,7 +1086,7 @@
+ #define snprintf _snprintf
+
+ /* Define like ber_socklen_t if <sys/socket.h> does not define. */
+-#define socklen_t int
++/*#define socklen_t int*/
+
+ /* Define to `signed int' if <sys/types.h> does not define. */
+ /* #undef ssize_t */
+diff -upr openldap-2.4.9.old/libraries/libldap_r/Makefile openldap-2.4.9/libraries/libldap_r/Makefile
+--- openldap-2.4.9.old/libraries/libldap_r/Makefile 2014-03-26 05:17:20 +0000
++++ openldap-2.4.9/libraries/libldap_r/Makefile 2014-03-26 21:19:42 +0000
+@@ -304,10 +304,10 @@ LIB_DEFS = -DLDAP_LIBRARY
+
+ XDEFS = -DLDAP_R_COMPILE -I$(XXDIR)
+ XLIBS = $(LIBRARY) $(LDAP_LIBLBER_LA) $(LDAP_LIBLUTIL_A)
+-XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS)
++XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS) -lgcrypt
+ XXXLIBS = $(LTHREAD_LIBS)
+-NT_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS)
+-UNIX_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) $(LTHREAD_LIBS)
++NT_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) -lgcrypt
++UNIX_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) $(LTHREAD_LIBS) -lgcrypt
+
+ .links : Makefile
+ @for i in $(XXSRCS); do \
+diff -upr openldap-2.4.9.old/libraries/libldap_r/Makefile.in openldap-2.4.9/libraries/libldap_r/Makefile.in
+--- openldap-2.4.9.old/libraries/libldap_r/Makefile.in 2014-03-26 05:17:20 +0000
++++ openldap-2.4.9/libraries/libldap_r/Makefile.in 2014-03-26 21:19:42 +0000
+@@ -53,10 +53,10 @@ LIB_DEFS = -DLDAP_LIBRARY
+
+ XDEFS = -DLDAP_R_COMPILE -I$(XXDIR)
+ XLIBS = $(LIBRARY) $(LDAP_LIBLBER_LA) $(LDAP_LIBLUTIL_A)
+-XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS)
++XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS) -lgcrypt
+ XXXLIBS = $(LTHREAD_LIBS)
+-NT_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS)
+-UNIX_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) $(LTHREAD_LIBS)
++NT_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) -lgcrypt
++UNIX_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) $(LTHREAD_LIBS) -lgcrypt
+
+ .links : Makefile
+ @for i in $(XXSRCS); do \
diff --git a/win32/patches/p11-kit.patch b/win32/patches/p11-kit.patch
new file mode 100644
index 0000000000..00694bbfc2
--- /dev/null
+++ b/win32/patches/p11-kit.patch
@@ -0,0 +1,60 @@
+diff -upr p11-kit-98292d6bbc.old/configure.ac p11-kit-98292d6bbc/configure.ac
+--- p11-kit-98292d6bbc.old/configure.ac 2014-03-24 21:44:56 +0000
++++ p11-kit-98292d6bbc/configure.ac 2014-03-24 20:45:41 +0000
+@@ -22,7 +22,7 @@ P11KIT_AGE=0
+ AC_CONFIG_HEADERS([config.h])
+ AC_CONFIG_MACRO_DIR([build/m4])
+ AC_CONFIG_AUX_DIR([build/litter])
+-AM_INIT_AUTOMAKE([1.10 foreign serial-tests])
++AM_INIT_AUTOMAKE([1.10 foreign])
+ AM_SANITY_CHECK
+ AM_MAINTAINER_MODE([enable])
+ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
+diff -upr p11-kit-98292d6bbc.old/common/compat.c p11-kit-98292d6bbc/common/compat.c
+--- p11-kit-98292d6bbc.old/common/compat.c 2014-03-26 05:06:34 +0000
++++ p11-kit-98292d6bbc/common/compat.c 2014-03-26 05:04:47 +0000
+@@ -840,7 +840,17 @@ strerror_r (int errnum,
+ size_t buflen)
+ {
+ #ifdef OS_WIN32
++ #ifdef __MINGW32__
++ char *str = strerror (errnum);
++ if (!str) {
++ *buf = 0;
++ return EINVAL;
++ }
++ strncpy (buf, str, buflen);
++ return 0;
++ #else
+ return strerror_s (buf, buflen, errnum);
++ #endif
+ #else
+ #error no strerror_r implementation
+ #endif
+diff -upr p11-kit-98292d6bbc.old/p11-kit/Makefile.am p11-kit-98292d6bbc/p11-kit/Makefile.am
+--- p11-kit-98292d6bbc.old/p11-kit/Makefile.am 2014-03-26 05:06:05 +0000
++++ p11-kit-98292d6bbc/p11-kit/Makefile.am 2014-03-24 23:17:41 +0000
+@@ -98,6 +98,11 @@ libp11_kit_testable_la_CFLAGS = \
+ $(LIBFFI_CFLAGS) \
+ $(NULL)
+
++# Proxy module is actually same as library, so install a link
++install-exec-hook:
++ $(LN_S) -f `readlink $(DESTDIR)$(libdir)/libp11-kit.so` $(DESTDIR)$(libdir)/p11-kit-proxy.so
++ $(MKDIR_P) $(DESTDIR)$(p11_package_config_modules)
++
+ endif
+
+ pkgconfigdir = $(libdir)/pkgconfig
+@@ -112,11 +117,6 @@ EXTRA_DIST = \
+ docs.h \
+ $(NULL)
+
+-# Proxy module is actually same as library, so install a link
+-install-exec-hook:
+- $(LN_S) -f `readlink $(DESTDIR)$(libdir)/libp11-kit.so` $(DESTDIR)$(libdir)/p11-kit-proxy.so
+- $(MKDIR_P) $(DESTDIR)$(p11_package_config_modules)
+-
+ bin_PROGRAMS = \
+ p11-kit
+
diff --git a/win32/patches/regex.patch b/win32/patches/regex.patch
new file mode 100644
index 0000000000..cb39919944
--- /dev/null
+++ b/win32/patches/regex.patch
@@ -0,0 +1,48 @@
+diff -upr -x .deps -x .libs -x '*.la' regex-20090805.old/lib/gettext.h regex-20090805/lib/gettext.h
+--- regex-20090805.old/lib/gettext.h 2009-08-05 19:37:29 +0000
++++ regex-20090805/lib/gettext.h 2014-05-31 06:05:12 +0000
+@@ -178,7 +178,7 @@ npgettext_aux (const char *domain,
+ #include <string.h>
+
+ #define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
+- (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
++ (((__GNUC__ >= 3 || __GNUG__ >= 2) && (defined(__STRICT_ANSI__) && !__STRICT_ANSI__)) \
+ /* || __STDC_VERSION__ >= 199901L */ )
+
+ #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+diff -upr -x .deps -x .libs -x '*.la' regex-20090805.old/lib/regex.h regex-20090805/lib/regex.h
+--- regex-20090805.old/lib/regex.h 2009-08-05 19:37:32 +0000
++++ regex-20090805/lib/regex.h 2014-05-31 06:05:29 +0000
+@@ -630,7 +630,7 @@ extern int re_exec (const char *);
+ 'configure' might #define 'restrict' to those words, so pick a
+ different name. */
+ #ifndef _Restrict_
+-# if 199901L <= __STDC_VERSION__
++# if (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__)
+ # define _Restrict_ restrict
+ # elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)
+ # define _Restrict_ __restrict
+@@ -642,9 +642,9 @@ extern int re_exec (const char *);
+ sys/cdefs.h's definition of __restrict_arr, though, as it
+ mishandles gcc -ansi -pedantic. */
+ #ifndef _Restrict_arr_
+-# if ((199901L <= __STDC_VERSION__ \
++# if (((defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) \
+ || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__)) \
+- && !__STRICT_ANSI__)) \
++ && (!defined(__STRICT_ANSI__) || !__STRICT_ANSI__))) \
+ && !defined __GNUG__)
+ # define _Restrict_arr_ _Restrict_
+ # else
+diff -upr -x .deps -x .libs -x '*.la' regex-20090805.old/lib/regex_internal.h regex-20090805/lib/regex_internal.h
+--- regex-20090805.old/lib/regex_internal.h 2009-08-05 19:37:33 +0000
++++ regex-20090805/lib/regex_internal.h 2014-05-31 06:05:50 +0000
+@@ -338,7 +338,7 @@ typedef struct
+ Idx idx; /* for BACK_REF */
+ re_context_type ctx_type; /* for ANCHOR */
+ } opr;
+-#if __GNUC__ >= 2 && !__STRICT_ANSI__
++#if __GNUC__ >= 2 && (defined(__STRICT_ANSI__) && !__STRICT_ANSI__)
+ re_token_type_t type : 8;
+ #else
+ re_token_type_t type;
diff --git a/win32/patches/rss.patch b/win32/patches/rss.patch
new file mode 100644
index 0000000000..5fa6194387
--- /dev/null
+++ b/win32/patches/rss.patch
@@ -0,0 +1,101 @@
+diff --git a/configure.ac b/configure.ac
+index 6679ab5..f7fdae5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -104,6 +104,7 @@ PKG_CHECK_MODULES(EVOLUTION_RSS_EPLUGIN,
+ libsoup$SOUP >= $LIBSOUP_REQUIRED dnl
+ $EVOLUTION_PLUGIN_CHECK dnl
+ evolution-shell$EVOLUTION_BASE_VERSION_S >= $EVOLUTION_REQUIRED dnl
++ evolution-mail$EVOLUTION_BASE_VERSION_S >= $EVOLUTION_REQUIRED dnl
+ $EVOLUTION_ADDITIONAL dnl
+ libebook-1.2 dnl
+ ])
+@@ -316,12 +317,6 @@ AC_SUBST(RENDER_CFLAGS)
+ AC_SUBST(RENDER)
+ AC_SUBST(RENDER_N)
+
+-dnl ***********
+-dnl GConf stuff
+-dnl ***********
+-AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
+-AM_GCONF_SOURCE_2
+-
+ dnl ***************
+ dnl Gsettings stuff
+ dnl ***************
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 91f2671..c0c6ecd 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -130,8 +130,12 @@ evolution_module_rss_la_CPPFLAGS = \
+ $(AM_CPPFLAGS) \
+ -I$(top_srcdir) \
+ -DEVOLUTION_PRIVDATADIR=\""$(privdatadir)"\" \
+- -DG_LOG_DOMAIN=\"evolution-module-rss\" \
+- $(EVOLUTION_RSS_EPLUGIN_LIBS)
++ -DG_LOG_DOMAIN=\"evolution-module-rss\"
++
++evolution_module_rss_la_LIBADD = \
++ $(EVOLUTION_RSS_EPLUGIN_LIBS) \
++ $(DATASERVER_LIBS)
++
+
+
+ evolution_module_rss_la_LDFLAGS = \
+diff --git a/src/e-mail-formatter-evolution-rss.c b/src/e-mail-formatter-evolution-rss.c
+index 6ae8d16..fd581d1 100644
+--- a/src/e-mail-formatter-evolution-rss.c
++++ b/src/e-mail-formatter-evolution-rss.c
+@@ -30,7 +30,6 @@
+ #include <libedataserver/libedataserver.h>
+
+ #include <glib/gi18n-lib.h>
+-#include <X11/Xlib.h>
+ #include <camel/camel.h>
+
+ #include "misc.h"
+diff --git a/src/rss-config-factory.c b/src/rss-config-factory.c
+index a4f22e8..3529a64 100644
+--- a/src/rss-config-factory.c
++++ b/src/rss-config-factory.c
+@@ -552,11 +552,18 @@ folder_cb (GtkWidget *widget, gpointer data)
+ model = em_folder_tree_model_get_default ();
+ #endif
+ #if EVOLUTION_VERSION >= 30303
++#if EVOLUTION_VERSION >= 31301
++ dialog = em_folder_selector_new (window, model);
++ em_folder_selector_set_can_create (EM_FOLDER_SELECTOR (dialog), TRUE);
++ em_folder_selector_set_caption (EM_FOLDER_SELECTOR (dialog), _("Move to Folder"));
++ em_folder_selector_set_default_button_label (EM_FOLDER_SELECTOR (dialog), _("M_ove"));
++#else
+ dialog = em_folder_selector_new (
+ window,
+ model,
+ EM_FOLDER_SELECTOR_CAN_CREATE,
+ _("Move to Folder"), NULL, _("M_ove"));
++#endif
+ #else
+ dialog = em_folder_selector_new (
+ window,
+diff --git a/src/rss-evo-common.c b/src/rss-evo-common.c
+index 1a96862..269565b 100644
+--- a/src/rss-evo-common.c
++++ b/src/rss-evo-common.c
+@@ -55,6 +55,17 @@
+ #include <libsoup/soup-gnome-features.h>
+ #endif
+
++#ifdef G_OS_WIN32
++#include <winsock2.h>
++#include <ws2tcpip.h>
++#ifdef HAVE_WSPIAPI_H
++#include <wspiapi.h>
++#endif
++
++#define IN6_ARE_ADDR_EQUAL(a,b) IN6_ADDR_EQUAL(a,b)
++
++#endif
++
+ #define d(x)
+
+ #include "rss-evo-common.h"
diff --git a/win32/patches/tzdata.patch b/win32/patches/tzdata.patch
new file mode 100644
index 0000000000..97963ced99
--- /dev/null
+++ b/win32/patches/tzdata.patch
@@ -0,0 +1,42 @@
+diff -upr tzdata2014b.old/Makefile tzdata2014b/Makefile
+--- tzdata2014b.old/Makefile 2014-03-30 17:49:03 +0000
++++ tzdata2014b/Makefile 2014-03-30 20:19:53 +0000
+@@ -52,7 +52,7 @@ TOPDIR= /usr/local
+ # Use an absolute path name for TZDIR unless you're just testing the software.
+
+ TZDIR_BASENAME= zoneinfo
+-TZDIR= $(TOPDIR)/etc/$(TZDIR_BASENAME)
++TZDIR= $(TOPDIR)/share/$(TZDIR_BASENAME)
+
+ # Types to try, as an alternative to time_t. int64_t should be first.
+ TIME_T_ALTERNATIVES= int64_t int32_t uint32_t uint64_t
+@@ -223,7 +223,7 @@ GCC_DEBUG_FLAGS = -Dlint -g3 -O3 -fno-co
+ # before the first Monday in January when a "%V" format is used and January 1
+ # falls on a Friday, Saturday, or Sunday.
+
+-CFLAGS=
++CFLAGS=-DHAVE_SYS_WAIT_H=0 -DHAVE_LINK=0 -DHAVE_SYMLINK=0 -DHAVE_STDINT_H=1
+
+ # Linker flags. Default to $(LFLAGS) for backwards compatibility
+ # to tzcode2012h and earlier.
+diff -upr tzdata2014b.old/zic.c tzdata2014b/zic.c
+--- tzdata2014b.old/zic.c 2014-03-30 17:49:03 +0000
++++ tzdata2014b/zic.c 2014-03-30 17:52:02 +0000
+@@ -16,7 +16,7 @@
+ typedef int_fast64_t zic_t;
+ #define ZIC_MIN INT_FAST64_MIN
+ #define ZIC_MAX INT_FAST64_MAX
+-#define SCNdZIC SCNdFAST64
++#define SCNdZIC "lld"
+
+ #ifndef ZIC_MAX_ABBR_LEN_WO_WARN
+ #define ZIC_MAX_ABBR_LEN_WO_WARN 6
+@@ -2814,7 +2814,7 @@ mkdirs(char *argname)
+ ** created by some other multiprocessor, so we get
+ ** to do extra checking.
+ */
+- if (mkdir(name, MKDIR_UMASK) != 0) {
++ if (mkdir(name) != 0) {
+ const char *e = strerror(errno);
+
+ if (errno != EEXIST || !itsdir(name)) {
diff --git a/win32/patches/webkitgtk.patch b/win32/patches/webkitgtk.patch
new file mode 100644
index 0000000000..7cc42fc0f3
--- /dev/null
+++ b/win32/patches/webkitgtk.patch
@@ -0,0 +1,727 @@
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/JavaScriptCore/jit/JITStubsX86.h webkitgtk-2.4.1/Source/JavaScriptCore/jit/JITStubsX86.h
+--- webkitgtk-2.4.1.old/Source/JavaScriptCore/jit/JITStubsX86.h 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/JavaScriptCore/jit/JITStubsX86.h 2014-06-20 19:42:30 +0000
+@@ -32,6 +32,7 @@
+ #define JITStubsX86_h
+
+ #include "JITStubsX86Common.h"
++#include <wtf/InlineASM.h>
+
+ #if !CPU(X86)
+ #error "JITStubsX86.h should only be #included if CPU(X86)"
+@@ -198,6 +199,225 @@ SYMBOL_STRING(ctiMasmProbeTrampolineEnd)
+ );
+ #endif // USE(MASM_PROBE)
+
++#if OS(WINDOWS) && ENABLE(JIT)
++extern "C" {
++
++ // FIXME: Since Windows doesn't use the LLInt, we have inline stubs here.
++ // Until the LLInt is changed to support Windows, these stub needs to be updated.
++ asm (
++ ".globl " SYMBOL_STRING(callToJavaScript) "\n"
++ HIDE_SYMBOL(callToJavaScript) "\n"
++ SYMBOL_STRING(callToJavaScript) ":" "\n"
++ "mov (%esp),%edx" "\n"
++ "push %ebp" "\n"
++ "mov %ebp,%eax" "\n"
++ "mov %esp,%ebp" "\n"
++ "push %esi" "\n"
++ "push %edi" "\n"
++ "push %ebx" "\n"
++ "sub $0x1c,%esp" "\n"
++ "mov 0x34(%esp),%ecx" "\n"
++ "mov 0x38(%esp),%esi" "\n"
++ "mov 0x3c(%esp),%ebp" "\n"
++ "sub $0x20,%ebp" "\n"
++ "movl $0x0,0x24(%ebp)" "\n"
++ "movl $0x0,0x20(%ebp)" "\n"
++ "movl $0x0,0x1c(%ebp)" "\n"
++ "mov %ecx,0x18(%ebp)" "\n"
++ "mov (%ecx),%ebx" "\n"
++ "movl $0x0,0x14(%ebp)" "\n"
++ "mov %ebx,0x10(%ebp)" "\n"
++ "movl $0x0,0xc(%ebp)" "\n"
++ "movl $0x1,0x8(%ebp)" "\n"
++ "mov %edx,0x4(%ebp)" "\n"
++ "mov %eax,0x0(%ebp)" "\n"
++ "mov %ebp,%eax" "\n"
++
++ "mov 0x28(%esi),%edx" "\n"
++ "add $0x5,%edx" "\n"
++ "shl $0x3,%edx" "\n"
++ "sub %edx,%ebp" "\n"
++ "mov %eax,0x0(%ebp)" "\n"
++
++ "mov $0x5,%eax" "\n"
++
++ ".copyHeaderLoop:" "\n"
++ "sub $0x1,%eax" "\n"
++ "mov (%esi,%eax,8),%ecx" "\n"
++ "mov %ecx,0x8(%ebp,%eax,8)" "\n"
++ "mov 0x4(%esi,%eax,8),%ecx" "\n"
++ "mov %ecx,0xc(%ebp,%eax,8)" "\n"
++ "test %eax,%eax" "\n"
++ "jne .copyHeaderLoop" "\n"
++
++ "mov 0x18(%esi),%edx" "\n"
++ "sub $0x1,%edx" "\n"
++ "mov 0x28(%esi),%ecx" "\n"
++ "sub $0x1,%ecx" "\n"
++
++ "cmp %ecx,%edx" "\n"
++ "je .copyArgs" "\n"
++
++ "xor %eax,%eax" "\n"
++ "mov $0xfffffffc,%ebx" "\n"
++
++ ".fillExtraArgsLoop:" "\n"
++ "sub $0x1,%ecx" "\n"
++ "mov %eax,0x30(%ebp,%ecx,8)" "\n"
++ "mov %ebx,0x34(%ebp,%ecx,8)" "\n"
++ "cmp %ecx,%edx" "\n"
++ "jne .fillExtraArgsLoop" "\n"
++
++ ".copyArgs:" "\n"
++ "mov 0x2c(%esi),%eax" "\n"
++
++ ".copyArgsLoop:" "\n"
++ "test %edx,%edx" "\n"
++ "je .copyArgsDone" "\n"
++ "sub $0x1,%edx" "\n"
++ "mov (%eax,%edx,8),%ecx" "\n"
++ "mov 0x4(%eax,%edx,8),%ebx" "\n"
++ "mov %ecx,0x30(%ebp,%edx,8)" "\n"
++ "mov %ebx,0x34(%ebp,%edx,8)" "\n"
++ "jmp .copyArgsLoop" "\n"
++
++ ".copyArgsDone:" "\n"
++ "mov 0x34(%esp),%ecx" "\n"
++ "mov %ebp,(%ecx)" "\n"
++
++ "call *0x30(%esp)" "\n"
++
++ "cmpl $0x1,0x8(%ebp)" "\n"
++ "je .calleeFramePopped" "\n"
++ "mov 0x0(%ebp),%ebp" "\n"
++
++ ".calleeFramePopped:" "\n"
++ "mov 0x18(%ebp),%ecx" "\n"
++ "mov 0x10(%ebp),%ebx" "\n"
++ "mov %ebx,(%ecx)" "\n"
++
++ "add $0x1c,%esp" "\n"
++ "pop %ebx" "\n"
++ "pop %edi" "\n"
++ "pop %esi" "\n"
++ "pop %ebp" "\n"
++ "ret" "\n"
++
++ ".globl " SYMBOL_STRING(returnFromJavaScript) "\n"
++ HIDE_SYMBOL(returnFromJavaScript) "\n"
++ SYMBOL_STRING(returnFromJavaScript) ":" "\n"
++ "add $0x1c,%esp" "\n"
++ "pop %ebx" "\n"
++ "pop %edi" "\n"
++ "pop %esi" "\n"
++ "pop %ebp" "\n"
++ "ret" "\n"
++
++ ".globl " SYMBOL_STRING(callToNativeFunction) "\n"
++ HIDE_SYMBOL(callToNativeFunction) "\n"
++ SYMBOL_STRING(callToNativeFunction) ":" "\n"
++ "mov (%esp),%edx" "\n"
++ "push %ebp" "\n"
++ "mov %ebp,%eax" "\n"
++ "mov %esp,%ebp" "\n"
++ "push %esi" "\n"
++ "push %edi" "\n"
++ "push %ebx" "\n"
++ "sub $0x1c,%esp" "\n"
++ "mov 0x34(%esp),%ecx" "\n"
++ "mov 0x38(%esp),%esi" "\n"
++ "mov 0x3c(%esp),%ebp" "\n"
++ "sub $0x20,%ebp" "\n"
++ "movl $0x0,0x24(%ebp)" "\n"
++ "movl $0x0,0x20(%ebp)" "\n"
++ "movl $0x0,0x1c(%ebp)" "\n"
++ "mov %ecx,0x18(%ebp)" "\n"
++ "mov (%ecx),%ebx" "\n"
++ "movl $0x0,0x14(%ebp)" "\n"
++ "mov %ebx,0x10(%ebp)" "\n"
++ "movl $0x0,0xc(%ebp)" "\n"
++ "movl $0x1,0x8(%ebp)" "\n"
++ "mov %edx,0x4(%ebp)" "\n"
++ "mov %eax,0x0(%ebp)" "\n"
++ "mov %ebp,%eax" "\n"
++
++ "mov 0x28(%esi),%edx" "\n"
++ "add $0x5,%edx" "\n"
++ "shl $0x3,%edx" "\n"
++ "sub %edx,%ebp" "\n"
++ "mov %eax,0x0(%ebp)" "\n"
++
++ "mov $0x5,%eax" "\n"
++
++ "copyHeaderLoop:" "\n"
++ "sub $0x1,%eax" "\n"
++ "mov (%esi,%eax,8),%ecx" "\n"
++ "mov %ecx,0x8(%ebp,%eax,8)" "\n"
++ "mov 0x4(%esi,%eax,8),%ecx" "\n"
++ "mov %ecx,0xc(%ebp,%eax,8)" "\n"
++ "test %eax,%eax" "\n"
++ "jne copyHeaderLoop" "\n"
++
++ "mov 0x18(%esi),%edx" "\n"
++ "sub $0x1,%edx" "\n"
++ "mov 0x28(%esi),%ecx" "\n"
++ "sub $0x1,%ecx" "\n"
++
++ "cmp %ecx,%edx" "\n"
++ "je copyArgs" "\n"
++
++ "xor %eax,%eax" "\n"
++ "mov $0xfffffffc,%ebx" "\n"
++
++ "fillExtraArgsLoop:" "\n"
++ "sub $0x1,%ecx" "\n"
++ "mov %eax,0x30(%ebp,%ecx,8)" "\n"
++ "mov %ebx,0x34(%ebp,%ecx,8)" "\n"
++ "cmp %ecx,%edx" "\n"
++ "jne fillExtraArgsLoop" "\n"
++
++ "copyArgs:" "\n"
++ "mov 0x2c(%esi),%eax" "\n"
++
++ "copyArgsLoop:" "\n"
++ "test %edx,%edx" "\n"
++ "je copyArgsDone" "\n"
++ "sub $0x1,%edx" "\n"
++ "mov (%eax,%edx,8),%ecx" "\n"
++ "mov 0x4(%eax,%edx,8),%ebx" "\n"
++ "mov %ecx,0x30(%ebp,%edx,8)" "\n"
++ "mov %ebx,0x34(%ebp,%edx,8)" "\n"
++ "jmp copyArgsLoop" "\n"
++
++ "copyArgsDone:" "\n"
++ "mov 0x34(%esp),%ecx" "\n"
++ "mov %ebp,(%ecx)" "\n"
++
++ "mov 0x30(%esp),%edi" "\n"
++ "mov %ebp,0x30(%esp)" "\n"
++ "mov %ebp,%ecx" "\n"
++ "call *%edi" "\n"
++
++ "cmpl $0x1,0x8(%ebp)" "\n"
++ "je calleeFramePopped" "\n"
++ "mov 0x0(%ebp),%ebp" "\n"
++
++ "calleeFramePopped:" "\n"
++ "mov 0x18(%ebp),%ecx" "\n"
++ "mov 0x10(%ebp),%ebx" "\n"
++ "mov %ebx,(%ecx)" "\n"
++
++ "add $0x1c,%esp" "\n"
++ "pop %ebx" "\n"
++ "pop %edi" "\n"
++ "pop %esi" "\n"
++ "pop %ebp" "\n"
++ "ret" "\n"
++ );
++}
++
++#endif // OS(WINDOWS) && ENABLE(JIT)
++
+ #endif // COMPILER(GCC)
+
+ #if COMPILER(MSVC)
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/ThirdParty/ANGLE/GNUmakefile.am webkitgtk-2.4.1/Source/ThirdParty/ANGLE/GNUmakefile.am
+--- webkitgtk-2.4.1.old/Source/ThirdParty/ANGLE/GNUmakefile.am 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/ThirdParty/ANGLE/GNUmakefile.am 2014-05-24 05:04:11 +0000
+@@ -80,7 +80,6 @@ libANGLE_la_SOURCES = \
+ Source/ThirdParty/ANGLE/src/compiler/MMap.h \
+ Source/ThirdParty/ANGLE/src/compiler/NodeSearch.h \
+ Source/ThirdParty/ANGLE/src/compiler/osinclude.h \
+- Source/ThirdParty/ANGLE/src/compiler/ossource_posix.cpp \
+ Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp \
+ Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h \
+ Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp \
+@@ -161,3 +160,11 @@ libANGLE_la_SOURCES = \
+ Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.h \
+ Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp \
+ Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h
++
++if OS_WIN32
++libANGLE_la_SOURCES += \
++ Source/ThirdParty/ANGLE/src/compiler/ossource_win.cpp
++else
++libANGLE_la_SOURCES += \
++ Source/ThirdParty/ANGLE/src/compiler/ossource_posix.cpp
++endif
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/ThirdParty/ANGLE/src/compiler/ossource_win.cpp webkitgtk-2.4.1/Source/ThirdParty/ANGLE/src/compiler/ossource_win.cpp
+--- webkitgtk-2.4.1.old/Source/ThirdParty/ANGLE/src/compiler/ossource_win.cpp 2014-07-12 16:07:30 +0000
++++ webkitgtk-2.4.1/Source/ThirdParty/ANGLE/src/compiler/ossource_win.cpp 2014-05-24 05:04:11 +0000
+@@ -0,0 +1,57 @@
++//
++// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++//
++
++#include "compiler/osinclude.h"
++//
++// This file contains contains the window's specific functions
++//
++
++#if !defined(ANGLE_OS_WIN)
++#error Trying to build a windows specific file in a non windows build.
++#endif
++
++
++//
++// Thread Local Storage Operations
++//
++OS_TLSIndex OS_AllocTLSIndex()
++{
++ DWORD dwIndex = TlsAlloc();
++ if (dwIndex == TLS_OUT_OF_INDEXES) {
++ assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage");
++ return OS_INVALID_TLS_INDEX;
++ }
++
++ return dwIndex;
++}
++
++
++bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
++{
++ if (nIndex == OS_INVALID_TLS_INDEX) {
++ assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
++ return false;
++ }
++
++ if (TlsSetValue(nIndex, lpvValue))
++ return true;
++ else
++ return false;
++}
++
++
++bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
++{
++ if (nIndex == OS_INVALID_TLS_INDEX) {
++ assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
++ return false;
++ }
++
++ if (TlsFree(nIndex))
++ return true;
++ else
++ return false;
++}
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WTF/GNUmakefile.list.am webkitgtk-2.4.1/Source/WTF/GNUmakefile.list.am
+--- webkitgtk-2.4.1.old/Source/WTF/GNUmakefile.list.am 2014-05-18 16:44:48 +0000
++++ webkitgtk-2.4.1/Source/WTF/GNUmakefile.list.am 2014-05-24 05:09:00 +0000
+@@ -256,3 +256,8 @@ wtf_sources += \
+ Source/WTF/wtf/unicode/UnicodeMacrosFromICU.h \
+ Source/WTF/wtf/unicode/icu/CollatorICU.cpp \
+ Source/WTF/wtf/unicode/icu/UnicodeIcu.h
++
++if TARGET_WIN32
++wtf_sources += \
++ Source/WTF/wtf/win/GdiObject.h
++endif # TARGET_WIN32
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WTF/wtf/Atomics.h webkitgtk-2.4.1/Source/WTF/wtf/Atomics.h
+--- webkitgtk-2.4.1.old/Source/WTF/wtf/Atomics.h 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WTF/wtf/Atomics.h 2014-05-28 18:01:59 +0000
+@@ -260,7 +260,7 @@ inline void memoryBarrierBeforeUnlock()
+ inline bool weakCompareAndSwap(uint8_t* location, uint8_t expected, uint8_t newValue)
+ {
+ #if ENABLE(COMPARE_AND_SWAP)
+-#if !OS(WINDOWS) && (CPU(X86) || CPU(X86_64))
++#if !COMPILER(MSVC) && (CPU(X86) || CPU(X86_64))
+ unsigned char result;
+ asm volatile(
+ "lock; cmpxchgb %3, %2\n\t"
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WTF/wtf/MathExtras.h webkitgtk-2.4.1/Source/WTF/wtf/MathExtras.h
+--- webkitgtk-2.4.1.old/Source/WTF/wtf/MathExtras.h 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WTF/wtf/MathExtras.h 2014-05-24 05:04:11 +0000
+@@ -67,6 +67,12 @@ const double piOverFourDouble = M_PI_4;
+ const float piOverFourFloat = static_cast<float>(M_PI_4);
+ #endif
+
++#ifndef M_SQRT2
++const double sqrtOfTwoDouble = 1.41421356237309504880;
++#else
++const double sqrtOfTwoDouble = M_SQRT2;
++#endif
++
+ #if OS(DARWIN)
+
+ // Work around a bug in the Mac OS X libc where ceil(-0.1) return +0.
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WTF/wtf/Platform.h webkitgtk-2.4.1/Source/WTF/wtf/Platform.h
+--- webkitgtk-2.4.1.old/Source/WTF/wtf/Platform.h 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WTF/wtf/Platform.h 2014-05-24 05:04:11 +0000
+@@ -594,8 +594,6 @@
+ #define HAVE_ALIGNED_MALLOC 1
+ #define HAVE_ISDEBUGGERPRESENT 1
+
+-#include <WTF/WTFHeaderDetection.h>
+-
+ #endif
+
+ #if OS(WINDOWS)
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WTF/wtf/threads/BinarySemaphore.h webkitgtk-2.4.1/Source/WTF/wtf/threads/BinarySemaphore.h
+--- webkitgtk-2.4.1.old/Source/WTF/wtf/threads/BinarySemaphore.h 2014-05-18 16:44:58 +0000
++++ webkitgtk-2.4.1/Source/WTF/wtf/threads/BinarySemaphore.h 2014-05-29 17:02:56 +0000
+@@ -41,12 +41,12 @@ public:
+ WTF_EXPORT_PRIVATE void signal();
+ WTF_EXPORT_PRIVATE bool wait(double absoluteTime);
+
+-#if OS(WINDOWS)
++#if PLATFORM(WIN)
+ HANDLE event() const { return m_event; }
+ #endif
+
+ private:
+-#if OS(WINDOWS)
++#if PLATFORM(WIN)
+ HANDLE m_event;
+ #else
+ bool m_isSet;
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WTF/wtf/win/GDIObject.h webkitgtk-2.4.1/Source/WTF/wtf/win/GDIObject.h
+--- webkitgtk-2.4.1.old/Source/WTF/wtf/win/GDIObject.h 2014-07-12 06:21:32 +0000
++++ webkitgtk-2.4.1/Source/WTF/wtf/win/GDIObject.h 2014-05-24 12:26:42 +0000
+@@ -0,0 +1,131 @@
++/*
++ * Copyright (C) 2013 Apple Inc. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ *
++ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
++ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
++ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
++ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++
++#ifndef GDIObject_h
++#define GDIObject_h
++
++#include <algorithm>
++#include <cstddef>
++#include <memory>
++#include <windows.h>
++#include <wtf/Assertions.h>
++#include <wtf/Noncopyable.h>
++
++namespace WTF {
++
++template<typename T> void deleteObject(T);
++
++template<typename T> class GDIObject {
++ WTF_MAKE_NONCOPYABLE(GDIObject);
++public:
++ GDIObject() : m_object(0) { }
++ GDIObject(std::nullptr_t) : m_object(0) { }
++ ~GDIObject() { deleteObject<T>(m_object); }
++
++ T get() const { return m_object; }
++
++ void clear();
++ T leak() WARN_UNUSED_RETURN;
++
++ bool operator!() const { return !m_object; }
++
++ // This conversion operator allows implicit conversion to bool but not to other integer types.
++ typedef const void* UnspecifiedBoolType;
++ operator UnspecifiedBoolType() const { return m_object ? reinterpret_cast<UnspecifiedBoolType>(&m_object) : 0; }
++
++ GDIObject<T>& operator=(std::nullptr_t) { clear(); return *this; }
++
++ GDIObject(GDIObject&&);
++ template<typename U> GDIObject(GDIObject<U>&&);
++
++ GDIObject& operator=(GDIObject&&);
++ template<typename U> GDIObject& operator=(GDIObject<U>&&);
++
++ void swap(GDIObject& o) { std::swap(m_object, o.m_object); }
++
++private:
++ template<typename U> friend GDIObject<U> adoptGDIObject(U);
++ GDIObject(T object) : m_object(object) { }
++
++ GDIObject<T>& operator=(T);
++
++ T m_object;
++};
++
++template<typename T> inline void GDIObject<T>::clear()
++{
++ T object = m_object;
++ m_object = 0;
++ deleteObject(object);
++}
++
++template<typename T> inline T GDIObject<T>::leak()
++{
++ T object = m_object;
++ m_object = 0;
++ return object;
++}
++
++template<typename T> inline GDIObject<T>::GDIObject(GDIObject<T>&& other)
++ : m_object(other.leak())
++{
++}
++
++template<typename T> inline GDIObject<T>& GDIObject<T>::operator=(GDIObject<T>&& other)
++{
++ auto object = std::move(other);
++ swap(object);
++ return *this;
++}
++
++template<typename T> inline GDIObject<T> adoptGDIObject(T object)
++{
++ return GDIObject<T>(object);
++}
++
++template<typename T> inline void swap(GDIObject<T>& a, GDIObject<T>& b)
++{
++ a.swap(b);
++}
++
++// Nearly all GDI types use the same DeleteObject call.
++template<typename T> inline void deleteObject(T object)
++{
++ if (object)
++ ::DeleteObject(object);
++}
++
++template<> inline void deleteObject<HDC>(HDC hdc)
++{
++ if (hdc)
++ ::DeleteDC(hdc);
++}
++
++} // namespace WTF
++
++using WTF::GDIObject;
++using WTF::adoptGDIObject;
++
++#endif // GDIObject_h
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/GNUmakefile.list.am webkitgtk-2.4.1/Source/WebCore/GNUmakefile.list.am
+--- webkitgtk-2.4.1.old/Source/WebCore/GNUmakefile.list.am 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/GNUmakefile.list.am 2014-05-24 05:09:00 +0000
+@@ -6252,9 +6252,11 @@ webcoregtk_sources += \
+ Source/WebCore/platform/graphics/glx/GLContextGLX.h
+ endif # END USE_GLX
+ else
++if !TARGET_WIN32
+ webcore_sources += \
+ Source/WebCore/plugins/PluginPackageNone.cpp \
+ Source/WebCore/plugins/PluginViewNone.cpp
++endif # !TARGET_WIN32
+ endif # END TARGET_X11
+
+ if TARGET_X11_OR_WAYLAND
+@@ -6281,9 +6283,12 @@ webcore_sources += \
+ Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp \
+ Source/WebCore/platform/graphics/win/GraphicsContextWin.cpp \
+ Source/WebCore/platform/graphics/win/LocalWindowsContext.h \
++ Source/WebCore/platform/graphics/win/SharedGDIObject.h \
+ Source/WebCore/platform/graphics/win/TransformationMatrixWin.cpp \
+ Source/WebCore/platform/win/BitmapInfo.cpp \
+ Source/WebCore/platform/win/BitmapInfo.h \
++ Source/WebCore/platform/win/GDIObjectCounter.cpp \
++ Source/WebCore/platform/win/GDIObjectCounter.h \
+ Source/WebCore/platform/win/SystemInfo.cpp \
+ Source/WebCore/platform/win/SystemInfo.h \
+ Source/WebCore/platform/win/WebCoreInstanceHandle.cpp \
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/bindings/scripts/preprocessor.pm webkitgtk-2.4.1/Source/WebCore/bindings/scripts/preprocessor.pm
+--- webkitgtk-2.4.1.old/Source/WebCore/bindings/scripts/preprocessor.pm 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/bindings/scripts/preprocessor.pm 2014-05-24 05:04:11 +0000
+@@ -51,6 +51,8 @@ sub applyPreprocessor
+ $preprocessor = "/usr/sfw/bin/gcc";
+ } elsif (-x "/usr/bin/clang") {
+ $preprocessor = "/usr/bin/clang";
++ } elsif ($Config{osname} eq 'msys') {
++ $preprocessor = "gcc";
+ } else {
+ $preprocessor = "/usr/bin/gcc";
+ }
+@@ -71,7 +73,7 @@ sub applyPreprocessor
+ @macros = map { "-D$_" } @macros;
+
+ my $pid = 0;
+- if ($Config{osname} eq "cygwin" || $Config{osname} eq 'MSWin32') {
++ if ($Config{osname} eq "cygwin" || $Config{osname} eq 'MSWin32' || $Config{osname} eq 'msys') {
+ # This call can fail if Windows rebases cygwin, so retry a few times until it succeeds.
+ for (my $tries = 0; !$pid && ($tries < 20); $tries++) {
+ eval {
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/dom/make_names.pl webkitgtk-2.4.1/Source/WebCore/dom/make_names.pl
+--- webkitgtk-2.4.1.old/Source/WebCore/dom/make_names.pl 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/dom/make_names.pl 2014-05-24 05:04:11 +0000
+@@ -69,6 +69,8 @@ if ($ENV{CC}) {
+ $gccLocation = "/usr/sfw/bin/gcc";
+ } elsif ($Config::Config{"osname"} eq "darwin" && $ENV{SDKROOT}) {
+ chomp($gccLocation = `xcrun -find cc -sdk '$ENV{SDKROOT}'`);
++} elsif ($Config::Config{"osname"} eq "msys") {
++ $gccLocation = "gcc";
+ } else {
+ $gccLocation = "/usr/bin/cc";
+ }
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/platform/graphics/FontPlatformData.h webkitgtk-2.4.1/Source/WebCore/platform/graphics/FontPlatformData.h
+--- webkitgtk-2.4.1.old/Source/WebCore/platform/graphics/FontPlatformData.h 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/platform/graphics/FontPlatformData.h 2014-05-24 05:04:11 +0000
+@@ -62,7 +62,6 @@ typedef const struct __CTFont* CTFontRef
+ #include <wtf/text/StringImpl.h>
+
+ #if PLATFORM(WIN)
+-#include <wtf/win/GDIObject.h>
+ typedef struct HFONT__* HFONT;
+ #endif
+
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp webkitgtk-2.4.1/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp
+--- webkitgtk-2.4.1.old/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp 2014-05-24 05:04:11 +0000
+@@ -32,6 +32,7 @@
+ #include <ft2build.h>
+ #include FT_TRUETYPE_TABLES_H
+ #include <wtf/text/WTFString.h>
++#include <wtf/MathExtras.h>
+
+ #if !PLATFORM(EFL)
+ #include <gdk/gdk.h>
+@@ -120,7 +121,7 @@ static void rotateCairoMatrixForVertical
+ // combination of rotation (R) and translation (T) applied on the
+ // horizontal matrix (H). V = H . R . T, where R rotates by -90 degrees
+ // and T translates by font size towards y axis.
+- cairo_matrix_rotate(matrix, -M_PI_2);
++ cairo_matrix_rotate(matrix, -piOverTwoDouble);
+ cairo_matrix_translate(matrix, 0.0, 1.0);
+ }
+
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp webkitgtk-2.4.1/Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp
+--- webkitgtk-2.4.1.old/Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp 2014-05-24 05:09:00 +0000
+@@ -32,6 +32,7 @@
+
+ #include <cairo-win32.h>
+ #include "GraphicsContextPlatformPrivateCairo.h"
++#include <wtf/win/GdiObject.h>
+
+ using namespace std;
+
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/platform/gtk/FileSystemGtk.cpp webkitgtk-2.4.1/Source/WebCore/platform/gtk/FileSystemGtk.cpp
+--- webkitgtk-2.4.1.old/Source/WebCore/platform/gtk/FileSystemGtk.cpp 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/platform/gtk/FileSystemGtk.cpp 2014-05-24 05:04:11 +0000
+@@ -23,6 +23,10 @@
+ #include "config.h"
+ #include "FileSystem.h"
+
++#if OS(WINDOWS)
++#include <windows.h>
++#endif
++
+ #include "FileMetadata.h"
+ #include "UUID.h"
+ #include <gio/gio.h>
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/rendering/RenderBlock.h webkitgtk-2.4.1/Source/WebCore/rendering/RenderBlock.h
+--- webkitgtk-2.4.1.old/Source/WebCore/rendering/RenderBlock.h 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/rendering/RenderBlock.h 2014-05-24 15:52:01 +0000
+@@ -613,8 +613,8 @@ public:
+ unsigned m_beingDestroyed : 1;
+ unsigned m_hasMarkupTruncation : 1;
+ unsigned m_hasBorderOrPaddingLogicalWidthChanged : 1;
+- enum LineLayoutPath { UndeterminedPath, SimpleLinesPath, LineBoxesPath, ForceLineBoxesPath };
+ unsigned m_lineLayoutPath : 2;
++ enum LineLayoutPath { UndeterminedPath, SimpleLinesPath, LineBoxesPath, ForceLineBoxesPath };
+
+ // RenderRubyBase objects need to be able to split and merge, moving their children around
+ // (calling moveChildTo, moveAllChildrenTo, and makeChildrenNonInline).
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp webkitgtk-2.4.1/Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp
+--- webkitgtk-2.4.1.old/Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp 2014-05-24 05:04:11 +0000
+@@ -71,8 +71,8 @@ void RenderMathMLMenclose::computePrefer
+ size_t notationalValueSize = notationValues.size();
+ for (size_t i = 0; i < notationalValueSize; i++) {
+ if (notationValues[i] == "circle") {
+- m_minPreferredLogicalWidth = minPreferredLogicalWidth() * float(M_SQRT2);
+- m_maxPreferredLogicalWidth = maxPreferredLogicalWidth() * float(M_SQRT2);
++ m_minPreferredLogicalWidth = minPreferredLogicalWidth() * float(sqrtOfTwoDouble);
++ m_maxPreferredLogicalWidth = maxPreferredLogicalWidth() * float(sqrtOfTwoDouble);
+ }
+ }
+
+@@ -86,7 +86,7 @@ void RenderMathMLMenclose::updateLogical
+ size_t notationalValueSize = notationValues.size();
+ for (size_t i = 0; i < notationalValueSize; i++)
+ if (notationValues[i] == "circle")
+- setLogicalHeight(logicalHeight() * float(M_SQRT2));
++ setLogicalHeight(logicalHeight() * float(sqrtOfTwoDouble));
+ }
+
+ void RenderMathMLMenclose::paint(PaintInfo& info, const LayoutPoint& paintOffset)
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/autotools/FindDependencies.m4 webkitgtk-2.4.1/Source/autotools/FindDependencies.m4
+--- webkitgtk-2.4.1.old/Source/autotools/FindDependencies.m4 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/autotools/FindDependencies.m4 2014-05-24 05:04:11 +0000
+@@ -109,8 +109,14 @@ case "$host" in
+ UNICODE_LIBS="-licucore"
+ ;;
+ *-*-mingw*)
+- UNICODE_CFLAGS=""
+- UNICODE_LIBS="-licui18n -licuuc"
++ PKG_CHECK_MODULES(ICU, icu-i18n, ,)
++ if test "x$ICU_LIBS" = "x" ; then
++ UNICODE_CFLAGS=""
++ UNICODE_LIBS="-licui18n -licuuc"
++ else
++ UNICODE_CFLAGS="$ICU_CFLAGS"
++ UNICODE_LIBS="$ICU_LIBS"
++ fi
+ AC_CHECK_HEADERS([unicode/uchar.h], [], [AC_MSG_ERROR([Could not find ICU headers.])])
+ ;;
+ *)
+@@ -455,7 +461,14 @@ if test "$found_opengl" = "yes"; then
+ OPENGL_LIBS="-lGLESv2"
+ else
+ acceleration_description="$acceleration_description (gl"
+- OPENGL_LIBS="-lGL"
++ case "$host" in
++ *-*-mingw*)
++ OPENGL_LIBS="-lopengl32"
++ ;;
++ *)
++ OPENGL_LIBS="-lGL"
++ ;;
++ esac
+ fi
+ if test "$enable_egl" = "yes"; then
+ acceleration_description="$acceleration_description, egl"
+diff -upr -x .deps -x .libs -x '*.la' webkitgtk-2.4.1.old/Source/autotools/ReadCommandLineArguments.m4 webkitgtk-2.4.1/Source/autotools/ReadCommandLineArguments.m4
+--- webkitgtk-2.4.1.old/Source/autotools/ReadCommandLineArguments.m4 2014-06-20 20:05:59 +0000
++++ webkitgtk-2.4.1/Source/autotools/ReadCommandLineArguments.m4 2014-05-24 05:04:11 +0000
+@@ -83,7 +83,7 @@ AM_WEBKIT_DETERMINE_BUILD_TARGET_STATUS(
+ AM_WEBKIT_DETERMINE_BUILD_TARGET_STATUS([directfb], [enable_directfb_target], [build_targets])
+
+ AC_MSG_CHECKING([whether to build for the Win32 target])
+-AC_MSG_RESULT([$enable_wayland_target])
++AC_MSG_RESULT([$enable_win32_target])
+
+ AC_MSG_CHECKING([whether to enable spellcheck support])
+ AC_ARG_ENABLE([spellcheck],
diff --git a/win32/patches/yelp.m4 b/win32/patches/yelp.m4
new file mode 100644
index 0000000000..adbbdb53f4
--- /dev/null
+++ b/win32/patches/yelp.m4
@@ -0,0 +1,194 @@
+AC_DEFUN([YELP_HELP_INIT],
+[
+AC_REQUIRE([AC_PROG_LN_S])
+m4_pattern_allow([AM_V_at])
+m4_pattern_allow([AM_V_GEN])
+m4_pattern_allow([AM_DEFAULT_VERBOSITY])
+AC_ARG_WITH([help-dir],
+ AC_HELP_STRING([--with-help-dir=DIR],
+ [path where help files are installed]),,
+ [with_help_dir='${datadir}/help'])
+HELP_DIR="$with_help_dir"
+AC_SUBST(HELP_DIR)
+
+dnl AC_ARG_VAR([ITSTOOL], [Path to the `itstool` command])
+dnl AC_CHECK_PROG([ITSTOOL], [itstool], [itstool])
+dnl if test x"$ITSTOOL" = x; then
+dnl AC_MSG_ERROR([itstool not found])
+dnl fi
+
+AC_ARG_VAR([XMLLINT], [Path to the `xmllint` command])
+AC_CHECK_PROG([XMLLINT], [xmllint], [xmllint])
+if test x"$XMLLINT" = x; then
+ AC_MSG_ERROR([xmllint not found])
+fi
+
+YELP_HELP_RULES='
+HELP_ID ?=
+HELP_POT ?=
+HELP_FILES ?=
+HELP_EXTRA ?=
+HELP_MEDIA ?=
+HELP_LINGUAS ?=
+
+_HELP_LINGUAS = $(if $(filter environment,$(origin LINGUAS)),$(filter $(LINGUAS),$(HELP_LINGUAS)),$(HELP_LINGUAS))
+_HELP_POTFILE = $(if $(HELP_POT),$(HELP_POT),$(if $(HELP_ID),$(HELP_ID).pot))
+_HELP_POFILES = $(if $(HELP_ID),$(foreach lc,$(_HELP_LINGUAS),$(lc)/$(lc).po))
+_HELP_MOFILES = $(patsubst %.po,%.mo,$(_HELP_POFILES))
+_HELP_C_FILES = $(foreach f,$(HELP_FILES),C/$(f))
+_HELP_C_EXTRA = $(foreach f,$(HELP_EXTRA),C/$(f))
+_HELP_C_MEDIA = $(foreach f,$(HELP_MEDIA),C/$(f))
+_HELP_LC_FILES = $(foreach lc,$(_HELP_LINGUAS),$(foreach f,$(HELP_FILES),$(lc)/$(f)))
+_HELP_LC_STAMPS = $(foreach lc,$(_HELP_LINGUAS),$(lc)/$(lc).stamp)
+
+_HELP_DEFAULT_V = $(if $(AM_DEFAULT_VERBOSITY),$(AM_DEFAULT_VERBOSITY),1)
+_HELP_V = $(if $(V),$(V),$(_HELP_DEFAULT_V))
+_HELP_LC_VERBOSE = $(_HELP_LC_VERBOSE_$(_HELP_V))
+_HELP_LC_VERBOSE_ = $(_HELP_LC_VERBOSE_$(_HELP_DEFAULT_V))
+_HELP_LC_VERBOSE_0 = @echo " GEN "$(dir [$]@);
+
+all: $(_HELP_C_FILES) $(_HELP_C_EXTRA) $(_HELP_C_MEDIA) $(_HELP_LC_FILES) $(_HELP_POFILES)
+
+.PHONY: pot
+pot: $(_HELP_POTFILE)
+$(_HELP_POTFILE): $(_HELP_C_FILES) $(_HELP_C_EXTRA) $(_HELP_C_MEDIA)
+ $(AM_V_GEN)$(ITSTOOL) -o "[$]@" $(_HELP_C_FILES)
+
+.PHONY: repo
+repo: $(_HELP_POTFILE)
+ $(AM_V_at)for po in $(_HELP_POFILES); do \
+ if test "x[$](_HELP_V)" = "x0"; then echo " GEN $${po}"; fi; \
+ msgmerge -q -o "$${po}" "$${po}" "$(_HELP_POTFILE)"; \
+ done
+
+$(_HELP_POFILES):
+ $(AM_V_at)if ! test -d "$(dir [$]@)"; then mkdir "$(dir [$]@)"; fi
+ $(AM_V_at)if test ! -f "[$]@" -a -f "$(srcdir)/[$]@"; then cp "$(srcdir)/[$]@" "[$]@"; fi
+ $(AM_V_GEN)if ! test -f "[$]@"; then \
+ (cd "$(dir [$]@)" && \
+ $(ITSTOOL) -o "$(notdir [$]@).tmp" $(_HELP_C_FILES) && \
+ mv "$(notdir [$]@).tmp" "$(notdir [$]@)"); \
+ else \
+ (cd "$(dir [$]@)" && \
+ $(ITSTOOL) -o "$(notdir [$]@).tmp" $(_HELP_C_FILES) && \
+ msgmerge -o "$(notdir [$]@)" "$(notdir [$]@)" "$(notdir [$]@).tmp" && \
+ rm "$(notdir [$]@).tmp"); \
+ fi
+
+$(_HELP_MOFILES): %.mo: %.po
+ $(AM_V_at)if ! test -d "$(dir [$]@)"; then mkdir "$(dir [$]@)"; fi
+ $(AM_V_GEN)msgfmt -o "[$]@" "$<"
+
+$(_HELP_LC_FILES): $(_HELP_LINGUAS)
+$(_HELP_LINGUAS): $(_HELP_LC_STAMPS)
+$(_HELP_LC_STAMPS): %.stamp: %.mo
+$(_HELP_LC_STAMPS): $(_HELP_C_FILES) $(_HELP_C_EXTRA)
+ $(AM_V_at)if ! test -d "$(dir [$]@)"; then mkdir "$(dir [$]@)"; fi
+ $(_HELP_LC_VERBOSE)if test -d "C"; then d="../"; else d="$(abs_srcdir)/"; fi; \
+ mo="$(dir [$]@)$(patsubst %/$(notdir [$]@),%,[$]@).mo"; \
+ if test -f "$${mo}"; then mo="../$${mo}"; else mo="$(abs_srcdir)/$${mo}"; fi; \
+ (cd "$(dir [$]@)" && $(ITSTOOL) -m "$${mo}" $(foreach f,$(_HELP_C_FILES),$${d}/$(f))) && \
+ touch "[$]@"
+
+.PHONY: clean-help
+mostlyclean-am: $(if $(HELP_ID),clean-help)
+clean-help:
+ rm -f $(_HELP_LC_FILES) $(_HELP_LC_STAMPS) $(_HELP_MOFILES)
+
+EXTRA_DIST ?=
+EXTRA_DIST += $(_HELP_C_EXTRA) $(_HELP_C_MEDIA)
+EXTRA_DIST += $(foreach lc,$(HELP_LINGUAS),$(lc)/$(lc).stamp)
+EXTRA_DIST += $(foreach lc,$(HELP_LINGUAS),$(lc)/$(lc).po)
+EXTRA_DIST += $(foreach f,$(HELP_MEDIA),$(foreach lc,$(HELP_LINGUAS),$(wildcard $(lc)/$(f))))
+
+distdir: distdir-help-files
+distdir-help-files:
+ @for lc in C $(HELP_LINGUAS); do \
+ $(MKDIR_P) "$(distdir)/$$lc"; \
+ for file in $(HELP_FILES); do \
+ if test -f "$$lc/$$file"; then d=./; else d=$(srcdir)/; fi; \
+ cp -p "$$d$$lc/$$file" "$(distdir)/$$lc/" || exit 1; \
+ done; \
+ done; \
+
+.PHONY: check-help
+check: check-help
+check-help:
+ for lc in C $(_HELP_LINGUAS); do \
+ if test -d "$$lc"; \
+ then d=; \
+ xmlpath="$$lc"; \
+ else \
+ d="$(srcdir)/"; \
+ xmlpath="$$lc:$(srcdir)/$$lc"; \
+ fi; \
+ for page in $(HELP_FILES); do \
+ echo "$(XMLLINT) --noout --noent --path $$xmlpath --xinclude $$d$$lc/$$page"; \
+ $(XMLLINT) --noout --noent --path "$$xmlpath" --xinclude "$$d$$lc/$$page"; \
+ done; \
+ done
+
+
+.PHONY: install-help
+install-data-am: $(if $(HELP_ID),install-help)
+install-help:
+ @for lc in C $(_HELP_LINGUAS); do \
+ $(mkinstalldirs) "$(DESTDIR)$(HELP_DIR)/$$lc/$(HELP_ID)" || exit 1; \
+ done
+ @for lc in C $(_HELP_LINGUAS); do for f in $(HELP_FILES); do \
+ if test -f "$$lc/$$f"; then d=; else d="$(srcdir)/"; fi; \
+ helpdir="$(DESTDIR)$(HELP_DIR)/$$lc/$(HELP_ID)/"; \
+ if ! test -d "$$helpdir"; then $(mkinstalldirs) "$$helpdir"; fi; \
+ echo "$(INSTALL_DATA) $$d$$lc/$$f $$helpdir`basename $$f`"; \
+ $(INSTALL_DATA) "$$d$$lc/$$f" "$$helpdir`basename $$f`" || exit 1; \
+ done; done
+ @for f in $(_HELP_C_EXTRA); do \
+ lc=`dirname "$$f"`; lc=`basename "$$lc"`; \
+ if test -f "$$f"; then d=; else d="$(srcdir)/"; fi; \
+ helpdir="$(DESTDIR)$(HELP_DIR)/$$lc/$(HELP_ID)/"; \
+ if ! test -d "$$helpdir"; then $(mkinstalldirs) "$$helpdir"; fi; \
+ echo "$(INSTALL_DATA) $$d$$f $$helpdir`basename $$f`"; \
+ $(INSTALL_DATA) "$$d$$f" "$$helpdir`basename $$f`" || exit 1; \
+ done
+ @for f in $(HELP_MEDIA); do \
+ for lc in C $(_HELP_LINGUAS); do \
+ if test -f "$$lc$$f"; then d=; else d="$(srcdir)/"; fi; \
+ helpdir="$(DESTDIR)$(HELP_DIR)/$$lc/$(HELP_ID)/"; \
+ mdir=`dirname "$$f"`; \
+ if test "x$mdir" = "x."; then mdir=""; fi; \
+ if ! test -d "$$helpdir$$mdir"; then $(mkinstalldirs) "$$helpdir$$mdir"; fi; \
+ if test -f "$$d$$lc/$$f"; then \
+ echo "$(INSTALL_DATA) $$d$$lc/$$f $$helpdir$$f"; \
+ $(INSTALL_DATA) "$$d$$lc/$$f" "$$helpdir$$f" || exit 1; \
+ elif test "x$$lc" != "xC"; then \
+ echo "$(LN_S) -f $(HELP_DIR)/C/$(HELP_ID)/$$f $$helpdir$$f"; \
+ $(LN_S) -f "$(HELP_DIR)/C/$(HELP_ID)/$$f" "$$helpdir$$f" || exit 1; \
+ fi; \
+ done; \
+ done
+
+.PHONY: uninstall-help
+uninstall-am: $(if $(HELP_ID),uninstall-help)
+uninstall-help:
+ for lc in C $(_HELP_LINGUAS); do for f in $(HELP_FILES); do \
+ helpdir="$(DESTDIR)$(HELP_DIR)/$$lc/$(HELP_ID)/"; \
+ echo "rm -f $$helpdir`basename $$f`"; \
+ rm -f "$$helpdir`basename $$f`"; \
+ done; done
+ @for f in $(_HELP_C_EXTRA); do \
+ lc=`dirname "$$f"`; lc=`basename "$$lc"`; \
+ helpdir="$(DESTDIR)$(HELP_DIR)/$$lc/$(HELP_ID)/"; \
+ echo "rm -f $$helpdir`basename $$f`"; \
+ rm -f "$$helpdir`basename $$f`"; \
+ done
+ @for f in $(HELP_MEDIA); do \
+ for lc in C $(_HELP_LINGUAS); do \
+ helpdir="$(DESTDIR)$(HELP_DIR)/$$lc/$(HELP_ID)/"; \
+ echo "rm -f $$helpdir$$f"; \
+ rm -f "$$helpdir$$f"; \
+ done; \
+ done;
+'
+AC_SUBST([YELP_HELP_RULES])
+m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([YELP_HELP_RULES])])
+])
diff --git a/win32/readme.txt b/win32/readme.txt
new file mode 100644
index 0000000000..e8aa73bd82
--- /dev/null
+++ b/win32/readme.txt
@@ -0,0 +1,53 @@
+************************************************
+*** Caution - this work is still in progress ***
+************************************************
+
+These are steps how to setup local envinronment to build evolution
+and its dependencies from sources.
+
+a) http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
+ Destination folder: C:\MinGW
+
+ Install packages:
+ - Basic setup:
+ - mingw-developer-toolkit
+ - msys-base
+
+ - All Packages
+ - msys-patch
+ - msys-perl
+ - msys-unzip
+ - msys-wget
+
+b) http://sourceforge.net/projects/mingwbuilds/files/mingw-builds-install/mingw-builds-install.exe/download
+ Version: 4.8.1
+ Architecture: x32
+ Threads: posix
+ Exception: dwarf
+ Build revision: 5
+
+ Destination folder: C:\MinGW64
+
+c) Replace MinGW version of gcc & co. with the MinGW64 version (mainly for webkitgtk)
+ - delete all but 'msys' directories in C:\MinGW\
+ - move all directories from C:\MinGW64\mingw32\ to C:MinGW\
+
+d) http://www.python.org/ftp/python/2.7.6/python-2.7.6.msi
+ Destination folder: C:\Python27
+
+e) Add to PATH: C:\Python27;C:\MinGW\bin
+
+f) go to evolution checkout, into evolution\win32\ subfolder and execute:
+ $ source setup-env
+ which setups build environment. This can take some addition
+ parameters, see the top of setup-env for more information.
+
+g) build evolution from sources with:
+ $ make evolution
+ or with some additional software:
+ $ make addons
+
+h) Make sure dbus-daemon is running before evolution is run, which can
+ be done with $PREFIX\deps\bin\dbus-launch.exe
+
+i) Run 'evolution'
diff --git a/win32/session-local.conf.in b/win32/session-local.conf.in
new file mode 100644
index 0000000000..a2b16f49b8
--- /dev/null
+++ b/win32/session-local.conf.in
@@ -0,0 +1,4 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <servicedir>@BUILD_ROOT_EVO@</servicedir>
+</busconfig>
diff --git a/win32/setup-env b/win32/setup-env
new file mode 100755
index 0000000000..1b0cde5140
--- /dev/null
+++ b/win32/setup-env
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+##############################################################################
+#
+# Setup a build environment. This can take up to two parameters:
+# argv[1] - build type, can be 'stable' or 'master'; anything else than
+# 'stable' means 'master' build in the ./Makefile, which uses
+# relative path for build and if the respective folder is not
+# downloaded yet, then it creates a checkout from the master git
+# branch (hence the 'master' build name). There can be built
+# anything as master, the only condition is that the directory
+# with the sources is in place.
+# argv[2] - use "debug" to build with debug options; using 'debug' build type
+# also uses debug build options
+#
+##############################################################################
+
+if [ "$BUILD_ROOT_OVERRIDE" = "" ] ; then
+ export BUILD_ROOT_BASE=/build/local
+else
+ export BUILD_ROOT_BASE=$BUILD_ROOT_OVERRIDE
+fi
+
+# Optional parameter to compile other than 'master' or 'stable' releases;
+# empty value means 'stable', anything else means 'master' type in Makefile
+export EVO_BUILD_TYPE=$1
+
+export BUILD_ROOT_DEPS=$BUILD_ROOT_BASE/deps
+if [ "x$EVO_BUILD_TYPE" != "x" -a "x$EVO_BUILD_TYPE" != "xstable" ] ; then
+ # Build custom builds like from 'master', aka from relative path checkouts
+ export EVO_BUILD_SUFFIX="-master"
+ export BUILD_ROOT_EVO="$BUILD_ROOT_BASE/evo-$EVO_BUILD_TYPE"
+else
+ # Build from tarballs
+ export EVO_BUILD_SUFFIX="-stable"
+ export BUILD_ROOT_EVO=$BUILD_ROOT_BASE/evo
+fi
+
+if [ "$PATH_DEFAULT" = "" ] ; then
+ export PATH_DEFAULT=$PATH
+fi
+
+export PATH=$BUILD_ROOT_DEPS/bin:$BUILD_ROOT_EVO/bin:$PATH_DEFAULT
+
+# Compile against locally installed software.
+export LD_LIBRARY_PATH=$BUILD_ROOT_DEPS/lib:$BUILD_ROOT_EVO/lib:/lib
+export PKG_CONFIG_PATH=$BUILD_ROOT_DEPS/lib/pkgconfig:$BUILD_ROOT_EVO/lib/pkgconfig:$BUILD_ROOT_DEPS/share/pkgconfig:$BUILD_ROOT_EVO/share/pkgconfig
+export ACLOCAL_FLAGS="-I $BUILD_ROOT_DEPS/share/aclocal -I $BUILD_ROOT_EVO/share/aclocal -I /share/aclocal"
+export GSETTINGS_SCHEMA_DIR=$BUILD_ROOT_DEPS/share/glib-2.0/schemas:$BUILD_ROOT_EVO/share/glib-2.0/schemas
+if [ "$1" = "debug" -o "$2" = "debug" ] ; then
+ export CFLAGS="$CFLAGS -g -O0 -Wall -DMSVCRT_VERSION=710"
+else
+ export CFLAGS="$CFLAGS -DMSVCRT_VERSION=710"
+fi
+export CPPFLAGS="$CPPFLAGS -I$BUILD_ROOT_DEPS/include -I$BUILD_ROOT_EVO/include -I/include"
+export LDFLAGS="$LDFLAGS -L$BUILD_ROOT_DEPS/lib -L$BUILD_ROOT_EVO/lib -L/lib"
+
+mkdir -p $BUILD_ROOT_DEPS/bin 2>/dev/null
+mkdir -p $BUILD_ROOT_DEPS/include 2>/dev/null
+mkdir -p $BUILD_ROOT_DEPS/lib 2>/dev/null
+mkdir -p $BUILD_ROOT_DEPS/share/aclocal 2>/dev/null
+mkdir -p $BUILD_ROOT_DEPS/etc/dbus-1/session.d 2>/dev/null
+#mkdir -p $BUILD_ROOT_DEPS/share/dbus-1 2>/dev/null
+
+mkdir -p $BUILD_ROOT_EVO/bin 2>/dev/null
+mkdir -p $BUILD_ROOT_EVO/include 2>/dev/null
+mkdir -p $BUILD_ROOT_EVO/lib 2>/dev/null
+mkdir -p $BUILD_ROOT_EVO/share/aclocal 2>/dev/null
+#mkdir -p $BUILD_ROOT_EVO/share/dbus-1 2>/dev/null
+
+#rm /usr/local/share/dbus-1 2>/dev/null
+#ln -s $BUILD_ROOT_DEPS/share/dbus-1 /usr/local/share/dbus-1
+
+if [ -f "session-local.conf.in" ] ; then
+ cat session-local.conf.in | sed 's|@BUILD_ROOT_EVO@|'$BUILD_ROOT_EVO'/share/dbus-1/services|g' >$BUILD_ROOT_DEPS/etc/dbus-1/session.d/session-local.conf
+fi