summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorAlessio Treglia <alessio@debian.org>2012-09-06 17:32:55 +0200
committerAlessio Treglia <alessio@debian.org>2012-09-06 17:32:55 +0200
commit3c46cd7449c32f71b7b3246b4f32aace3d9e3f84 (patch)
tree0b1f4f501c9251ffbc622508c726e0ae58370fd0 /contrib
parent5927940f774494d20baf7fc501326c2b084e3846 (diff)
Imported Upstream version 3.3.1
Diffstat (limited to 'contrib')
-rw-r--r--contrib/win32/notes.html497
-rw-r--r--contrib/win32/notes.rtf266
-rw-r--r--contrib/win32/patches/any2ppm.c.diff63
-rw-r--r--contrib/win32/patches/binwrap.cpp.diff10
-rw-r--r--contrib/win32/patches/cairo-surface-xy.diff381
-rw-r--r--contrib/win32/patches/cairo-win32-surface.c.diff22
-rw-r--r--contrib/win32/patches/gcontenttype.c.diff11
-rw-r--r--contrib/win32/patches/gdk-pixbuf-configure.diff13
-rw-r--r--contrib/win32/patches/gtk-configure.diff24
-rw-r--r--contrib/win32/patches/gtkrc.diff8
-rw-r--r--contrib/win32/patches/gwin32.c.diff20
-rw-r--r--contrib/win32/patches/gwin32.h.diff14
-rw-r--r--contrib/win32/patches/libxml-testThreads.c.diff10
-rw-r--r--contrib/win32/patches/mms-Makefile.am.diff11
14 files changed, 1066 insertions, 284 deletions
diff --git a/contrib/win32/notes.html b/contrib/win32/notes.html
new file mode 100644
index 0000000..f95e7e5
--- /dev/null
+++ b/contrib/win32/notes.html
@@ -0,0 +1,497 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+<head>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+<title>Notes for Building Audacious on Windows</title>
+</head>
+<body>
+
+<h2>Notes for Building Audacious on Windows</h2>
+
+<p><em>John Lindgren<br>
+August 11, 2012</em></p>
+
+<p>Several patch files should accompany this document.</p>
+
+<h3>Install MinGW</h3>
+
+<p>Download and run:<br>
+<a href="http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe/download">
+<tt>http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe/download</tt></a></p>
+
+<p>When prompted, use these options:</p>
+<ul><li>Use pre-packaged repository catalogues</li>
+<li>C++ compiler</li>
+<li>MinGW Developer Toolkit</li></ul>
+
+<p>Copy <tt>C:\MinGW\lib\libiconv.*</tt> to <tt>C:\MinGW\msys\1.0\lib</tt>.<br>
+Apply the patch <tt>libintl.h.diff</tt> to <tt>C:\MinGW\include\libintl.h</tt>.</p>
+
+<h3>Install Python</h3>
+
+<p>Download and run:<br>
+<a href="http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi">
+<tt>http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi</tt></a></p>
+
+<p>Follow the prompts to install with default options to <tt>C:\Python27</tt>.</p>
+
+<h3>Set up system paths</h3>
+
+<p>Under <em>My Computer -> Properties -> Advanced -> Environment Variables</em>, set:</p>
+<blockquote><p><tt>PATH=C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Python27;C:\GTK\bin;C:\libs\bin;C:\aud\bin<br>
+PKG_CONFIG_PATH=/C/GTK/lib/pkgconfig:/C/libs/lib/pkgconfig:/C/aud/lib/pkgconfig<br>
+C_INCLUDE_PATH=/C/GTK/include:/C/libs/include<br>
+CPLUS_INCLUDE_PATH=/C/GTK/include:/C/libs/include<br>
+LIBRARY_PATH=/C/GTK/lib:/C/libs/lib</tt></p></blockquote>
+
+<h3>Install zlib</h3>
+
+<p>Download and unzip to <tt>C:\zlib</tt>:<br>
+<a href="http://zlib.net/zlib-1.2.7.tar.gz">
+<tt>http://zlib.net/zlib-1.2.7.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/zlib<br>
+cp win32/Makefile.gcc Makefile<br>
+make<br>
+BINARY_PATH=/C/GTK/bin INCLUDE_PATH=/C/GTK/include LIBRARY_PATH=/C/GTK/lib make install<br>
+mkdir -p /C/GTK/bin<br>
+cp zlib1.dll /C/GTK/bin<br>
+cp libz.dll.a /C/GTK/lib</tt></p></blockquote>
+
+<h3>Install libpng</h3>
+
+<p>Download and unzip to <tt>C:\libpng</tt>:<br>
+<a href="http://download.sourceforge.net/libpng/libpng-1.5.12.tar.xz">
+<tt>http://download.sourceforge.net/libpng/libpng-1.5.12.tar.xz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libpng<br>
+./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libjpeg</h3>
+
+<p>Download and unzip to <tt>C:\libjpeg</tt>:<br>
+<a href="http://www.ijg.org/files/jpegsrc.v8d.tar.gz">
+<tt>http://www.ijg.org/files/jpegsrc.v8d.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libjpeg<br>
+./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libffi</h3>
+
+<p>Download and unzip to <tt>C:\libffi</tt>:<br>
+<a href="ftp://sourceware.org/pub/libffi/libffi-3.0.11.tar.gz">
+<tt>ftp://sourceware.org/pub/libffi/libffi-3.0.11.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libffi<br>
+./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install GLib</h3>
+
+<p>Download and unzip to <tt>C:\glib</tt>:<br>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/glib/2.32/glib-2.32.4.tar.xz">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/glib/2.32/glib-2.32.4.tar.xz</tt></a></p>
+
+<p>Apply the patch <tt>gwin32.c.diff</tt> to <tt>C:\glib\glib\gwin32.c</tt>.<br>
+Apply the patch <tt>gwin32.h.diff</tt> to <tt>C:\glib\glib\gwin32.h</tt>.<br>
+Apply the patch <tt>gcontenttype.c.diff</tt> to <tt>C:\glib\gio\gcontenttype.c</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/glib<br>
+CFLAGS="-march=i486" LIBFFI_CFLAGS="-I/C/GTK/lib/libffi-3.0.11/include" LIBFFI_LIBS="-lffi" ZLIB_CFLAGS="" ZLIB_LIBS="-lz" ./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install pkg-config</h3>
+
+<p>Download and unzip to <tt>C:\pkgconfig</tt>:<br>
+<a href="http://pkgconfig.freedesktop.org/releases/pkg-config-0.27.tar.gz">
+<tt>http://pkgconfig.freedesktop.org/releases/pkg-config-0.27.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/pkgconfig<br>
+GLIB_CFLAGS="-I/C/GTK/include/glib-2.0 -I/C/GTK/lib/glib-2.0/include" GLIB_LIBS="-lglib-2.0" ./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<p>Copy <tt>C:\GTK\share\aclocal\pkg.m4</tt> to <tt>C:\MinGW\share\aclocal</tt>.</p>
+
+<h3>Install pixman</h3>
+
+<p>Download and unzip to <tt>C:\pixman</tt>:<br>
+<a href="http://cairographics.org/releases/pixman-0.26.2.tar.gz">
+<tt>http://cairographics.org/releases/pixman-0.26.2.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/pixman<br>
+./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install Cairo</h3>
+
+<p>Download and unzip to <tt>C:\cairo</tt>:<br>
+<a href="http://cairographics.org/releases/cairo-1.10.2.tar.gz">
+<tt>http://cairographics.org/releases/cairo-1.10.2.tar.gz</tt></a></p>
+
+<p>Apply the patch <tt>cairo-win32-surface.c.diff</tt> to <tt>C:\cairo\src\cairo-win32-surface.c</tt>.<br>
+Apply the patch <tt>cairo-surface-xy.diff</tt> (it changes multiple files).<br>
+Apply the patch <tt>any2ppm.c.diff</tt> to <tt>C:\cairo\test\any2ppm.c</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/cairo<br>
+./configure --prefix=/C/GTK --disable-interpreter<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install Pango</h3>
+
+<p>Download and unzip to <tt>C:\pango</tt>:<br>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/pango/1.30/pango-1.30.0.tar.xz">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/pango/1.30/pango-1.30.0.tar.xz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/pango<br>
+./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install gdk-pixbuf</h3>
+
+<p>Download and unzip to <tt>C:\gdk-pixbuf</tt>:<br>
+<a href="http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.26/gdk-pixbuf-2.26.0.tar.xz">
+<tt>http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.26/gdk-pixbuf-2.26.0.tar.xz</tt></a></p>
+
+<p>Apply the patch <tt>gdk-pixbuf-configure.diff</tt> to <tt>C:\gdk-pixbuf\configure</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/gdk-pixbuf<br>
+./configure --prefix=/C/GTK --without-gdiplus --without-libtiff<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install ATK</h3>
+
+<p>Download and unzip to <tt>C:\atk</tt>:<br>
+<a href="http://ftp.gnome.org/pub/gnome/sources/atk/2.4/atk-2.4.0.tar.xz">
+<tt>http://ftp.gnome.org/pub/gnome/sources/atk/2.4/atk-2.4.0.tar.xz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/atk<br>
+./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install GTK+</h3>
+
+<p>Download and unzip to <tt>C:\gtksrc</tt>:<br>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/gtk+/3.4/gtk+-3.4.4.tar.xz">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/gtk+/3.4/gtk+-3.4.4.tar.xz</tt></a></p>
+
+<p>Apply the patch <tt>gtk-configure.diff</tt> to <tt>C:\gtksrc\configure</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/gtksrc<br>
+CFLAGS="-DHAVE_ISNAN -DHAVE_ISINF" ./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install SDL</h3>
+
+<p>Download and unzip to <tt>C:\libs</tt>:<br>
+<a href="http://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz">
+<tt>http://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz</tt></a></p>
+
+<p>Apply the patch <tt>sdl-config.diff</tt> to <tt>C:\libs\bin\sdl-config</tt>.<br>
+Copy <tt>C:\libs\share\aclocal\sdl.m4</tt> to <tt>C:\MinGW\share\aclocal</tt>.</p>
+
+<h3>Install libxml</h3>
+
+<p>Download and unzip to <tt>C:\libxml</tt>:<br>
+<a href="ftp://xmlsoft.org/libxml2/libxml2-2.8.0.tar.gz">
+<tt>ftp://xmlsoft.org/libxml2/libxml2-2.8.0.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libxml<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install regex</h3>
+
+<p>Download and unzip to <tt>C:\libs</tt>:<br>
+<a href="http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-dev.tar.gz/download">
+<tt>http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-bin.tar.gz/download</tt></a><br>
+<a href="http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-dev.tar.gz/download">
+<tt>http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-bin.tar.gz/download</tt></a></p>
+
+<h3>Install mpg123</h3>
+
+<p>Download and unzip to <tt>C:\mpg123</tt>:<br>
+<a href="http://mpg123.de/download/mpg123-1.14.3.tar.bz2">
+<tt>http://mpg123.de/download/mpg123-1.14.3.tar.bz2</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/mpg123<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libfaad</h3>
+
+<p>Download and unzip to <tt>C:\libfaad</tt>:<br>
+<a href="http://sourceforge.net/projects/faac/files/faad2-src/faad2-2.7/faad2-2.7.tar.bz2/download">
+<tt>http://sourceforge.net/projects/faac/files/faad2-src/faad2-2.7/faad2-2.7.tar.bz2/download</tt></a></p>
+
+<p>Apply the patch <tt>libfaad-main.c.diff</tt> to <tt>C:\libfaad\frontend\main.c</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libfaad<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libsndfile</h3>
+
+<p>Download and unzip to <tt>C:\libsndfile</tt>:<br>
+<a href="http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz">
+<tt>http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libsndfile<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libbs2b</h3>
+
+<p>Download and unzip to <tt>C:\libbs2b</tt>:<br>
+<a href="http://sourceforge.net/projects/bs2b/files/libbs2b/3.1.0/libbs2b-3.1.0.tar.bz2/download">
+<tt>http://sourceforge.net/projects/bs2b/files/libbs2b/3.1.0/libbs2b-3.1.0.tar.bz2/download</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libbs2b<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libcdio</h3>
+
+<p>Download and unzip to <tt>C:\libcdio</tt>:<br>
+<a href="http://ftp.gnu.org/gnu/libcdio/libcdio-0.83.tar.bz2">
+<tt>http://ftp.gnu.org/gnu/libcdio/libcdio-0.83.tar.bz2</tt></a></p>
+
+<p>Apply the patch <tt>libcdio-util.c.diff</tt> to <tt>C:\libcdio\src\util.c</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libcdio<br>
+./configure --prefix=/C/libs --disable-rock<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libcddb</h3>
+
+<p>Download and unzip to <tt>C:\libcddb</tt>:<br>
+<a href="http://sourceforge.net/projects/libcddb/files/libcddb/1.3.2/libcddb-1.3.2.tar.bz2/download">
+<tt>http://sourceforge.net/projects/libcddb/files/libcddb/1.3.2/libcddb-1.3.2.tar.bz2/download</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libcddb<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libcue</h3>
+
+<p>Download and unzip to <tt>C:\libcue</tt>:<br>
+<a href="http://sourceforge.net/projects/libcue/files/libcue/1.4.0/libcue-1.4.0.tar.bz2/download">
+<tt>http://sourceforge.net/projects/libcue/files/libcue/1.4.0/libcue-1.4.0.tar.bz2/download</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libcue<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install LAME</h3>
+
+<p>Download and unzip to <tt>C:\lame</tt>:<br>
+<a href="http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.3.tar.gz/download">
+<tt>http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.3.tar.gz/download</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/lame<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libflac</h3>
+
+<p>Download and unzip to <tt>C:\libflac</tt>:<br>
+<a href="http://downloads.xiph.org/releases/flac/flac-1.2.1.tar.gz">
+<tt>http://downloads.xiph.org/releases/flac/flac-1.2.1.tar.gz</tt></a></p>
+
+<p>Apply the patch <tt>libflac-alloc.h.diff</tt> to <tt>C:\libflac\include\share\alloc.h</tt>.<br>
+Apply the patch <tt>libflac-main.cpp.diff</tt> to <tt>C:\libflac\examples\cpp\encode\file\main.cpp</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libflac<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<p>Apply the patch <tt>flac.pc.diff</tt> to <tt>C:\libs\lib\pkgconfig\flac.pc</tt>.</p>
+
+<h3>Install libogg</h3>
+
+<p>Download and unzip to <tt>C:\libogg</tt>:<br>
+<a href="http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz">
+<tt>http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libogg<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libvorbis</h3>
+
+<p>Download and unzip to <tt>C:\libvorbis</tt>:<br>
+<a href="http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.bz2">
+<tt>http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.bz2</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libvorbis<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libneon</h3>
+
+<p>Download and unzip to <tt>C:\libneon</tt>:<br>
+<a href="http://www.webdav.org/neon/neon-0.29.6.tar.gz">
+<tt>http://www.webdav.org/neon/neon-0.29.6.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libneon<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<p>Apply the patch <tt>neon.pc.diff</tt> to <tt>C:\libs\lib\pkgconfig\neon.pc</tt>.</p>
+
+<h3>Install libsamplerate</h3>
+
+<p>Download and unzip to <tt>C:\libsamplerate</tt>:<br>
+<a href="http://www.mega-nerd.com/SRC/libsamplerate-0.1.8.tar.gz">
+<tt>http://www.mega-nerd.com/SRC/libsamplerate-0.1.8.tar.gz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libsamplerate<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libwavpack</h3>
+
+<p>Download and unzip to <tt>C:\libwavpack</tt>:<br>
+<a href="http://www.wavpack.com/wavpack-4.60.1.tar.bz2">
+<tt>http://www.wavpack.com/wavpack-4.60.1.tar.bz2</tt></a></p>
+
+<p>Apply the patch <tt>libwavpack-utils.c.diff</tt> to <tt>C:\libwavpack\cli\utils.c</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libwavpack<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install FFmpeg</h3>
+
+<p>Download and unzip to <tt>C:\ffmpeg</tt>:<br>
+<a href="http://ffmpeg.org/releases/ffmpeg-0.11.1.tar.bz2">
+<tt>http://ffmpeg.org/releases/ffmpeg-0.11.1.tar.bz2</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/ffmpeg<br>
+./configure --prefix=/C/libs --disable-yasm<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libbinio</h3>
+
+<p>Download and unzip to <tt>C:\libbinio</tt>:<br>
+<a href="http://sourceforge.net/projects/libbinio/files/libbinio/1.4/libbinio-1.4.tar.bz2/download">
+<tt>http://sourceforge.net/projects/libbinio/files/libbinio/1.4/libbinio-1.4.tar.bz2/download</tt></a></p>
+
+<p>Apply the patch <tt>binwrap.cpp.diff</tt> to <tt>C:\libbinio\src\binwrap.cpp</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libbinio<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libcurl</h3>
+
+<p>Download and unzip to <tt>C:\libcurl</tt>:<br>
+<a href="http://curl.haxx.se/download/curl-7.26.0.tar.bz2">
+<tt>http://curl.haxx.se/download/curl-7.26.0.tar.bz2</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libcurl<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install libmms</h3>
+
+<p>Download and unzip to <tt>C:\libmms</tt>:<br>
+<a href="http://sourceforge.net/projects/libmms/files/libmms/0.6.2/libmms-0.6.2.tar.gz/download">
+<tt>http://sourceforge.net/projects/libmms/files/libmms/0.6.2/libmms-0.6.2.tar.gz/download</tt></a></p>
+
+<p>Apply the patch <tt>mms-Makefile.am.diff</tt> to <tt>C:\libmms\src\Makefile.am</tt>.</p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/libmms<br>
+./autogen.sh<br>
+./configure --prefix=/C/libs<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install Audacious</h3>
+
+<p>Download and unzip to <tt>C:\audacious</tt>:<br>
+<a href="http://distfiles.audacious-media-player.org/audacious-3.3.1.tar.bz2">
+<tt>http://distfiles.audacious-media-player.org/audacious-3.3.1.tar.bz2</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/audacious<br>
+./configure --prefix=/C/aud<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install Audacious Plugins</h3>
+
+<p>Download and unzip to <tt>C:\audacious-plugins</tt>:<br>
+<a href="http://distfiles.audacious-media-player.org/audacious-plugins-3.3.1.tar.bz2">
+<tt>http://distfiles.audacious-media-player.org/audacious-plugins-3.3.1.tar.bz2</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/audacious-plugins<br>
+./configure --prefix=/C/aud<br>
+make<br>
+make install</tt></p></blockquote>
+
+</body>
+</html>
diff --git a/contrib/win32/notes.rtf b/contrib/win32/notes.rtf
deleted file mode 100644
index 850bb6a..0000000
--- a/contrib/win32/notes.rtf
+++ /dev/null
@@ -1,266 +0,0 @@
-{\rtf1\ansi\fs24
-{\b Notes for Building Audacious on Windows}
-\par
-\par {John Lindgren}
-\par {May 24, 2012}
-\par
-\par {This is not intended to be a complete set of instructions, but merely an outline. Use at your own risk, etc., etc.}
-\par
-\par {Several patch files should accompany this document.}
-\par
-\par {\ul Install MinGW}
-\par
-\par {Download and run:}
-\par {\fs20 http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/mingw-get-inst-20110802/mingw-get-inst-20110802.exe/download}
-\par
-\par {When prompted, use these options:}
-\par {\fs20 Use pre-packaged repository catalogues}
-\par {\fs20 C++ compiler}
-\par {\fs20 MinGW Developer Toolkit}
-\par
-\par {Copy }{\fs20 C:\\MinGW\\lib\\libiconv.*}{ to }{\fs20 C:\\MinGW\\msys\\1.0\\lib}{.}
-\par {Apply the patch }{\fs20 libintl.h.diff}{ to }{\fs20 C:\\MinGW\\include\\libintl.h}{.}
-\par
-\par {\ul Install GTK+}
-\par
-\par {Download and unzip to }{\fs20 C:\\GTK}{:}
-\par {\fs20 http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.8-20111122_win32.zip}
-\par
-\par {Copy }{\fs20 C:\\GTK\\share\\aclocal\\pkg.m4}{ to }{\fs20 C:\\MinGW\\share\\aclocal}{.}
-\par {Apply the patch }{\fs20 gtkrc.diff}{ to }{\fs20 C:\\GTK\\share\\themes\\MS-Windows\\gtk-2.0\\gtkrc}{.}
-\par
-\par {\ul Install SDL}
-\par
-\par {Download and unzip to }{\fs20 C:\\libs}{:}
-\par {\fs20 http://www.libsdl.org/release/SDL-devel-1.2.14-mingw32.tar.gz}
-\par
-\par {\ul Set up system paths}
-\par
-\par {Under }{\fs20 My Computer -> Properties -> Advanced -> Environment Variables}{, set:}
-\par {\fs20 PATH=C:\\MinGW\\bin;C:\\MinGW\\msys\\1.0\\bin;C:\\GTK\\bin;C:\\libs\\bin;C:\\aud\\bin}
-\par {\fs20 PKG_CONFIG_PATH=/C/GTK/lib/pkgconfig:/C/libs/lib/pkgconfig:/C/aud/lib/pkgconfig}
-\par {\fs20 C_INCLUDE_PATH=/C/GTK/include:/C/libs/include}
-\par {\fs20 CPLUS_INCLUDE_PATH=/C/GTK/include:/C/libs/include}
-\par {\fs20 LIBRARY_PATH=/C/GTK/lib:/C/libs/lib}
-\par
-\par {\ul Install libxml}
-\par
-\par {Download and unzip to }{\fs20 C:\\libxml}{:}
-\par {\fs20 ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz}
-\par
-\par {Apply the patch }{\fs20 libxml-testThreads.c.diff}{ to }{\fs20 C:\\libxml\\testThreads.c}{.}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libxml}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install regex}
-\par
-\par {Download and unzip to }{\fs20 C:\\libs}{:}
-\par {\fs20 http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-dev.tar.gz/download}
-\par {\fs20 http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-bin.tar.gz/download}
-\par
-\par {\ul Install mpg123}
-\par
-\par {Download and unzip to }{\fs20 C:\\mpg123}{:}
-\par {\fs20 http://mpg123.de/download/mpg123-1.13.4.tar.bz2}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/mpg123}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libfaad}
-\par
-\par {Download and unzip to }{\fs20 C:\\libfaad}{:}
-\par {\fs20 http://sourceforge.net/projects/faac/files/faad2-src/faad2-2.7/faad2-2.7.tar.bz2/download}
-\par
-\par {Apply the patch }{\fs20 libfaad-main.c.diff}{ to }{\fs20 C:\\libfaad\\frontend\\main.c}{.}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libfaad}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libsndfile}
-\par
-\par {Download and unzip to }{\fs20 C:\\libsndfile}{:}
-\par {\fs20 http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libsndfile}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libbs2b}
-\par
-\par {Download and unzip to }{\fs20 C:\\libbs2b}{:}
-\par {\fs20 https://sourceforge.net/projects/bs2b/files/libbs2b/3.1.0/libbs2b-3.1.0.tar.bz2/download}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libbs2b}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libcdio}
-\par
-\par {Download and unzip to }{\fs20 C:\\libcdio}{:}
-\par {\fs20 http://ftp.gnu.org/gnu/libcdio/libcdio-0.83.tar.bz2}
-\par
-\par {Apply the patch }{\fs20 libcdio-util.c.diff}{ to }{\fs20 C:\\libcdio\\src\\util.c}{.}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libcdio}
-\par {\fs20 ./configure --prefix=/C/libs --disable-rock}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libcddb}
-\par
-\par {Download and unzip to }{\fs20 C:\\libcddb}{:}
-\par {\fs20 https://sourceforge.net/projects/libcddb/files/libcddb/1.3.2/libcddb-1.3.2.tar.bz2/download}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libcddb}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libcue}
-\par
-\par {Download and unzip to }{\fs20 C:\\libcue}{:}
-\par {\fs20 https://sourceforge.net/projects/libcue/files/libcue/1.4.0/libcue-1.4.0.tar.bz2/download}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libcue}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install LAME}
-\par
-\par {Download and unzip to }{\fs20 C:\\lame}{:}
-\par {\fs20 http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.3.tar.gz/download}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/lame}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libflac}
-\par
-\par {Download and unzip to }{\fs20 C:\\libflac}{:}
-\par {\fs20 http://downloads.xiph.org/releases/flac/flac-1.2.1.tar.gz}
-\par
-\par {Apply the patch }{\fs20 libflac-alloc.h.diff}{ to }{\fs20 C:\\libflac\\include\\share\\alloc.h}{.}
-\par {Apply the patch }{\fs20 libflac-main.cpp.diff}{ to }{\fs20 C:\\libflac\\examples\\cpp\\encode\\file\\main.cpp}{.}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libflac}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {Apply the patch }{\fs20 flac.pc.diff}{ to }{\fs20 C:\\libs\\lib\\pkgconfig\\flac.pc}{.}
-\par
-\par {\ul Install libogg}
-\par
-\par {Download and unzip to }{\fs20 C:\\libogg}{:}
-\par {\fs20 http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libogg}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libvorbis}
-\par
-\par {Download and unzip to }{\fs20 C:\\libvorbis}{:}
-\par {\fs20 http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.bz2}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libvorbis}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libneon}
-\par
-\par {Download and unzip to }{\fs20 C:\\libneon}{:}
-\par {\fs20 http://www.webdav.org/neon/neon-0.29.6.tar.gz}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libneon}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {Apply the patch }{\fs20 neon.pc.diff}{ to }{\fs20 C:\\libs\\lib\\pkgconfig\\neon.pc}{.}
-\par
-\par {\ul Install libsamplerate}
-\par
-\par {Download and unzip to }{\fs20 C:\\libsamplerate}{:}
-\par {\fs20 http://www.mega-nerd.com/SRC/libsamplerate-0.1.8.tar.gz}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libsamplerate}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install libwavpack}
-\par
-\par {Download and unzip to }{\fs20 C:\\libwavpack}{:}
-\par {\fs20 http://www.wavpack.com/wavpack-4.60.1.tar.bz2}
-\par
-\par {Apply the patch }{\fs20 libwavpack-utils.c.diff}{ to }{\fs20 C:\\libwavpack\\cli\\utils.c}{.}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/libwavpack}
-\par {\fs20 ./configure --prefix=/C/libs}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install FFmpeg}
-\par
-\par {Download and unzip to }{\fs20 C:\\ffmpeg}{:}
-\par {\fs20 http://ffmpeg.org/releases/ffmpeg-0.9.tar.bz2}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/ffmpeg}
-\par {\fs20 ./configure --prefix=/C/libs --disable-yasm}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install Audacious}
-\par
-\par {Download and unzip to }{\fs20 C:\\audacious}{:}
-\par {\fs20 http://distfiles.audacious-media-player.org/audacious-3.2.3.tar.bz2}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/audacious}
-\par {\fs20 ./configure --prefix=/C/aud}
-\par {\fs20 make}
-\par {\fs20 make install}
-\par
-\par {\ul Install Audacious plugins}
-\par
-\par {Download and unzip to }{\fs20 C:\\audacious-plugins}{:}
-\par {\fs20 http://distfiles.audacious-media-player.org/audacious-plugins-3.2.3.tar.bz2}
-\par
-\par {In the MinGW shell:}
-\par {\fs20 cd /C/audacious-plugins}
-\par {\fs20 export SDL_CFLAGS="-I/C/libs/include/SDL"}
-\par {\fs20 export SDL_LIBS="-L/C/libs/lib -lSDL"}
-\par {\fs20 ./configure --prefix=/C/aud}
-\par {\fs20 make}
-\par {\fs20 make install}
-}
diff --git a/contrib/win32/patches/any2ppm.c.diff b/contrib/win32/patches/any2ppm.c.diff
new file mode 100644
index 0000000..22cc05d
--- /dev/null
+++ b/contrib/win32/patches/any2ppm.c.diff
@@ -0,0 +1,63 @@
+--- any2ppm.c.0 2012-02-29 07:10:30 -0500
++++ any2ppm.c 2012-04-01 21:38:26 -0400
+@@ -96,7 +96,7 @@
+ #define ARRAY_LENGTH(A) (sizeof (A) / sizeof (A[0]))
+
+ static int
+-_writen (int fd, char *buf, int len)
++do_writen (int fd, char *buf, int len)
+ {
+ while (len) {
+ int ret;
+@@ -120,7 +120,7 @@
+ }
+
+ static int
+-_write (int fd,
++do_write (int fd,
+ char *buf, int maxlen, int buflen,
+ const unsigned char *src, int srclen)
+ {
+@@ -141,7 +141,7 @@
+ src += len;
+
+ if (buflen == maxlen) {
+- if (! _writen (fd, buf, buflen))
++ if (! do_writen (fd, buf, buflen))
+ return -1;
+
+ buflen = 0;
+@@ -204,7 +204,7 @@
+
+ switch ((int) format) {
+ case CAIRO_FORMAT_ARGB32:
+- len = _write (fd,
++ len = do_write (fd,
+ buf, sizeof (buf), len,
+ (unsigned char *) row, 4 * width);
+ break;
+@@ -215,13 +215,13 @@
+ rgb[0] = (p & 0xff0000) >> 16;
+ rgb[1] = (p & 0x00ff00) >> 8;
+ rgb[2] = (p & 0x0000ff) >> 0;
+- len = _write (fd,
++ len = do_write (fd,
+ buf, sizeof (buf), len,
+ rgb, 3);
+ }
+ break;
+ case CAIRO_FORMAT_A8:
+- len = _write (fd,
++ len = do_write (fd,
+ buf, sizeof (buf), len,
+ (unsigned char *) row, width);
+ break;
+@@ -230,7 +230,7 @@
+ return "write failed";
+ }
+
+- if (len && ! _writen (fd, buf, len))
++ if (len && ! do_writen (fd, buf, len))
+ return "write failed";
+
+ return NULL;
diff --git a/contrib/win32/patches/binwrap.cpp.diff b/contrib/win32/patches/binwrap.cpp.diff
new file mode 100644
index 0000000..eec4d96
--- /dev/null
+++ b/contrib/win32/patches/binwrap.cpp.diff
@@ -0,0 +1,10 @@
+--- binwrap.cpp.0 2003-03-08 11:02:34 -0500
++++ binwrap.cpp 2012-07-01 20:28:48 -0400
+@@ -17,6 +17,7 @@
+ * Copyright (C) 2002, 2003 Simon Peter <dn.tlp@gmx.net>
+ */
+
++#include <cstdio>
+ #include "binwrap.h"
+
+ #if BINIO_ENABLE_IOSTREAM
diff --git a/contrib/win32/patches/cairo-surface-xy.diff b/contrib/win32/patches/cairo-surface-xy.diff
new file mode 100644
index 0000000..0af7c03
--- /dev/null
+++ b/contrib/win32/patches/cairo-surface-xy.diff
@@ -0,0 +1,381 @@
+diff --git a/src/cairo-composite-rectangles-private.h b/src/cairo-composite-rectangles-private.h
+index a0f7c1a..8b24939 100644
+--- a/src/cairo-composite-rectangles-private.h
++++ b/src/cairo-composite-rectangles-private.h
+@@ -60,6 +60,7 @@ struct _cairo_composite_rectangles {
+
+ cairo_private cairo_int_status_t
+ _cairo_composite_rectangles_init_for_paint (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+@@ -67,6 +68,7 @@ _cairo_composite_rectangles_init_for_paint (cairo_composite_rectangles_t *extent
+
+ cairo_private cairo_int_status_t
+ _cairo_composite_rectangles_init_for_mask (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+@@ -75,6 +77,7 @@ _cairo_composite_rectangles_init_for_mask (cairo_composite_rectangles_t *extents
+
+ cairo_private cairo_int_status_t
+ _cairo_composite_rectangles_init_for_stroke (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+@@ -85,6 +88,7 @@ _cairo_composite_rectangles_init_for_stroke (cairo_composite_rectangles_t *exten
+
+ cairo_private cairo_int_status_t
+ _cairo_composite_rectangles_init_for_fill (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+@@ -93,6 +97,7 @@ _cairo_composite_rectangles_init_for_fill (cairo_composite_rectangles_t *extents
+
+ cairo_private cairo_int_status_t
+ _cairo_composite_rectangles_init_for_glyphs (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+diff --git a/src/cairo-composite-rectangles.c b/src/cairo-composite-rectangles.c
+index 0aebee3..a1a7637 100644
+--- a/src/cairo-composite-rectangles.c
++++ b/src/cairo-composite-rectangles.c
+@@ -42,12 +42,14 @@
+
+ static inline cairo_bool_t
+ _cairo_composite_rectangles_init (cairo_composite_rectangles_t *extents,
++ int x, int y,
+ int width, int height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+ cairo_clip_t *clip)
+ {
+- extents->unbounded.x = extents->unbounded.y = 0;
++ extents->unbounded.x = x;
++ extents->unbounded.y = y;
+ extents->unbounded.width = width;
+ extents->unbounded.height = height;
+
+@@ -76,12 +78,14 @@ _cairo_composite_rectangles_init (cairo_composite_rectangles_t *extents,
+
+ cairo_int_status_t
+ _cairo_composite_rectangles_init_for_paint (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+ cairo_clip_t *clip)
+ {
+ if (! _cairo_composite_rectangles_init (extents,
++ surface_x, surface_y,
+ surface_width, surface_height,
+ op, source, clip))
+ {
+@@ -106,6 +110,7 @@ _cairo_composite_rectangles_intersect (cairo_composite_rectangles_t *extents)
+
+ cairo_int_status_t
+ _cairo_composite_rectangles_init_for_mask (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+@@ -113,6 +118,7 @@ _cairo_composite_rectangles_init_for_mask (cairo_composite_rectangles_t *extents
+ cairo_clip_t *clip)
+ {
+ if (! _cairo_composite_rectangles_init (extents,
++ surface_x, surface_y,
+ surface_width, surface_height,
+ op, source, clip))
+ {
+@@ -126,6 +132,7 @@ _cairo_composite_rectangles_init_for_mask (cairo_composite_rectangles_t *extents
+
+ cairo_int_status_t
+ _cairo_composite_rectangles_init_for_stroke (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+@@ -135,6 +142,7 @@ _cairo_composite_rectangles_init_for_stroke (cairo_composite_rectangles_t *exten
+ cairo_clip_t *clip)
+ {
+ if (! _cairo_composite_rectangles_init (extents,
++ surface_x, surface_y,
+ surface_width, surface_height,
+ op, source, clip))
+ {
+@@ -148,6 +156,7 @@ _cairo_composite_rectangles_init_for_stroke (cairo_composite_rectangles_t *exten
+
+ cairo_int_status_t
+ _cairo_composite_rectangles_init_for_fill (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+@@ -155,6 +164,7 @@ _cairo_composite_rectangles_init_for_fill (cairo_composite_rectangles_t *extents
+ cairo_clip_t *clip)
+ {
+ if (! _cairo_composite_rectangles_init (extents,
++ surface_x, surface_y,
+ surface_width, surface_height,
+ op, source, clip))
+ {
+@@ -168,6 +178,7 @@ _cairo_composite_rectangles_init_for_fill (cairo_composite_rectangles_t *extents
+
+ cairo_int_status_t
+ _cairo_composite_rectangles_init_for_glyphs (cairo_composite_rectangles_t *extents,
++ int surface_x, int surface_y,
+ int surface_width, int surface_height,
+ cairo_operator_t op,
+ const cairo_pattern_t *source,
+@@ -180,6 +191,7 @@ _cairo_composite_rectangles_init_for_glyphs (cairo_composite_rectangles_t *exten
+ cairo_status_t status;
+
+ if (! _cairo_composite_rectangles_init (extents,
++ surface_x, surface_y,
+ surface_width, surface_height,
+ op, source, clip))
+ {
+diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c
+index e53506c..0980a57 100644
+--- a/src/cairo-gl-surface.c
++++ b/src/cairo-gl-surface.c
+@@ -1479,6 +1479,7 @@ _cairo_gl_surface_stroke (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_stroke (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+@@ -1545,6 +1546,7 @@ _cairo_gl_surface_fill (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_fill (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source, path,
+diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c
+index 4d65ee6..01e60a2 100644
+--- a/src/cairo-image-surface.c
++++ b/src/cairo-image-surface.c
+@@ -3248,6 +3248,7 @@ _cairo_image_surface_paint (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_paint (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+@@ -3368,7 +3369,7 @@ _cairo_image_surface_mask (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_mask (&extents,
+- surface->width, surface->height,
++ 0, 0, surface->width, surface->height,
+ op, source, mask, clip);
+ if (unlikely (status))
+ return status;
+@@ -3599,6 +3600,7 @@ _cairo_image_surface_stroke (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_stroke (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+@@ -3691,6 +3693,7 @@ _cairo_image_surface_fill (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_fill (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source, path,
+@@ -4022,6 +4025,7 @@ _cairo_image_surface_glyphs (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_glyphs (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
+index c60e636..24a6119 100644
+--- a/src/cairo-pdf-surface.c
++++ b/src/cairo-pdf-surface.c
+@@ -5399,6 +5399,7 @@ _cairo_pdf_surface_paint (void *abstract_surface,
+ cairo_composite_rectangles_t extents;
+
+ status = _cairo_composite_rectangles_init_for_paint (&extents,
++ 0, 0,
+ surface->width, surface->height,
+ op, source, clip);
+ if (unlikely (status)) {
+@@ -5514,6 +5515,7 @@ _cairo_pdf_surface_mask (void *abstract_surface,
+ cairo_composite_rectangles_t extents;
+
+ status = _cairo_composite_rectangles_init_for_mask (&extents,
++ 0, 0,
+ surface->width, surface->height,
+ op, source, mask, clip);
+ if (unlikely (status)) {
+@@ -5623,6 +5625,7 @@ _cairo_pdf_surface_stroke (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_stroke (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+@@ -5752,6 +5755,7 @@ _cairo_pdf_surface_fill (void *abstract_surface,
+ cairo_composite_rectangles_t extents;
+
+ status = _cairo_composite_rectangles_init_for_fill (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source, path,
+@@ -6032,6 +6036,7 @@ _cairo_pdf_surface_show_text_glyphs (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_glyphs (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c
+index c73214e..3b7139a 100644
+--- a/src/cairo-ps-surface.c
++++ b/src/cairo-ps-surface.c
+@@ -3497,6 +3497,7 @@ _cairo_ps_surface_paint (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_paint (&extents,
++ 0, 0,
+ surface->width, surface->height,
+ op, source, clip);
+ if (unlikely (status))
+@@ -3565,6 +3566,7 @@ _cairo_ps_surface_stroke (void *abstract_surface,
+ cairo_int_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_stroke (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+@@ -3630,6 +3632,7 @@ _cairo_ps_surface_fill (void *abstract_surface,
+ cairo_int_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_fill (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source, path,
+@@ -3718,6 +3721,7 @@ _cairo_ps_surface_show_glyphs (void *abstract_surface,
+ cairo_status_t status;
+
+ status = _cairo_composite_rectangles_init_for_glyphs (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+diff --git a/src/cairo-surface-fallback.c b/src/cairo-surface-fallback.c
+index 99ea07e..c63be72 100644
+--- a/src/cairo-surface-fallback.c
++++ b/src/cairo-surface-fallback.c
+@@ -896,6 +896,8 @@ _cairo_surface_fallback_paint (cairo_surface_t *surface,
+ ASSERT_NOT_REACHED;
+
+ status = _cairo_composite_rectangles_init_for_paint (&extents,
++ rect.x,
++ rect.y,
+ rect.width,
+ rect.height,
+ op, source,
+@@ -1007,6 +1009,7 @@ _cairo_surface_fallback_mask (cairo_surface_t *surface,
+ ASSERT_NOT_REACHED;
+
+ status = _cairo_composite_rectangles_init_for_mask (&extents,
++ rect.x, rect.y,
+ rect.width, rect.height,
+ op, source, mask, clip);
+ if (unlikely (status))
+@@ -1052,6 +1055,8 @@ _cairo_surface_fallback_stroke (cairo_surface_t *surface,
+ ASSERT_NOT_REACHED;
+
+ status = _cairo_composite_rectangles_init_for_stroke (&extents,
++ rect.x,
++ rect.y,
+ rect.width,
+ rect.height,
+ op, source,
+@@ -1146,6 +1151,8 @@ _cairo_surface_fallback_fill (cairo_surface_t *surface,
+ ASSERT_NOT_REACHED;
+
+ status = _cairo_composite_rectangles_init_for_fill (&extents,
++ rect.x,
++ rect.y,
+ rect.width,
+ rect.height,
+ op, source, path,
+@@ -1316,6 +1323,8 @@ _cairo_surface_fallback_show_glyphs (cairo_surface_t *surface,
+ ASSERT_NOT_REACHED;
+
+ status = _cairo_composite_rectangles_init_for_glyphs (&extents,
++ rect.x,
++ rect.y,
+ rect.width,
+ rect.height,
+ op, source,
+diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c
+index 8294a47..a38ea78 100644
+--- a/src/cairo-xcb-surface-render.c
++++ b/src/cairo-xcb-surface-render.c
+@@ -3122,6 +3122,7 @@ _cairo_xcb_surface_render_paint (cairo_xcb_surface_t *surface,
+ }
+
+ status = _cairo_composite_rectangles_init_for_paint (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+@@ -3191,6 +3192,7 @@ _cairo_xcb_surface_render_mask (cairo_xcb_surface_t *surface,
+ return CAIRO_INT_STATUS_UNSUPPORTED;
+
+ status = _cairo_composite_rectangles_init_for_mask (&extents,
++ 0, 0,
+ surface->width, surface->height,
+ op, source, mask, clip);
+ if (unlikely (status))
+@@ -3475,6 +3477,7 @@ _cairo_xcb_surface_render_stroke (cairo_xcb_surface_t *surface,
+ }
+
+ status = _cairo_composite_rectangles_init_for_stroke (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+@@ -3659,6 +3662,7 @@ _cairo_xcb_surface_render_fill (cairo_xcb_surface_t *surface,
+ }
+
+ status = _cairo_composite_rectangles_init_for_fill (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source, path,
+@@ -4621,6 +4625,7 @@ _cairo_xcb_surface_render_glyphs (cairo_xcb_surface_t *surface,
+ return CAIRO_INT_STATUS_UNSUPPORTED;
+
+ status = _cairo_composite_rectangles_init_for_glyphs (&extents,
++ 0, 0,
+ surface->width,
+ surface->height,
+ op, source,
+
diff --git a/contrib/win32/patches/cairo-win32-surface.c.diff b/contrib/win32/patches/cairo-win32-surface.c.diff
new file mode 100644
index 0000000..5ce0963
--- /dev/null
+++ b/contrib/win32/patches/cairo-win32-surface.c.diff
@@ -0,0 +1,22 @@
+commit a02dd8ddc7dde30ba71e87ab5e90bf910b68da2b
+Author: Alexander Larsson <alexl@redhat.com>
+Date: Fri Nov 11 16:15:31 2011 +0100
+
+ win32: Reset clip in _cairo_win32_surface_release_dest_image
+
+ Without this we were using leftover clip regions from e.g. show_glyphs
+ which made the fallback drawing results disappear.
+
+diff --git a/src/cairo-win32-surface.c b/src/cairo-win32-surface.c
+index 660aaba..59305f1 100644
+--- a/src/cairo-win32-surface.c
++++ b/src/cairo-win32-surface.c
+@@ -630,6 +630,8 @@ _cairo_win32_surface_release_dest_image (void *abstract_surfa
+ if (!local)
+ return;
+
++ _cairo_win32_surface_set_clip_region (surface, NULL);
++
+ if (!BitBlt (surface->dc,
+ image_rect->x, image_rect->y,
+ image_rect->width, image_rect->height,
diff --git a/contrib/win32/patches/gcontenttype.c.diff b/contrib/win32/patches/gcontenttype.c.diff
new file mode 100644
index 0000000..2c1e6d1
--- /dev/null
+++ b/contrib/win32/patches/gcontenttype.c.diff
@@ -0,0 +1,11 @@
+--- gcontenttype.c.0 2012-07-14 16:33:18 -0400
++++ gcontenttype.c 2012-08-04 16:02:09 -0400
+@@ -332,7 +332,7 @@
+
+ /* our test suite and potentially other code used -1 in the past, which is
+ * not documented and not allowed; guard against that */
+- g_return_val_if_fail (data_size != (gsize) -1, g_strdup (XDG_MIME_TYPE_UNKNOWN));
++ g_return_val_if_fail (data_size != (gsize) -1, g_strdup ("*"));
+
+ if (filename)
+ {
diff --git a/contrib/win32/patches/gdk-pixbuf-configure.diff b/contrib/win32/patches/gdk-pixbuf-configure.diff
new file mode 100644
index 0000000..6dc1188
--- /dev/null
+++ b/contrib/win32/patches/gdk-pixbuf-configure.diff
@@ -0,0 +1,13 @@
+--- configure.0 2012-04-01 23:42:14 -0400
++++ configure 2012-04-01 23:42:29 -0400
+@@ -18792,8 +18792,8 @@
+ GDK_PIXBUF_PACKAGES="gmodule-no-export-2.0 gobject-2.0 gio-2.0"
+ GDK_PIXBUF_EXTRA_LIBS="$STATIC_LIB_DEPS $MATH_LIB $MEDIA_LIB"
+ GDK_PIXBUF_EXTRA_CFLAGS=
+-GDK_PIXBUF_DEP_LIBS="`$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $PNG_DEP_CFLAGS_PACKAGES` $GDK_PIXBUF_EXTRA_LIBS"
+-GDK_PIXBUF_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $PNG_DEP_CFLAGS_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS"
++GDK_PIXBUF_DEP_LIBS="`$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $PNG_DEP_CFLAGS_PACKAGES`"" $GDK_PIXBUF_EXTRA_LIBS"
++GDK_PIXBUF_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $PNG_DEP_CFLAGS_PACKAGES`"" $GDK_PIXBUF_EXTRA_CFLAGS"
+
+
+
diff --git a/contrib/win32/patches/gtk-configure.diff b/contrib/win32/patches/gtk-configure.diff
new file mode 100644
index 0000000..77c56be
--- /dev/null
+++ b/contrib/win32/patches/gtk-configure.diff
@@ -0,0 +1,24 @@
+--- configure.0 2012-04-02 00:33:16 -0400
++++ configure 2012-04-02 00:44:08 -0400
+@@ -23213,8 +23213,8 @@
+ GDK_PRIVATE_PACKAGES="$GDK_PRIVATE_PACKAGES pangoft2"
+ fi
+
+-GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES $GDK_PRIVATE_PACKAGES` $MATH_LIB"
+-GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDK_PACKAGES $GDK_PRIVATE_PACKAGES` $GDK_EXTRA_CFLAGS"
++GDK_DEP_LIBS="$GDK_EXTRA_LIBS ""`$PKG_CONFIG --libs $GDK_PACKAGES $GDK_PRIVATE_PACKAGES`"" $MATH_LIB"
++GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDK_PACKAGES $GDK_PRIVATE_PACKAGES`"" $GDK_EXTRA_CFLAGS"
+ #
+ # If we aren't writing explicit dependencies, then don't put the extra libraries we need
+ # into the pkg-config files
+@@ -23294,8 +23294,8 @@
+ GTK_EXTRA_LIBS=
+
+ GTK_EXTRA_CFLAGS=
+-GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES $GTK_PRIVATE_PACKAGES` $GTK_EXTRA_LIBS $MATH_LIB"
+-GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDK_PACKAGES $GTK_PACKAGES $GTK_PRIVATE_PACKAGES` $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
++GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X ""`$PKG_CONFIG --libs $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES $GTK_PRIVATE_PACKAGES`"" $GTK_EXTRA_LIBS $MATH_LIB"
++GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDK_PACKAGES $GTK_PACKAGES $GTK_PRIVATE_PACKAGES`"" $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
+
+ if test x"$os_win32" = xyes; then
+ GTK_EXTRA_CFLAGS="$msnative_struct"
diff --git a/contrib/win32/patches/gtkrc.diff b/contrib/win32/patches/gtkrc.diff
deleted file mode 100644
index 5654fe1..0000000
--- a/contrib/win32/patches/gtkrc.diff
+++ /dev/null
@@ -1,8 +0,0 @@
---- gtkrc.0 2009-07-31 06:31:16 -0400
-+++ gtkrc 2011-04-02 03:05:34 -0500
-@@ -1,4 +1,4 @@
--gtk-icon-sizes = "gtk-menu=13,13:gtk-small-toolbar=16,16:gtk-large-toolbar=24,24:gtk-dnd=32,32"
-+gtk-icon-sizes = "gtk-menu=16,16:gtk-button=16,16:gtk-small-toolbar=16,16:gtk-large-toolbar=24,24:gtk-dnd=32,32"
- gtk-toolbar-icon-size = small-toolbar
-
- # disable images in buttons. i've only seen ugly delphi apps use this feature.
diff --git a/contrib/win32/patches/gwin32.c.diff b/contrib/win32/patches/gwin32.c.diff
new file mode 100644
index 0000000..0738768
--- /dev/null
+++ b/contrib/win32/patches/gwin32.c.diff
@@ -0,0 +1,20 @@
+--- gwin32.c.0 2012-04-01 15:34:07 -0400
++++ gwin32.c 2012-04-01 15:33:21 -0400
+@@ -396,6 +396,8 @@
+
+ #if !defined (_WIN64)
+
++#undef g_win32_get_package_installation_directory
++
+ /* DLL ABI binary compatibility version that uses system codepage file names */
+
+ gchar *
+@@ -473,6 +475,8 @@
+
+ #if !defined (_WIN64)
+
++#undef g_win32_get_package_installation_subdirectory
++
+ /* DLL ABI binary compatibility version that uses system codepage file names */
+
+ gchar *
diff --git a/contrib/win32/patches/gwin32.h.diff b/contrib/win32/patches/gwin32.h.diff
new file mode 100644
index 0000000..f917392
--- /dev/null
+++ b/contrib/win32/patches/gwin32.h.diff
@@ -0,0 +1,14 @@
+--- gwin32.h.0 2012-03-11 20:42:42 -0400
++++ gwin32.h 2012-04-01 15:13:03 -0400
+@@ -86,11 +86,9 @@
+ #ifndef G_DISABLE_DEPRECATED
+
+ #ifndef __GTK_DOC_IGNORE__
+-#ifdef _WIN64
+ #define g_win32_get_package_installation_directory g_win32_get_package_installation_directory_utf8
+ #define g_win32_get_package_installation_subdirectory g_win32_get_package_installation_subdirectory_utf8
+ #endif
+-#endif
+
+ gchar* g_win32_get_package_installation_directory (const gchar *package,
+ const gchar *dll_name);
diff --git a/contrib/win32/patches/libxml-testThreads.c.diff b/contrib/win32/patches/libxml-testThreads.c.diff
deleted file mode 100644
index c8177fe..0000000
--- a/contrib/win32/patches/libxml-testThreads.c.diff
+++ /dev/null
@@ -1,10 +0,0 @@
---- testThreads.c.0 2010-10-12 02:25:32 -0400
-+++ testThreads.c 2011-12-28 18:36:34 -0500
-@@ -107,7 +107,6 @@
-
- for (i = 0; i < num_threads; i++) {
- results[i] = NULL;
-- tid[i] = (pthread_t) -1;
- }
-
- for (i = 0; i < num_threads; i++) {
diff --git a/contrib/win32/patches/mms-Makefile.am.diff b/contrib/win32/patches/mms-Makefile.am.diff
new file mode 100644
index 0000000..50c5c97
--- /dev/null
+++ b/contrib/win32/patches/mms-Makefile.am.diff
@@ -0,0 +1,11 @@
+--- Makefile.am.0 2012-07-01 21:24:36 -0400
++++ Makefile.am 2012-07-01 21:24:56 -0400
+@@ -22,7 +22,7 @@
+ # noinst_HEADERS =
+
+ libmms_la_LDFLAGS = -version-info 0:2:0 -no-undefined -export-dynamic
+-libmms_la_LIBADD = $(GLIB_LIBS)
++libmms_la_LIBADD = $(MMS_LIBS) $(GLIB_LIBS)
+
+ libmmsincdir = $(includedir)/libmms
+