summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/systools/win32/snprintf.h5
-rw-r--r--sal/Library_uwinapi.mk3
-rw-r--r--sal/systools/win32/uwinapi/sntprintf.c4
-rw-r--r--solenv/gbuild/platform/windows.mk7
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) \