Mercurial > mxe-octave
view src/build-msvctools/compat/mingwcompat.c @ 3061:f8299bb6c872
Initial support for native MSVC compilation.
* add MSVC support files: compiler wrappers and support libraries
* adapt libiconv to work with MSVC
* adapt gettext to work with MSVC
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Mon, 17 Jun 2013 22:43:11 -0400 |
parents | |
children |
line wrap: on
line source
#ifdef _WIN64 #error "this file is not ported to Win64 yet" #endif #define __STDC__ 1 #include <stdio.h> #include <stdlib.h> #include <stdarg.h> int __mingw_vfprintf (FILE *stream, const char *fmt, va_list argptr) { return vfprintf (stream, fmt, argptr); } int __mingw_vprintf (const char *fmt, va_list argptr) { return vprintf (fmt, argptr); } int __mingw_vsprintf (char *buf, const char *fmt, va_list argptr) { return vsprintf (buf, fmt, argptr); } int snprintf (char *buffer, size_t count, const char *fmt, ...) { va_list av; int result; va_start (av, fmt); result = vsnprintf (buffer, count, fmt, av); va_end (av); return result; } int __mingw_snprintf (char *buffer, size_t count, const char *fmt, ...) { va_list av; int result; va_start (av, fmt); result = vsnprintf (buffer, count, fmt, av); va_end (av); return result; } long long int strtoll (const char *nptr, char **endptr, int base) { return _strtoi64 (nptr, endptr, base); } __int64 __divdi3 (__int64 num, __int64 den) { return (num / den); } __int64 __moddi3 (__int64 num, __int64 den) { return (num % den); } unsigned __int64 __udivdi3 (unsigned __int64 num, unsigned __int64 den) { return (num / den); } unsigned __int64 __umoddi3 (unsigned __int64 num, unsigned __int64 den) { return (num % den); } void __main (void) { /* In GCC, this function calls _do_global_ctors. */ } __declspec(naked) void __chkstk_ms (void) { __asm { push ecx push eax cmp eax,1000h lea ecx,dword ptr [esp+12] jb label_2 label_1: sub ecx,1000h or dword ptr [ecx],0h sub eax,1000h cmp eax,1000h ja label_1 label_2: sub ecx,eax or dword ptr [ecx],0h pop eax pop ecx ret } } int _CRT_MT = 1; double __strtod (const char *nptr, char **endptr) { return strtod (nptr, endptr); } float __strtof (const char *nptr, char **endptr) { return strtod (nptr, endptr); }