Просмотр исходного кода

Merge pull request #1035 from darkf/mingw-fix

Fix building under MinGW
bunnei 11 лет назад
Родитель
Сommit
21ba05e5f1
3 измененных файлов с 12 добавлено и 5 удалено
  1. 2 1
      CMakeLists.txt
  2. 9 3
      src/common/common_funcs.h
  3. 1 1
      src/common/file_util.h

+ 2 - 1
CMakeLists.txt

@@ -155,7 +155,8 @@ IF (APPLE)
     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)
+    # 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)
     add_definitions(-D_WIN32_WINNT=0x0600)

+ 9 - 3
src/common/common_funcs.h

@@ -45,14 +45,20 @@
 
 // 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
-#ifndef _rotl
-inline u32 _rotl(u32 x, int shift) {
+#ifdef _rotl
+#define rotl _rotl
+#else
+inline u32 rotl(u32 x, int shift) {
     shift &= 31;
     if (!shift) return x;
     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;
     if (!shift) return x;
     return (x >> shift) | (x << (32 - shift));

+ 1 - 1
src/common/file_util.h

@@ -244,7 +244,7 @@ private:
 template <typename T>
 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);
 #else
     fstream.open(filename.c_str(), openmode);