From 67c644e317b2d7057f2f403ce2d095299319a2f2 Mon Sep 17 00:00:00 2001
From: darkf <lw9k123@gmail.com>
Date: Thu, 8 Jan 2015 20:20:51 -0800
Subject: [PATCH] Fix building on MinGW

---
 CMakeLists.txt                 |   6 ++++++
 src/citra/citra.rc             | Bin 566 -> 282 bytes
 src/core/hle/service/soc_u.cpp |  13 +++++++++++++
 3 files changed, 19 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 20a5a011a3..d70c872b25 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -117,6 +117,12 @@ IF (APPLE)
     
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
     set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
+ELSEIF(MINGW)
+    # GCC does not support codecvt, so use iconv instead
+    set(PLATFORM_LIBRARIES winmm ws2_32 iconv)
+
+    # WSAPoll functionality doesn't exist before WinNT 6.x (Vista and up)
+    add_definitions(-D_WIN32_WINNT=0x0600)
 ELSEIF(WIN32)
     set(PLATFORM_LIBRARIES winmm ws2_32)
 ELSE()
diff --git a/src/citra/citra.rc b/src/citra/citra.rc
index c28e7dbe5a4810e5e0a90624ae020a9ede3a4562..0165e93da95f70e09ac1228719c85e79b6945384 100644
GIT binary patch
literal 282
zcmb`A%?biB42186zC+jtXdgmR7DSI;3KD9>K(}3*>@L2&^#?)l=)fGlnUL}RkFv)5
zhoO%pzu<$guwEgRg+!rW!;EPn7!yW1!-Z>0wE$(ADglmT;)u#61HXSkr2#n$G!_=6
stk7yq3FOvr5NFMHw>h5r)nO0c`Vl=3I_E+_5mE^uvQ~6$ud~LQJEPJ_Hvj+t

literal 566
zcmd6j!3x4a3`FNF_z$5UP(MOZ1ks}xL6%yvU{!2u@#oc-rA1HTQ39KtWF|Y==VPRQ
zjiCn7Tc1sHWjgDmzT&yRzq_VZg=!sSI>K+2s{%V?!g*7m-cU7NxCN%>+JW}yt{t~V
zY1B{PhN`mzd{-1G0uzhq#v=aoWszUPDWcvw-xb)M_*D1f8lQS3jLyC5mgF>UHq$~=
st+mDbSSu~zeT&~%?+FR-q}mXHH!GagoQ^ZR*6b1J`@Ux-(UJf63#?H}Gynhq

diff --git a/src/core/hle/service/soc_u.cpp b/src/core/hle/service/soc_u.cpp
index f502c6afe7..bb8ee86be6 100644
--- a/src/core/hle/service/soc_u.cpp
+++ b/src/core/hle/service/soc_u.cpp
@@ -7,6 +7,19 @@
 #if EMU_PLATFORM == PLATFORM_WINDOWS
 #include <winsock2.h>
 #include <ws2tcpip.h>
+
+// MinGW does not define several errno constants
+#ifndef _MSC_VER
+#define EBADMSG 104
+#define ENODATA 120
+#define ENOMSG  122
+#define ENOSR   124
+#define ENOSTR  125
+#define ETIME   137
+#define EIDRM   2001
+#define ENOLINK 2002
+#endif // _MSC_VER
+
 #else
 #include <sys/socket.h>
 #include <netinet/in.h>