diff --git a/Common/Atomic_Win32.h b/Common/Atomic_Win32.h index e15101733..7040deb80 100644 --- a/Common/Atomic_Win32.h +++ b/Common/Atomic_Win32.h @@ -88,6 +88,10 @@ inline void AtomicStoreRelease(volatile T& dest, U value) dest = (T)value; // 32-bit writes are always atomic } +#ifdef __MINGW32__ +void *_InterlockedExchangePointer_acq(void *volatile *, void volatile *); +#endif + template inline T* AtomicExchangeAcquire(T* volatile& loc, U newval) { diff --git a/Common/Common.h b/Common/Common.h index f93a71c46..0125068dc 100644 --- a/Common/Common.h +++ b/Common/Common.h @@ -64,7 +64,9 @@ private: // Check MSC ver #if !defined _MSC_VER || _MSC_VER <= 1000 +#ifndef __MINGW32__ #error needs at least version 1000 of MSC +#endif #endif // Memory leak checks diff --git a/Common/ConsoleListener.cpp b/Common/ConsoleListener.cpp index 7f9e0a7f7..b969b6808 100644 --- a/Common/ConsoleListener.cpp +++ b/Common/ConsoleListener.cpp @@ -77,7 +77,7 @@ ConsoleListener::~ConsoleListener() Close(); } -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) // Handle console event bool WINAPI ConsoleHandler(DWORD msgType) { diff --git a/Common/FileUtil.h b/Common/FileUtil.h index f0ce75001..fa132b931 100644 --- a/Common/FileUtil.h +++ b/Common/FileUtil.h @@ -26,12 +26,14 @@ #include "Common.h" #ifdef _WIN32 +#ifndef __MINGW32__ inline struct tm* localtime_r(const time_t *clock, struct tm *result) { if (localtime_s(result, clock) == 0) return result; return NULL; } #endif +#endif namespace File { diff --git a/Common/MsgHandler.h b/Common/MsgHandler.h index 97e865bed..75e8137e1 100644 --- a/Common/MsgHandler.h +++ b/Common/MsgHandler.h @@ -33,7 +33,7 @@ extern bool MsgAlert(bool yes_no, int Style, const char* format, ...) void SetEnableAlert(bool enable); #ifndef GEKKO -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #define PanicAlert(format, ...) MsgAlert(false, WARNING, format, __VA_ARGS__) #define PanicYesNo(format, ...) MsgAlert(true, WARNING, format, __VA_ARGS__) #else