changeset 1393:04177061f98d

Patch to allow compiling LDC with MinGW, by `mp4 / [1]jaffa` (slightly edited). Closes #300.
author Frits van Bommel <fvbommel wxs.nl>
date Mon, 18 May 2009 14:02:50 +0200
parents 336faed34424
children 193ab3969920
files dmd/mtype.c dmd/root/port.c
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/dmd/mtype.c	Sun May 17 23:33:35 2009 +0200
+++ b/dmd/mtype.c	Mon May 18 14:02:50 2009 +0200
@@ -94,7 +94,7 @@
 int Tsize_t = Tuns32;
 int Tptrdiff_t = Tint32;
 
-#if _WIN32
+#if _WIN32 && !defined __MINGW32__
 static double zero = 0;
 double Port::nan = NAN;
 double Port::infinity = 1/zero;
--- a/dmd/root/port.c	Sun May 17 23:33:35 2009 +0200
+++ b/dmd/root/port.c	Mon May 18 14:02:50 2009 +0200
@@ -315,7 +315,7 @@
 
 #endif
 
-#if linux || __APPLE__ || __FreeBSD__
+#if linux || __APPLE__ || __FreeBSD__ || __MINGW32__
 
 #include <math.h>
 #if linux
@@ -363,11 +363,15 @@
 #endif
 }
 
+#ifndef __MINGW32__
 #undef isnan
+#endif
 int Port::isNan(double r)
 {
 #if __APPLE__
     return __inline_isnan(r);
+#elif defined __MINGW32__
+    return isnan(r);
 #else
     return ::isnan(r);
 #endif
@@ -377,6 +381,8 @@
 {
 #if __APPLE__
     return __inline_isnan(r);
+#elif defined __MINGW32__
+    return isnan(r);
 #else
     return ::isnan(r);
 #endif
@@ -404,11 +410,15 @@
     return ::finite(r);
 }
 
+#ifndef __MINGW32__
 #undef isinf
+#endif
 int Port::isInfinity(double r)
 {
 #if __APPLE__
     return fpclassify(r) == FP_INFINITE;
+#elif defined __MINGW32__
+    return isinf(r);
 #else
     return ::isinf(r);
 #endif
@@ -443,7 +453,11 @@
 
 wchar_t *Port::ull_to_string(wchar_t *buffer, ulonglong ull)
 {
+#ifndef __MINGW32__
     swprintf(buffer, sizeof(ulonglong) * 3 + 1, L"%llu", ull);
+#else
+   _snwprintf(buffer, sizeof(ulonglong) * 3 + 1, L"%llu", ull);
+#endif
     return buffer;
 }