Use MSYS2 on appveyor
diff --git a/appveyor.yml b/appveyor.yml
index fb6ccd1..7c01515 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,13 +1,23 @@
 environment:
+  global:
+    MSYS2_BASEVER: 20150512
   matrix:
+  - TARGET: x86_64-pc-windows-gnu
+    MSYS2_ARCH: x86_64
+    MSYS2_BITS: 64
+    MSYSTEM: MINGW64
+  - TARGET: i686-pc-windows-gnu
+    MSYS2_ARCH: i686
+    MSYS2_BITS: 32
+    MSYSTEM: MINGW32
   - TARGET: x86_64-pc-windows-msvc
   - TARGET: i686-pc-windows-msvc
-  - TARGET: i686-pc-windows-gnu
 install:
+  - ps: ci\msys2.ps1
   - ps: Start-FileDownload "https://static.rust-lang.org/dist/rust-nightly-${env:TARGET}.exe"
   - rust-nightly-%TARGET%.exe /VERYSILENT /NORESTART /DIR="C:\Program Files (x86)\Rust"
   - SET PATH=%PATH%;C:\Program Files (x86)\Rust\bin
-  - SET PATH=%PATH%;C:\MinGW\bin
+  - if defined MSYS2_BITS set PATH=%PATH%;%CD%\msys2\mingw%MSYS2_BITS%\bin
   - rustc -V
   - cargo -V
 
diff --git a/ci/msys2.ps1 b/ci/msys2.ps1
new file mode 100644
index 0000000..f57cc6b
--- /dev/null
+++ b/ci/msys2.ps1
@@ -0,0 +1,20 @@
+If (!${env:MSYS2_ARCH}) {
+  Exit 0
+}
+
+Start-FileDownload `
+  ("http://kent.dl.sourceforge.net/project/msys2/Base/" + `
+    $env:MSYS2_ARCH + "/msys2-base-" + $env:MSYS2_ARCH + "-" + `
+    $env:MSYS2_BASEVER + ".tar.xz") `
+  -FileName "msys2.tar.xz"
+
+7z x msys2.tar.xz
+7z x msys2.tar > $nul
+Move-Item ("msys" + $env:MSYS2_BITS) msys2
+.\msys2\usr\bin\bash.exe -lc ""
+.\msys2\usr\bin\bash.exe -lc `
+  ("for i in {1..3}; do " + `
+      "pacman --noconfirm -Suy mingw-w64-"+ $env:MSYS2_ARCH + "-gcc " + `
+        "&& break || sleep 15; " + `
+  "done")
+.\msys2\autorebase.bat