From 3dd11fe157d305cfa785f4e849a7733933f0d964 Mon Sep 17 00:00:00 2001 From: kaetemi Date: Tue, 17 Jun 2014 21:48:25 +0200 Subject: [PATCH] Fix compilation of NLMISC under MinGW --- code/CMakeModules/nel.cmake | 4 +- code/nel/include/nel/misc/di_event_emitter.h | 6 ++- .../include/nel/misc/inter_window_msg_queue.h | 2 +- code/nel/include/nel/misc/types_nl.h | 16 +++++-- code/nel/include/nel/misc/win_displayer.h | 4 +- code/nel/src/misc/bitmap_jpeg.cpp | 3 ++ code/nel/src/misc/co_task.cpp | 4 +- code/nel/src/misc/common.cpp | 8 +++- code/nel/src/misc/debug.cpp | 28 ++++++------ code/nel/src/misc/di_game_device.cpp | 2 +- code/nel/src/misc/di_keyboard_device.cpp | 6 +-- code/nel/src/misc/di_mouse_device.cpp | 8 +++- code/nel/src/misc/displayer.cpp | 6 ++- code/nel/src/misc/dynloadlib.cpp | 2 +- code/nel/src/misc/log.cpp | 4 +- code/nel/src/misc/mem_displayer.cpp | 43 +++++++++++-------- code/nel/src/misc/mutex.cpp | 6 ++- code/nel/src/misc/path.cpp | 4 +- code/nel/src/misc/report.cpp | 18 ++++---- code/nel/src/misc/shared_memory.cpp | 4 +- code/nel/src/misc/stdmisc.h | 8 ++-- code/nel/src/misc/system_info.cpp | 7 ++- code/nel/src/misc/system_utils.cpp | 9 ++-- code/nel/src/misc/tds.cpp | 4 +- code/nel/src/misc/time_nl.cpp | 4 +- code/nel/src/misc/win_displayer.cpp | 23 +++++----- code/nel/src/misc/win_event_emitter.cpp | 2 + code/nel/src/misc/win_thread.cpp | 2 + code/nel/src/sound/driver/sound_driver.cpp | 4 +- 29 files changed, 157 insertions(+), 84 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index b194b5ff9..7cf518ddf 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -875,9 +875,9 @@ MACRO(NL_SETUP_BUILD) ENDIF(APPLE) # Fix "relocation R_X86_64_32 against.." error on x64 platforms - IF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS) + IF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS AND NOT MINGW) ADD_PLATFORM_FLAGS("-fPIC") - ENDIF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS) + ENDIF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS AND NOT MINGW) SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -ftemplate-depth-48") diff --git a/code/nel/include/nel/misc/di_event_emitter.h b/code/nel/include/nel/misc/di_event_emitter.h index a2592e565..41c7bbf47 100644 --- a/code/nel/include/nel/misc/di_event_emitter.h +++ b/code/nel/include/nel/misc/di_event_emitter.h @@ -34,7 +34,9 @@ #include "events.h" #include "rect.h" #include "game_device.h" -#define NOMINMAX +#ifndef NL_COMP_MINGW +# define NOMINMAX +#endif #include #include @@ -101,7 +103,7 @@ public: * \param we A windows eventsemitter. Can be NULL. Needed if you want to mix WIN32 events and Direct Input events * (for example, a Direct Input Mouse and a Win32 Keyboard) */ - static CDIEventEmitter *create(HINSTANCE hinst, HWND hwnd, CWinEventEmitter *we); + static CDIEventEmitter *create(HINSTANCE hinst, HWND hwnd, CWinEventEmitter *we) throw(EDirectInput); ~CDIEventEmitter(); public: diff --git a/code/nel/include/nel/misc/inter_window_msg_queue.h b/code/nel/include/nel/misc/inter_window_msg_queue.h index f65767bce..02867f8b4 100644 --- a/code/nel/include/nel/misc/inter_window_msg_queue.h +++ b/code/nel/include/nel/misc/inter_window_msg_queue.h @@ -220,7 +220,7 @@ private: static TOldWinProcMap _OldWinProcMap; - bool initInternal(HINSTANCE hInstance, HWND ownerWindow, uint32 localId, uint32 foreignId = NULL); + bool initInternal(HINSTANCE hInstance, HWND ownerWindow, uint32 localId, uint32 foreignId = 0); private: static LRESULT CALLBACK listenerProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); diff --git a/code/nel/include/nel/misc/types_nl.h b/code/nel/include/nel/misc/types_nl.h index 5c3b80475..388505bd9 100644 --- a/code/nel/include/nel/misc/types_nl.h +++ b/code/nel/include/nel/misc/types_nl.h @@ -86,6 +86,10 @@ # define NL_COMP_VC_VERSION 60 # define NL_COMP_NEED_PARAM_ON_METHOD # endif +# elif defined(__MINGW32__) +# define NL_COMP_MINGW +# define NL_COMP_GCC +# define NL_NO_ASM # endif # if defined(_HAS_TR1) && (_HAS_TR1 + 0) // VC9 TR1 feature pack or later # define NL_ISO_STDTR1_AVAILABLE @@ -93,9 +97,13 @@ # define NL_ISO_STDTR1_NAMESPACE std::tr1 # endif # ifdef _DEBUG -# define NL_DEBUG +# ifndef NL_DEBUG +# define NL_DEBUG +# endif # elif defined (NDEBUG) -# define NL_RELEASE +# ifndef NL_RELEASE +# define NL_RELEASE +# endif # else # error "Don't know the compilation mode" # endif @@ -109,7 +117,9 @@ # define _WIN32_WINNT 0x0600 // force VISTA minimal version in 64 bits # endif // define NOMINMAX to be sure that windows includes will not define min max macros, but instead, use the stl template -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif #else # ifdef __APPLE__ # define NL_OS_MAC diff --git a/code/nel/include/nel/misc/win_displayer.h b/code/nel/include/nel/misc/win_displayer.h index 0bd16fa40..934a6e990 100644 --- a/code/nel/include/nel/misc/win_displayer.h +++ b/code/nel/include/nel/misc/win_displayer.h @@ -22,7 +22,9 @@ #ifdef NL_OS_WINDOWS #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -#define NOMINMAX +#ifndef NL_COMP_MINGW +# define NOMINMAX +#endif #include #include "displayer.h" diff --git a/code/nel/src/misc/bitmap_jpeg.cpp b/code/nel/src/misc/bitmap_jpeg.cpp index 799d659d6..a43c707e7 100644 --- a/code/nel/src/misc/bitmap_jpeg.cpp +++ b/code/nel/src/misc/bitmap_jpeg.cpp @@ -26,6 +26,9 @@ #include extern "C" { + #ifdef NL_COMP_MINGW + # define HAVE_BOOLEAN + #endif #include } #endif diff --git a/code/nel/src/misc/co_task.cpp b/code/nel/src/misc/co_task.cpp index 91b0132a9..d238b4853 100644 --- a/code/nel/src/misc/co_task.cpp +++ b/code/nel/src/misc/co_task.cpp @@ -53,7 +53,9 @@ # define _WIN32_WINNT 0x0400 # endif -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include #elif defined (NL_OS_UNIX) # define NL_WIN_CALLBACK diff --git a/code/nel/src/misc/common.cpp b/code/nel/src/misc/common.cpp index 36e167260..2303944e3 100644 --- a/code/nel/src/misc/common.cpp +++ b/code/nel/src/misc/common.cpp @@ -20,7 +20,9 @@ #include "nel/misc/common.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include # include # include @@ -37,6 +39,7 @@ using namespace std; +#ifndef NL_COMP_MINGW #ifdef NL_OS_WINDOWS # pragma message( " " ) @@ -69,6 +72,7 @@ extern "C" long _ftol2( double dblSource ) { return _ftol( dblSource ); } #endif // NL_OS_WINDOWS +#endif // !NL_COMP_MINGW #ifdef DEBUG_NEW @@ -1040,7 +1044,7 @@ bool openDoc (const char *document) HINSTANCE result = ShellExecuteA(NULL, "open", document, NULL,NULL, SW_SHOWDEFAULT); // If it failed, get the .htm regkey and lookup the program - if ((UINT)result <= HINSTANCE_ERROR) + if ((uintptr_t)result <= HINSTANCE_ERROR) { if (GetRegKey(HKEY_CLASSES_ROOT, ext.c_str(), key) == ERROR_SUCCESS) { diff --git a/code/nel/src/misc/debug.cpp b/code/nel/src/misc/debug.cpp index 28f40f641..c7667acc2 100644 --- a/code/nel/src/misc/debug.cpp +++ b/code/nel/src/misc/debug.cpp @@ -34,8 +34,10 @@ #ifdef NL_OS_WINDOWS # define _WIN32_WINDOWS 0x0410 +# ifndef NL_COMP_MINGW # define WINVER 0x0400 -# define NOMINMAX +# define NOMINMAX +# endif # include # include # include @@ -445,7 +447,7 @@ public: EDebug() { _Reason = "Nothing about EDebug"; } - ~EDebug () { } + virtual ~EDebug() throw() {} EDebug(EXCEPTION_POINTERS * pexp) : m_pexp(pexp) { nlassert(pexp != 0); createWhat(); } EDebug(const EDebug& se) : m_pexp(se.m_pexp) { createWhat(); } @@ -755,7 +757,7 @@ public: HANDLE getProcessHandle() { - return CSystemInfo::isNT()?GetCurrentProcess():(HANDLE)GetCurrentProcessId(); + return CSystemInfo::isNT()?GetCurrentProcess():(HANDLE)(uintptr_t)GetCurrentProcessId(); } // return true if found @@ -797,7 +799,7 @@ public: while (findAndErase(rawType, "classvector,class allocator >", "string")) ; } - string getFuncInfo (DWORD funcAddr, DWORD stackAddr) + string getFuncInfo (uintptr_t funcAddr, uintptr_t stackAddr) { string str ("NoSymbol"); @@ -853,7 +855,7 @@ public: if (stop==0 && (parse[i] == ',' || parse[i] == ')')) { - ULONG *addr = (ULONG*)(stackAddr) + 2 + pos2++; + uintptr_t *addr = (uintptr_t*)(stackAddr) + 2 + pos2++; string displayType = type; cleanType (type, displayType); @@ -882,7 +884,7 @@ public: } else if (type == "char*") { - if (!IsBadReadPtr(addr,sizeof(char*)) && *addr != NULL) + if (!IsBadReadPtr(addr,sizeof(char*)) && *addr != 0) { if (!IsBadStringPtrA((char*)*addr,32)) { @@ -920,7 +922,7 @@ public: { if (!IsBadReadPtr(addr,sizeof(string*))) { - if (*addr != NULL) + if (*addr != 0) { if (!IsBadReadPtr((void*)*addr,sizeof(string))) sprintf (tmp, "\"%s\"", ((string*)*addr)->c_str()); @@ -929,9 +931,9 @@ public: } else { - if (!IsBadReadPtr(addr,sizeof(ULONG*))) + if (!IsBadReadPtr(addr,sizeof(uintptr_t*))) { - if(*addr == NULL) + if(*addr == 0) sprintf (tmp, ""); else sprintf (tmp, "0x%p", *addr); @@ -956,7 +958,7 @@ public: if (disp != 0) { str += " + "; - str += toString ((uint32)disp); + str += toString ((uintptr_t)disp); str += " bytes"; } } @@ -1166,7 +1168,8 @@ void createDebug (const char *logPath, bool logInFile, bool eraseLastLog) initAcquireTimeMap(); #endif -#ifdef NL_OS_WINDOWS +#ifndef NL_COMP_MINGW +# ifdef NL_OS_WINDOWS // if (!IsDebuggerPresent ()) { // Use an environment variable to share the value among the EXE and its child DLLs @@ -1180,7 +1183,8 @@ void createDebug (const char *logPath, bool logInFile, bool eraseLastLog) SetEnvironmentVariable( SE_TRANSLATOR_IN_MAIN_MODULE, _T("1") ); } } -#endif // NL_OS_WINDOWS +# endif // NL_OS_WINDOWS +#endif //!NL_COMP_MINGW INelContext::getInstance().setErrorLog(new CLog (CLog::LOG_ERROR)); INelContext::getInstance().setWarningLog(new CLog (CLog::LOG_WARNING)); diff --git a/code/nel/src/misc/di_game_device.cpp b/code/nel/src/misc/di_game_device.cpp index 6574b5cde..5adfb4b9b 100644 --- a/code/nel/src/misc/di_game_device.cpp +++ b/code/nel/src/misc/di_game_device.cpp @@ -217,7 +217,7 @@ static void BuildCtrlName(LPCDIDEVICEOBJECTINSTANCE lpddoi, //============================================================================ // A callback to enumerate the controls of a device -static BOOL CALLBACK DIEnumDeviceObjectsCallback +BOOL CALLBACK DIEnumDeviceObjectsCallback ( LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef diff --git a/code/nel/src/misc/di_keyboard_device.cpp b/code/nel/src/misc/di_keyboard_device.cpp index 0802019a4..8b5d9c6e1 100644 --- a/code/nel/src/misc/di_keyboard_device.cpp +++ b/code/nel/src/misc/di_keyboard_device.cpp @@ -113,8 +113,8 @@ static const CKeyConv DIToNel[] = {DIK_CONVERT, KeyCONVERT, "CONVERT", false}, {DIK_NOCONVERT, KeyNONCONVERT, "NOCONVERT", true}, // - {DIK_KANA, KeyKANA, false}, - {DIK_KANJI, KeyKANJI, false}, + {DIK_KANA, KeyKANA, "KANA", false}, + {DIK_KANJI, KeyKANJI, "KANJI", false}, }; @@ -164,7 +164,7 @@ CDIKeyboard::CDIKeyboard(CWinEventEmitter *we, HWND hwnd) _RepeatPeriod = (uint) (1000.f / (keybSpeed * (27.5f / 31.f) + 2.5f)); } // get keyboard layout - _KBLayout = ::GetKeyboardLayout(NULL); + _KBLayout = ::GetKeyboardLayout(0); _RepetitionDisabled.resize(NumKeys); _RepetitionDisabled.clearAll(); diff --git a/code/nel/src/misc/di_mouse_device.cpp b/code/nel/src/misc/di_mouse_device.cpp index 2dfcf95f0..273725c5c 100644 --- a/code/nel/src/misc/di_mouse_device.cpp +++ b/code/nel/src/misc/di_mouse_device.cpp @@ -27,6 +27,12 @@ #define new DEBUG_NEW #endif +#ifdef NL_COMP_MINGW +# undef FIELD_OFFSET +# define FIELD_OFFSET(t,f) offsetof(t,f) +#endif + + namespace NLMISC { @@ -78,7 +84,7 @@ void CDIMouse::setMouseMode(TAxis axis, TAxisMode axisMode) //====================================================== CDIMouse::TAxisMode CDIMouse::getMouseMode(TAxis axis) const { - nlassert(axis < NumMouseAxis); + nlassert((int)axis < (int)NumMouseAxis); return _MouseAxisMode[axis]; } diff --git a/code/nel/src/misc/displayer.cpp b/code/nel/src/misc/displayer.cpp index a1b1c7de8..d48c44d02 100644 --- a/code/nel/src/misc/displayer.cpp +++ b/code/nel/src/misc/displayer.cpp @@ -39,8 +39,10 @@ // these defines is for IsDebuggerPresent(). it'll not compile on windows 95 // just comment this and the IsDebuggerPresent to compile on windows 95 # define _WIN32_WINDOWS 0x0410 -# define WINVER 0x0400 -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define WINVER 0x0400 +# define NOMINMAX +# endif # include #else # define IsDebuggerPresent() false diff --git a/code/nel/src/misc/dynloadlib.cpp b/code/nel/src/misc/dynloadlib.cpp index 6dcb7e4cf..25f28286e 100644 --- a/code/nel/src/misc/dynloadlib.cpp +++ b/code/nel/src/misc/dynloadlib.cpp @@ -57,7 +57,7 @@ void *nlGetSymbolAddress(NL_LIB_HANDLE libHandle, const std::string &procName) { void *res = 0; #ifdef NL_OS_WINDOWS - res = GetProcAddress(libHandle, procName.c_str()); + res = (void *)GetProcAddress(libHandle, procName.c_str()); #elif defined(NL_OS_UNIX) res = dlsym(libHandle, procName.c_str()); #else diff --git a/code/nel/src/misc/log.cpp b/code/nel/src/misc/log.cpp index 85ec59e04..478a5e338 100644 --- a/code/nel/src/misc/log.cpp +++ b/code/nel/src/misc/log.cpp @@ -19,7 +19,9 @@ #include "nel/misc/log.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include # include #else diff --git a/code/nel/src/misc/mem_displayer.cpp b/code/nel/src/misc/mem_displayer.cpp index 52d399350..6c6d51d43 100644 --- a/code/nel/src/misc/mem_displayer.cpp +++ b/code/nel/src/misc/mem_displayer.cpp @@ -24,7 +24,9 @@ #include "nel/misc/debug.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include # include # pragma comment(lib, "imagehlp.lib") @@ -148,7 +150,7 @@ static string getSourceInfo (DWORD_TYPE addr) return str; } -static DWORD_TYPE __stdcall GetModuleBase(HANDLE hProcess, DWORD_TYPE dwReturnAddress) +static uintptr_t __stdcall GetModuleBase(HANDLE hProcess, uintptr_t dwReturnAddress) { IMAGEHLP_MODULE moduleInfo; @@ -169,9 +171,15 @@ static DWORD_TYPE __stdcall GetModuleBase(HANDLE hProcess, DWORD_TYPE dwReturnAd if (cch && (lstrcmp(szFile, "DBFN")== 0)) { - if (!SymLoadModule(hProcess, - NULL, "MN", - NULL, (DWORD) memoryBasicInfo.AllocationBase, 0)) + char mn[] = { 'M', 'N', 0x00 }; +#ifdef NL_OS_WIN64 + if (!SymLoadModule64( +#else + if (!SymLoadModule( +#endif + hProcess, + NULL, mn, + NULL, (uintptr_t)memoryBasicInfo.AllocationBase, 0)) { // DWORD dwError = GetLastError(); // nlinfo("Error: %d", dwError); @@ -179,17 +187,23 @@ static DWORD_TYPE __stdcall GetModuleBase(HANDLE hProcess, DWORD_TYPE dwReturnAd } else { - if (!SymLoadModule(hProcess, - NULL, ((cch) ? szFile : NULL), - NULL, (DWORD) memoryBasicInfo.AllocationBase, 0)) +#ifdef NL_OS_WIN64 + if (!SymLoadModule64( +#else + if (!SymLoadModule( +#endif + hProcess, + NULL, ((cch) ? szFile : NULL), + NULL, (uintptr_t)memoryBasicInfo.AllocationBase, 0)) { // DWORD dwError = GetLastError(); // nlinfo("Error: %d", dwError); } + } - return (DWORD) memoryBasicInfo.AllocationBase; + return (uintptr_t)memoryBasicInfo.AllocationBase; } // else // nlinfo("Error is %d", GetLastError()); @@ -250,19 +264,13 @@ static void displayCallStack (CLog *log) return; } -#ifdef NL_OS_WIN64 - WOW64_CONTEXT context; -#else + // FIXME: Implement this for MinGW +#ifndef NL_COMP_MINGW CONTEXT context; -#endif ::ZeroMemory (&context, sizeof(context)); context.ContextFlags = CONTEXT_FULL; -#ifdef NL_OS_WIN64 - if (Wow64GetThreadContext (GetCurrentThread(), &context) == FALSE) -#else if (GetThreadContext (GetCurrentThread(), &context) == FALSE) -#endif { nlwarning ("DISP: GetThreadContext(%p) failed", GetCurrentThread()); return; @@ -309,6 +317,7 @@ static void displayCallStack (CLog *log) log->displayNL (" %s : %s", srcInfo.c_str(), symInfo.c_str()); } +#endif } #else // NL_OS_WINDOWS diff --git a/code/nel/src/misc/mutex.cpp b/code/nel/src/misc/mutex.cpp index f8a75d2ea..3c86e2b29 100644 --- a/code/nel/src/misc/mutex.cpp +++ b/code/nel/src/misc/mutex.cpp @@ -44,8 +44,10 @@ using namespace std; // these defines are for IsDebuggerPresent(). It'll not compile on windows 95 // just comment this and the IsDebuggerPresent to compile on windows 95 #define _WIN32_WINDOWS 0x0410 -#define WINVER 0x0400 -#define NOMINMAX +#ifndef NL_COMP_MINGW +# define WINVER 0x0400 +# define NOMINMAX +#endif #include #ifdef DEBUG_NEW diff --git a/code/nel/src/misc/path.cpp b/code/nel/src/misc/path.cpp index f92b0bda7..743f8f514 100644 --- a/code/nel/src/misc/path.cpp +++ b/code/nel/src/misc/path.cpp @@ -25,7 +25,9 @@ #include "nel/misc/xml_pack.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include # include # include diff --git a/code/nel/src/misc/report.cpp b/code/nel/src/misc/report.cpp index 64871e6a3..f440b8d46 100644 --- a/code/nel/src/misc/report.cpp +++ b/code/nel/src/misc/report.cpp @@ -23,7 +23,9 @@ #include "nel/misc/path.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include # include # include @@ -232,7 +234,7 @@ TReportResult report (const std::string &title, const std::string &header, const // create the edit control HWND edit = CreateWindowW (L"EDIT", NULL, WS_BORDER | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_READONLY | ES_LEFT | ES_MULTILINE, 7, 70, 429, 212, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL); - SendMessage (edit, WM_SETFONT, (LONG) font, TRUE); + SendMessage (edit, WM_SETFONT, (WPARAM) font, TRUE); // set the edit text limit to lot of :) SendMessage (edit, EM_LIMITTEXT, ~0U, 0); @@ -246,7 +248,7 @@ TReportResult report (const std::string &title, const std::string &header, const { // create the combo box control checkIgnore = CreateWindowW (L"BUTTON", L"Don't display this report again", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_CHECKBOX, 7, 290, 429, 18, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL); - SendMessage (checkIgnore, WM_SETFONT, (LONG) font, TRUE); + SendMessage (checkIgnore, WM_SETFONT, (WPARAM) font, TRUE); if(ignoreNextTime) { @@ -256,28 +258,28 @@ TReportResult report (const std::string &title, const std::string &header, const // create the debug button control debug = CreateWindowW (L"BUTTON", L"Debug", WS_CHILD | WS_VISIBLE, 7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL); - SendMessage (debug, WM_SETFONT, (LONG) font, TRUE); + SendMessage (debug, WM_SETFONT, (WPARAM) font, TRUE); if (debugButton == 0) EnableWindow(debug, FALSE); // create the ignore button control ignore = CreateWindowW (L"BUTTON", L"Ignore", WS_CHILD | WS_VISIBLE, 75+7+7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL); - SendMessage (ignore, WM_SETFONT, (LONG) font, TRUE); + SendMessage (ignore, WM_SETFONT, (WPARAM) font, TRUE); if (ignoreButton == 0) EnableWindow(ignore, FALSE); // create the quit button control quit = CreateWindowW (L"BUTTON", L"Quit", WS_CHILD | WS_VISIBLE, 75+75+7+7+7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL); - SendMessage (quit, WM_SETFONT, (LONG) font, TRUE); + SendMessage (quit, WM_SETFONT, (WPARAM) font, TRUE); if (quitButton == 0) EnableWindow(quit, FALSE); // create the debug button control sendReport = CreateWindowW (L"BUTTON", L"Don't send the report", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 7, 315+32, 429, 18, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL); - SendMessage (sendReport, WM_SETFONT, (LONG) font, TRUE); + SendMessage (sendReport, WM_SETFONT, (WPARAM) font, TRUE); string formatedHeader; if (header.empty()) @@ -302,7 +304,7 @@ TReportResult report (const std::string &title, const std::string &header, const // create the label control HWND label = CreateWindowW (L"STATIC", (LPCWSTR)uc.c_str(), WS_CHILD | WS_VISIBLE /*| SS_WHITERECT*/, 7, 7, 429, 51, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL); - SendMessage (label, WM_SETFONT, (LONG) font, TRUE); + SendMessage (label, WM_SETFONT, (WPARAM) font, TRUE); DebugDefaultBehavior = debugButton==1; diff --git a/code/nel/src/misc/shared_memory.cpp b/code/nel/src/misc/shared_memory.cpp index 2a7f85a8b..7b11fea52 100644 --- a/code/nel/src/misc/shared_memory.cpp +++ b/code/nel/src/misc/shared_memory.cpp @@ -20,7 +20,9 @@ #include "nel/misc/debug.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include #else # include diff --git a/code/nel/src/misc/stdmisc.h b/code/nel/src/misc/stdmisc.h index 432ec02b0..b98d92d2a 100644 --- a/code/nel/src/misc/stdmisc.h +++ b/code/nel/src/misc/stdmisc.h @@ -43,9 +43,11 @@ #include #ifdef _WIN32 - #define NOMINMAX - #include - #include +# ifndef __MINGW32__ + #define NOMINMAX +# endif +# include +# include #endif #endif // NL_STDMISC_H diff --git a/code/nel/src/misc/system_info.cpp b/code/nel/src/misc/system_info.cpp index 1fa91db6c..31cde5283 100644 --- a/code/nel/src/misc/system_info.cpp +++ b/code/nel/src/misc/system_info.cpp @@ -19,7 +19,9 @@ #include "nel/misc/system_info.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include # include # include @@ -1484,7 +1486,8 @@ bool CSystemInfo::getVideoInfo (std::string &deviceName, uint64 &driverVersion) { VS_FIXEDFILEINFO *info; UINT len; - if (_VerQueryValue(&buffer[0], "\\", (VOID**)&info, &len)) + char bslash[] = { '\\', 0x00 }; + if (_VerQueryValue(&buffer[0], bslash, (VOID**)&info, &len)) { driverVersion = (((uint64)info->dwFileVersionMS)<<32)|info->dwFileVersionLS; return true; diff --git a/code/nel/src/misc/system_utils.cpp b/code/nel/src/misc/system_utils.cpp index c60364741..a66eed02f 100644 --- a/code/nel/src/misc/system_utils.cpp +++ b/code/nel/src/misc/system_utils.cpp @@ -18,7 +18,9 @@ #include "nel/misc/system_utils.h" #ifdef NL_OS_WINDOWS - #define NOMINMAX + #ifndef NL_COMP_MINGW + #define NOMINMAX + #endif #include #ifdef _WIN32_WINNT_WIN7 @@ -222,7 +224,7 @@ bool CSystemUtils::supportUnicode() bool CSystemUtils::isAzertyKeyboard() { #ifdef NL_OS_WINDOWS - uint16 klId = uint16((uint32)GetKeyboardLayout(0) & 0xFFFF); + uint16 klId = uint16((uintptr_t)GetKeyboardLayout(0) & 0xFFFF); // 0x040c is French, 0x080c is Belgian if (klId == 0x040c || klId == 0x080c) return true; @@ -312,7 +314,8 @@ bool CSystemUtils::setRegKey(const string &ValueName, const string &Value) HKEY hkey; DWORD dwDisp; - if (RegCreateKeyExA(HKEY_CURRENT_USER, RootKey.c_str(), 0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, &dwDisp) == ERROR_SUCCESS) + char nstr[] = { 0x00 }; + if (RegCreateKeyExA(HKEY_CURRENT_USER, RootKey.c_str(), 0, nstr, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, &dwDisp) == ERROR_SUCCESS) { if (RegSetValueExA(hkey, ValueName.c_str(), 0L, REG_SZ, (const BYTE *)Value.c_str(), (DWORD)(Value.size())+1) == ERROR_SUCCESS) res = true; diff --git a/code/nel/src/misc/tds.cpp b/code/nel/src/misc/tds.cpp index 13105f98d..170cda97d 100644 --- a/code/nel/src/misc/tds.cpp +++ b/code/nel/src/misc/tds.cpp @@ -20,7 +20,9 @@ #include "nel/misc/debug.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include #endif // NL_OS_WINDOWS diff --git a/code/nel/src/misc/time_nl.cpp b/code/nel/src/misc/time_nl.cpp index 0ba60c8e2..8aacbd002 100644 --- a/code/nel/src/misc/time_nl.cpp +++ b/code/nel/src/misc/time_nl.cpp @@ -21,7 +21,9 @@ #include "nel/misc/thread.h" #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include #elif defined (NL_OS_UNIX) # include diff --git a/code/nel/src/misc/win_displayer.cpp b/code/nel/src/misc/win_displayer.cpp index f5c0d9545..95b6b34cf 100644 --- a/code/nel/src/misc/win_displayer.cpp +++ b/code/nel/src/misc/win_displayer.cpp @@ -18,8 +18,9 @@ #include "nel/misc/win_displayer.h" #ifdef NL_OS_WINDOWS - -#define NOMINMAX +#ifndef NL_COMP_MINGW +# define NOMINMAX +#endif #include #include #include @@ -263,7 +264,7 @@ void CWinDisplayer::updateLabels () { access.value()[i].Hwnd = CreateWindowW (L"STATIC", L"", WS_CHILD | WS_VISIBLE | SS_SIMPLE, 0, 0, 0, 0, _HWnd, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL); } - SendMessage ((HWND)access.value()[i].Hwnd, WM_SETFONT, (LONG) _HFont, TRUE); + SendMessage ((HWND)access.value()[i].Hwnd, WM_SETFONT, (WPARAM)_HFont, TRUE); needResize = true; } @@ -285,7 +286,7 @@ void CWinDisplayer::updateLabels () } } - SendMessage ((HWND)access.value()[i].Hwnd, WM_SETTEXT, 0, (LONG) n.c_str()); + SendMessage ((HWND)access.value()[i].Hwnd, WM_SETTEXT, 0, (LPARAM) n.c_str()); access.value()[i].NeedUpdate = false; } } @@ -422,7 +423,7 @@ void CWinDisplayer::open (string titleBar, bool iconified, sint x, sint y, sint dwStyle |= WS_HSCROLL; _HEdit = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, RICHEDIT_CLASSW, L"", dwStyle, 0, _ToolBarHeight, w, h-_ToolBarHeight-_InputEditHeight, _HWnd, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL); - SendMessage (_HEdit, WM_SETFONT, (LONG) _HFont, TRUE); + SendMessage (_HEdit, WM_SETFONT, (WPARAM)_HFont, TRUE); // set the edit text limit to lot of :) SendMessage (_HEdit, EM_LIMITTEXT, -1, 0); @@ -436,7 +437,7 @@ void CWinDisplayer::open (string titleBar, bool iconified, sint x, sint y, sint _HInputEdit = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, RICHEDIT_CLASSW, L"", WS_CHILD | WS_VISIBLE /*| ES_MULTILINE*/ | ES_WANTRETURN | ES_NOHIDESEL | ES_AUTOHSCROLL, 0, h-_InputEditHeight, w, _InputEditHeight, _HWnd, NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL); - SendMessageW (_HInputEdit, WM_SETFONT, (LONG) _HFont, TRUE); + SendMessageW (_HInputEdit, WM_SETFONT, (WPARAM)_HFont, TRUE); LRESULT dwEvent = SendMessageW(_HInputEdit, EM_GETEVENTMASK, (WPARAM)0, (LPARAM)0); dwEvent |= ENM_MOUSEEVENTS | ENM_KEYEVENTS | ENM_CHANGE; @@ -486,7 +487,7 @@ void CWinDisplayer::clear () SendMessageW (_HEdit, EM_SETSEL, 0, nIndex); // clear all the text - SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LONG) ""); + SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LPARAM) ""); SendMessageW(_HEdit,EM_SETMODIFY,(WPARAM)TRUE,(LPARAM)0); @@ -535,7 +536,7 @@ void CWinDisplayer::display_main () // store old selection DWORD startSel, endSel; - SendMessage (_HEdit, EM_GETSEL, (LONG)&startSel, (LONG)&endSel); + SendMessage (_HEdit, EM_GETSEL, (WPARAM)&startSel, (LPARAM)&endSel); // find how many lines we have to remove in the current output to add new lines @@ -549,7 +550,7 @@ void CWinDisplayer::display_main () if (nblineremove == _HistorySize) { - SendMessage (_HEdit, WM_SETTEXT, 0, (LONG) ""); + SendMessage (_HEdit, WM_SETTEXT, 0, (LPARAM) ""); startSel = endSel = -1; } else @@ -559,7 +560,7 @@ void CWinDisplayer::display_main () LRESULT oldIndex2 = SendMessageW (_HEdit, EM_LINEINDEX, nblineremove, 0); //nlassert (oldIndex2 != -1); SendMessageW (_HEdit, EM_SETSEL, oldIndex1, oldIndex2); - SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LONG) ""); + SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LPARAM) ""); // update the selection due to the erasing sint dt = (sint)(oldIndex2 - oldIndex1); @@ -599,7 +600,7 @@ void CWinDisplayer::display_main () } // add the string to the edit control - SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LONG) str.c_str()); + SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LPARAM) str.c_str()); } // restore old selection diff --git a/code/nel/src/misc/win_event_emitter.cpp b/code/nel/src/misc/win_event_emitter.cpp index bb43e290b..3c74d9241 100644 --- a/code/nel/src/misc/win_event_emitter.cpp +++ b/code/nel/src/misc/win_event_emitter.cpp @@ -22,7 +22,9 @@ #include "nel/misc/event_server.h" #ifdef NL_OS_WINDOWS +#ifndef NL_COMP_MINGW #define NOMINMAX +#endif #include #include diff --git a/code/nel/src/misc/win_thread.cpp b/code/nel/src/misc/win_thread.cpp index d90d081ff..f556779ba 100644 --- a/code/nel/src/misc/win_thread.cpp +++ b/code/nel/src/misc/win_thread.cpp @@ -20,7 +20,9 @@ #ifdef NL_OS_WINDOWS #include "nel/misc/path.h" +#ifndef NL_COMP_MINGW #define NOMINMAX +#endif #include #include diff --git a/code/nel/src/sound/driver/sound_driver.cpp b/code/nel/src/sound/driver/sound_driver.cpp index 145344b8a..a1c0a94fd 100644 --- a/code/nel/src/sound/driver/sound_driver.cpp +++ b/code/nel/src/sound/driver/sound_driver.cpp @@ -34,7 +34,9 @@ #endif // HAVE_CONFIG_H #ifdef NL_OS_WINDOWS -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include #endif // NL_OS_WINDOWS