diff options
-rw-r--r-- | include/systools/win32/snprintf.h | 5 | ||||
-rw-r--r-- | sal/Library_uwinapi.mk | 3 | ||||
-rw-r--r-- | sal/systools/win32/uwinapi/sntprintf.c | 4 | ||||
-rw-r--r-- | solenv/gbuild/platform/windows.mk | 7 |
4 files changed, 18 insertions, 1 deletions
diff --git a/include/systools/win32/snprintf.h b/include/systools/win32/snprintf.h index 92e571f91ee8..62abfc8a11a6 100644 --- a/include/systools/win32/snprintf.h +++ b/include/systools/win32/snprintf.h @@ -69,6 +69,9 @@ extern "C" { #if !defined(__MINGW32__) || defined (__NO_ISOCEXT) +/* VS 2015 and above support ISO C snprintf */ +#if _MSC_VER < 1900 + /* UNICODE version */ _SNPRINTF_DLLIMPORT int __cdecl snwprintf( wchar_t *buffer, size_t count, const wchar_t *format, ... ); @@ -77,6 +80,8 @@ _SNPRINTF_DLLIMPORT int __cdecl snprintf( char *buffer, size_t count, const char #endif +#endif + /* Conflict with STL_port inline implementation */ #ifdef __cplusplus diff --git a/sal/Library_uwinapi.mk b/sal/Library_uwinapi.mk index 089ab59ee825..ed4efde10b6c 100644 --- a/sal/Library_uwinapi.mk +++ b/sal/Library_uwinapi.mk @@ -33,14 +33,15 @@ $(eval $(call gb_Library_add_cobjects,uwinapi,\ ifeq ($(COM),MSC) - $(eval $(call gb_Library_add_cobjects,uwinapi,\ sal/systools/win32/uwinapi/legacy \ )) +ifeq ($(VCVER),120) $(eval $(call gb_Library_add_ldflags,uwinapi,\ /DEF:$(SRCDIR)/sal/systools/win32/uwinapi/uwinapi.def \ )) +endif endif diff --git a/sal/systools/win32/uwinapi/sntprintf.c b/sal/systools/win32/uwinapi/sntprintf.c index 70980305c4ae..cbebed5e7ee6 100644 --- a/sal/systools/win32/uwinapi/sntprintf.c +++ b/sal/systools/win32/uwinapi/sntprintf.c @@ -90,6 +90,9 @@ static _TCHAR *GetLastBufferChar( _TCHAR *buffer, size_t count ) return last; } +/* VS 2015 and above support ISO C snprintf */ +#if _MSC_VER < 1900 + /* Implementation of snprintf following the ISO/IEC 9899:1999 (ISO C99) standard */ _SNPRINTF_DLLIMPORT int __cdecl vsntprintf( _TCHAR *buffer, size_t count, const _TCHAR *format, va_list list ) @@ -141,6 +144,7 @@ _SNPRINTF_DLLIMPORT int __cdecl sntprintf( _TCHAR *buffer, size_t count, const _ return retval; } +#endif #endif diff --git a/solenv/gbuild/platform/windows.mk b/solenv/gbuild/platform/windows.mk index ea0e476ec456..a2e621d67215 100644 --- a/solenv/gbuild/platform/windows.mk +++ b/solenv/gbuild/platform/windows.mk @@ -32,8 +32,15 @@ gb_OSDEFS := \ -DWNT \ -DNOMINMAX \ + +gb_UWINAPI := + +ifeq ($(VCVER),120) + gb_UWINAPI := uwinapi +endif + gb_Executable_LAYER := \ $(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \ $(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \ |