From 930bb8424231c4d11aa838f737ef5a7f2bc27db2 Mon Sep 17 00:00:00 2001 From: truelight Date: Fri, 3 Aug 2007 23:26:12 +0000 Subject: (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal) -Fix: put DEBUG lines under WINCE via a function designed for just that under WINCE --- src/debug.cpp | 7 +++++++ src/map.cpp | 2 +- src/minilzo.cpp | 2 +- src/misc/strapi.hpp | 4 ++-- src/os_timer.cpp | 5 ++++- src/stdafx.h | 18 ++++++++++++++---- 6 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/debug.cpp b/src/debug.cpp index 9f25f8faf..2e645e1e2 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -94,7 +94,14 @@ void CDECL debug(const char *dbg, ...) } else #endif /* ENABLE_NETWORK */ { +#if defined(WINCE) + /* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */ + TCHAR tbuf[512]; + _sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg)); + NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf)); +#else fprintf(stderr, "dbg: [%s] %s\n", dbg, buf); +#endif IConsoleDebug(dbg, buf); } } diff --git a/src/map.cpp b/src/map.cpp index 0c0964dfa..6156ecf8e 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -84,7 +84,7 @@ TileIndex TileAdd(TileIndex tile, TileIndexDiff add, snprintf(buf, lengthof(buf), "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed", exp, tile, add); -#if !defined(_MSC_VER) +#if !defined(_MSC_VER) || defined(WINCE) fprintf(stderr, "%s:%d %s\n", file, line, buf); #else _assert(buf, (char*)file, line); diff --git a/src/minilzo.cpp b/src/minilzo.cpp index 568c78f2f..68e0bb0f8 100644 --- a/src/minilzo.cpp +++ b/src/minilzo.cpp @@ -60,7 +60,7 @@ # define LZO_HAVE_CONFIG_H #endif -#if !defined(LZO_NO_SYS_TYPES_H) +#if !defined(LZO_NO_SYS_TYPES_H) && !defined(WINCE) # include #endif #include diff --git a/src/misc/strapi.hpp b/src/misc/strapi.hpp index 33e22d5b9..48cfb0f8c 100644 --- a/src/misc/strapi.hpp +++ b/src/misc/strapi.hpp @@ -38,7 +38,7 @@ template <> /*static*/ inline size_t CStrApiBaseT::StrLen(const char *s) /** ::vsprintf wrapper specialization for char */ template <> /*static*/ inline int CStrApiBaseT::SPrintFL(char *buf, size_t count, const char *fmt, va_list args) { -#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC 8.0 and above +#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(WINCE) // VC 8.0 and above return ::vsnprintf_s(buf, count, count - 1, fmt, args); #else /* ! VC 8.0 and above */ return ::vsnprintf(buf, count, fmt, args); @@ -55,7 +55,7 @@ template <> /*static*/ inline size_t CStrApiBaseT::StrLen(const wchar_t /** ::vsprintf wrapper specialization for wchar_t */ template <> /*static*/ inline int CStrApiBaseT::SPrintFL(wchar_t *buf, size_t count, const wchar_t *fmt, va_list args) { -#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC 8.0 and above +#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(WINCE) // VC 8.0 and above return ::_vsnwprintf_s(buf, count, count - 1, fmt, args); #else /* ! VC 8.0 and above */ # if defined(_WIN32) diff --git a/src/os_timer.cpp b/src/os_timer.cpp index a28bb8982..ca0b279b4 100644 --- a/src/os_timer.cpp +++ b/src/os_timer.cpp @@ -8,7 +8,7 @@ /* rdtsc for MSC_VER, uses simple inline assembly, or _rdtsc * from external win64.asm because VS2005 does not support inline assembly */ -#if defined(_MSC_VER) && !defined(RDTSC_AVAILABLE) +#if defined(_MSC_VER) && !defined(RDTSC_AVAILABLE) && !defined(WINCE) # if _MSC_VER >= 1400 #include uint64 _rdtsc() @@ -71,6 +71,9 @@ uint64 _rdtsc() /* In all other cases we have no support for rdtsc. No major issue, * you just won't be able to profile your code with TIC()/TOC() */ #if !defined(RDTSC_AVAILABLE) +/* MSVC (in case of WinCE) can't handle #warning */ +# if !defined(_MSC_VER) #warning "(non-fatal) No support for rdtsc(), you won't be able to profile with TIC/TOC" +# endif uint64 _rdtsc() {return 0;} #endif diff --git a/src/stdafx.h b/src/stdafx.h index 7dae3ebdb..20f565679 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -142,7 +142,9 @@ # define _WIN32_WINNT 0x0500 // Windows 2000 # define _WIN32_WINDOWS 0x400 // Windows 95 +#if !defined(WINCE) # define WINVER 0x0400 // Windows NT 4.0 / Windows 95 +#endif # define _WIN32_IE_ 0x0401 // 4.01 (win98 and NT4SP5+) # define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers @@ -168,9 +170,11 @@ # define NORETURN __declspec(noreturn) # define FORCEINLINE __forceinline # define inline _inline -# define CDECL _cdecl +# if !defined(WINCE) +# define CDECL _cdecl +# endif int CDECL snprintf(char *str, size_t size, const char *format, ...); -# if _MSC_VER < 1400 +# if _MSC_VER < 1400 || defined(WINCE) int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap); # endif @@ -191,8 +195,14 @@ # endif # endif -# define strcasecmp stricmp -# define strncasecmp strnicmp +# if defined(WINCE) +# define strcasecmp _stricmp +# define strncasecmp _strnicmp +# undef DEBUG +# else +# define strcasecmp stricmp +# define strncasecmp strnicmp +# endif /* suppress: warning C4005: 'offsetof' : macro redefinition (VC8) */ #endif /* defined(_MSC_VER) */ -- cgit v1.2.3-54-g00ecf