diff options
-rw-r--r-- | src/citra/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/common/common.h | 4 | ||||
-rw-r--r-- | src/common/common_funcs.h | 8 | ||||
-rw-r--r-- | src/common/log.h | 8 | ||||
-rw-r--r-- | src/common/msg_handler.h | 2 | ||||
-rw-r--r-- | src/common/platform.h | 4 | ||||
-rw-r--r-- | src/common/string_util.cpp | 6 | ||||
-rw-r--r-- | src/common/thread.cpp | 23 | ||||
-rw-r--r-- | src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 4 |
9 files changed, 42 insertions, 22 deletions
diff --git a/src/citra/CMakeLists.txt b/src/citra/CMakeLists.txt index f2add394f..c4cbf9fea 100644 --- a/src/citra/CMakeLists.txt +++ b/src/citra/CMakeLists.txt @@ -19,12 +19,15 @@ endif() add_executable(citra ${SRCS} ${HEADERS}) target_link_libraries(citra core common video_core) -target_link_libraries(citra ${OPENGL_gl_LIBRARY} ${GLFW_LIBRARIES} inih) +target_link_libraries(citra ${GLFW_LIBRARIES} ${OPENGL_gl_LIBRARY} inih) if (APPLE) target_link_libraries(citra iconv pthread ${COREFOUNDATION_LIBRARY}) elseif (WIN32) target_link_libraries(citra winmm) + if (MINGW) + target_link_libraries(citra iconv) + endif() else() # Unix target_link_libraries(citra pthread rt) target_link_libraries(citra ${X11_X11_LIB} ${X11_Xi_LIB} ${X11_Xcursor_LIB} ${X11_Xrandr_LIB} ${X11_xv86vmode_LIB}) diff --git a/src/common/common.h b/src/common/common.h index 9f3016d34..0d7934622 100644 --- a/src/common/common.h +++ b/src/common/common.h @@ -50,11 +50,13 @@ private: #elif defined _WIN32 // Check MSC ver - #if !defined _MSC_VER || _MSC_VER <= 1000 + #if defined _MSC_VER && _MSC_VER <= 1000 #error needs at least version 1000 of MSC #endif + #ifndef NOMINMAX #define NOMINMAX + #endif // Memory leak checks #define CHECK_HEAP_INTEGRITY() diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h index d84ec4c42..ddf3958cc 100644 --- a/src/common/common_funcs.h +++ b/src/common/common_funcs.h @@ -28,7 +28,7 @@ template<> struct CompileTimeAssert<true> {}; #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) -#ifndef _WIN32 +#ifndef _MSC_VER #include <errno.h> #ifdef __linux__ @@ -72,7 +72,7 @@ inline u64 _rotr64(u64 x, unsigned int shift){ return (x >> n) | (x << (64 - n)); } -#else // WIN32 +#else // _MSC_VER // Function Cross-Compatibility #define strcasecmp _stricmp #define strncasecmp _strnicmp @@ -135,7 +135,7 @@ extern "C" { } #define Crash() {DebugBreak();} #endif // M_IX86 -#endif // WIN32 ndef +#endif // _MSC_VER ndef // Dolphin's min and max functions #undef min @@ -163,7 +163,7 @@ inline u32 swap24(const u8* _data) {return (_data[0] << 16) | (_data[1] << 8) | #undef swap64 #endif -#ifdef _WIN32 +#ifdef _MSC_VER inline u16 swap16(u16 _data) {return _byteswap_ushort(_data);} inline u32 swap32(u32 _data) {return _byteswap_ulong (_data);} inline u64 swap64(u64 _data) {return _byteswap_uint64(_data);} diff --git a/src/common/log.h b/src/common/log.h index 14ad98c08..4c96ef0a6 100644 --- a/src/common/log.h +++ b/src/common/log.h @@ -104,7 +104,7 @@ void GenericLog(LOGTYPES_LEVELS level, LOGTYPES_TYPE type, const char*file, int #endif // loglevel #endif // logging -#ifdef _WIN32 +#ifdef MSVC_VER #ifndef __func__ #define __func__ __FUNCTION__ #endif @@ -149,17 +149,17 @@ void GenericLog(LOGTYPES_LEVELS level, LOGTYPES_TYPE type, const char*file, int #define _assert_(_a_) _dbg_assert_(MASTER_LOG, _a_) #ifndef GEKKO -#ifdef _WIN32 +#ifdef MSVC_VER #define _assert_msg_(_t_, _a_, _fmt_, ...) \ if (!(_a_)) {\ if (!PanicYesNo(_fmt_, __VA_ARGS__)) {Crash();} \ } -#else // not win32 +#else // not msvc #define _assert_msg_(_t_, _a_, _fmt_, ...) \ if (!(_a_)) {\ if (!PanicYesNo(_fmt_, ##__VA_ARGS__)) {Crash();} \ } -#endif // WIN32 +#endif // MSVC_VER #else // GEKKO #define _assert_msg_(_t_, _a_, _fmt_, ...) #endif diff --git a/src/common/msg_handler.h b/src/common/msg_handler.h index 9bfdf950e..a1db89aa3 100644 --- a/src/common/msg_handler.h +++ b/src/common/msg_handler.h @@ -30,7 +30,7 @@ extern bool MsgAlert(bool yes_no, int Style, const char* format, ...) void SetEnableAlert(bool enable); #ifndef GEKKO -#ifdef _WIN32 +#ifdef MSVC_VER #define SuccessAlert(format, ...) MsgAlert(false, INFORMATION, format, __VA_ARGS__) #define PanicAlert(format, ...) MsgAlert(false, WARNING, format, __VA_ARGS__) #define PanicYesNo(format, ...) MsgAlert(true, WARNING, format, __VA_ARGS__) diff --git a/src/common/platform.h b/src/common/platform.h index d9f095433..7d123caa0 100644 --- a/src/common/platform.h +++ b/src/common/platform.h @@ -71,14 +71,18 @@ #include <time.h> +#ifndef NOMINMAX #define NOMINMAX +#endif #define EMU_FASTCALL __fastcall +#ifdef _MSVC_VER inline struct tm* localtime_r(const time_t *clock, struct tm *result) { if (localtime_s(result, clock) == 0) return result; return NULL; } +#endif #else diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index dcec9275f..1ca2dfb39 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -7,7 +7,7 @@ #include "common/common.h" #include "common/string_util.h" -#ifdef _WIN32 +#ifdef MSVC_VER #include <Windows.h> #include <codecvt> #else @@ -45,7 +45,7 @@ bool CharArrayFromFormatV(char* out, int outsize, const char* format, va_list ar { int writtenCount; -#ifdef _WIN32 +#ifdef MSVC_VER // You would think *printf are simple, right? Iterate on each character, // if it's a format specifier handle it properly, etc. // @@ -410,7 +410,7 @@ std::string UriEncode(const std::string & sSrc) return sResult; } -#ifdef _WIN32 +#ifdef MSVC_VER std::string UTF16ToUTF8(const std::u16string& input) { diff --git a/src/common/thread.cpp b/src/common/thread.cpp index dc153ba71..6eeda0828 100644 --- a/src/common/thread.cpp +++ b/src/common/thread.cpp @@ -17,7 +17,7 @@ namespace Common int CurrentThreadId() { -#ifdef _WIN32 +#ifdef MSVC_VER return GetCurrentThreadId(); #elif defined __APPLE__ return mach_thread_self(); @@ -27,6 +27,14 @@ int CurrentThreadId() } #ifdef _WIN32 +// Supporting functions +void SleepCurrentThread(int ms) +{ + Sleep(ms); +} +#endif + +#ifdef MSVC_VER void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) { @@ -38,12 +46,6 @@ void SetCurrentThreadAffinity(u32 mask) SetThreadAffinityMask(GetCurrentThread(), mask); } -// Supporting functions -void SleepCurrentThread(int ms) -{ - Sleep(ms); -} - void SwitchCurrentThread() { SwitchToThread(); @@ -82,7 +84,7 @@ void SetCurrentThreadName(const char* szThreadName) {} } -#else // !WIN32, so must be POSIX threads +#else // !MSVC_VER, so must be POSIX threads void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) { @@ -106,6 +108,7 @@ void SetCurrentThreadAffinity(u32 mask) SetThreadAffinity(pthread_self(), mask); } +#ifndef _WIN32 void SleepCurrentThread(int ms) { usleep(1000 * ms); @@ -115,7 +118,10 @@ void SwitchCurrentThread() { usleep(1000 * 1); } +#endif +// MinGW with the POSIX threading model does not support pthread_setname_np +#if !defined(_WIN32) || defined(MSVC_VER) void SetCurrentThreadName(const char* szThreadName) { #ifdef __APPLE__ @@ -126,6 +132,7 @@ void SetCurrentThreadName(const char* szThreadName) pthread_setname_np(pthread_self(), szThreadName); #endif } +#endif #endif diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index f899e2e8a..0a5c7ee6e 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp @@ -34,6 +34,10 @@ using namespace std; +#ifdef _WIN32 +#undef __WIN32__ +#endif + #include "core/arm/skyeye_common/armdefs.h" #include "core/arm/skyeye_common/armmmu.h" #include "arm_dyncom_thumb.h" |