Fix building under MinGW

This commit is contained in:
darkf 2015-08-15 23:41:40 -07:00
parent 882040fde7
commit e053d30bf7
3 changed files with 12 additions and 5 deletions

View File

@ -155,7 +155,8 @@ IF (APPLE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
ELSEIF(MINGW) ELSEIF(MINGW)
# GCC does not support codecvt, so use iconv instead # GCC does not support codecvt, so use iconv instead
set(PLATFORM_LIBRARIES winmm ws2_32 iconv) # PSAPI is the Process Status API
set(PLATFORM_LIBRARIES winmm ws2_32 psapi iconv)
# WSAPoll functionality doesn't exist before WinNT 6.x (Vista and up) # WSAPoll functionality doesn't exist before WinNT 6.x (Vista and up)
add_definitions(-D_WIN32_WINNT=0x0600) add_definitions(-D_WIN32_WINNT=0x0600)

View File

@ -45,14 +45,20 @@
// GCC 4.8 defines all the rotate functions now // GCC 4.8 defines all the rotate functions now
// Small issue with GCC's lrotl/lrotr intrinsics is they are still 32bit while we require 64bit // Small issue with GCC's lrotl/lrotr intrinsics is they are still 32bit while we require 64bit
#ifndef _rotl #ifdef _rotl
inline u32 _rotl(u32 x, int shift) { #define rotl _rotl
#else
inline u32 rotl(u32 x, int shift) {
shift &= 31; shift &= 31;
if (!shift) return x; if (!shift) return x;
return (x << shift) | (x >> (32 - shift)); return (x << shift) | (x >> (32 - shift));
} }
#endif
inline u32 _rotr(u32 x, int shift) { #ifdef _rotr
#define rotr _rotr
#else
inline u32 rotr(u32 x, int shift) {
shift &= 31; shift &= 31;
if (!shift) return x; if (!shift) return x;
return (x >> shift) | (x << (32 - shift)); return (x >> shift) | (x << (32 - shift));

View File

@ -244,7 +244,7 @@ private:
template <typename T> template <typename T>
void OpenFStream(T& fstream, const std::string& filename, std::ios_base::openmode openmode) void OpenFStream(T& fstream, const std::string& filename, std::ios_base::openmode openmode)
{ {
#ifdef _WIN32 #ifdef _MSC_VER
fstream.open(Common::UTF8ToTStr(filename).c_str(), openmode); fstream.open(Common::UTF8ToTStr(filename).c_str(), openmode);
#else #else
fstream.open(filename.c_str(), openmode); fstream.open(filename.c_str(), openmode);