Microsoft Visual Studio 2015 release candidate. This bundle contains msvc-14.0 for which `_MSC_VER` has the value 1900.
(1) Patches to byterun/floats.c
(a)
#if defined (_MSC_VER)
# include <float.h>
# if(MSC_VER < 1900)
# define isnan _isnan
# define isfinite _finite
# endif/*(MSC_VER <= 1900)*/
#endif /*defined(_MSC_VER)*/
(b)
void caml_init_ieee_floats(void)
{
...
#if defined(_MSC_VER) &&_MSC_VER < 1900
_set_output_format(_TWO_DIGIT_EXPONENT);
#endif/*defined(_MSC_VER) &&_MSC_VER < 1900*/
}
(2) Patch to byterun/misc.h
/* snprintf emulation for Win32 */
#if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1900
extern int caml_snprintf(char * buf, size_t size, const char * format, ...);
# define snprintf caml_snprintf
#endif /*defined (_WIN32) && defined (_MSC_VER)&& _MSC_VER < 1900 */
(3) Rebuild flexdll objects with msvc-14.0 (in my case I am interested only in the 64-bit variants)
cl.exe /nologo /MD -D_CRT_SECURE_NO_DEPRECATE /GS- /DMSVC -c /Fo"flexdll_msvc64.obj" flexdll.c
cl.exe /nologo /MD -D_CRT_SECURE_NO_DEPRECATE /GS- /DMSVC -c /Fo"flexdll_initer_msvc64.obj" flexdll_initer.c
EXTRALIBS=legacy_stdio_wide_specifiers.lib legacy_stdio_definitions.lib vcruntime.lib ucrt.lib