From f45a83d7fc964b10acc5d7d0da65a8157489562f Mon Sep 17 00:00:00 2001
From: stijn <stinos@zoho.com>
Date: Sat, 10 May 2014 10:42:40 +0200
Subject: [PATCH] mingw: Fix compilation issues

- use lowercase windows.h
- fix for mingw32 using preprocessor-unfriendly definition of CLOCKS_PER_SEC
---
 unix/modtime.c  | 14 ++++++++++++--
 windows/init.c  |  2 +-
 windows/sleep.c |  2 +-
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/unix/modtime.c b/unix/modtime.c
index c497763bf..77d2945b8 100644
--- a/unix/modtime.c
+++ b/unix/modtime.c
@@ -45,9 +45,19 @@ void msec_sleep_tv(struct timeval *tv) {
 #define sleep_select select
 #endif
 
-#if CLOCKS_PER_SEC == 1000000 // POSIX
+// mingw32 defines CLOCKS_PER_SEC as ((clock_t)<somevalue>) but preprocessor does not handle casts
+#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+#define MP_REMOVE_BRACKETSA(x)
+#define MP_REMOVE_BRACKETSB(x) MP_REMOVE_BRACKETSA x
+#define MP_REMOVE_BRACKETSC(x) MP_REMOVE_BRACKETSB x
+#define MP_CLOCKS_PER_SEC MP_REMOVE_BRACKETSC(CLOCKS_PER_SEC)
+#else
+#define MP_CLOCKS_PER_SEC CLOCKS_PER_SEC
+#endif
+
+#if defined(MP_CLOCKS_PER_SEC) && (MP_CLOCKS_PER_SEC == 1000000) // POSIX
 #define CLOCK_DIV 1000.0
-#elif CLOCKS_PER_SEC == 1000 // WIN32
+#elif defined(MP_CLOCKS_PER_SEC) && (MP_CLOCKS_PER_SEC == 1000) // WIN32
 #define CLOCK_DIV 1.0
 #else
 #error Unsupported clock() implementation
diff --git a/windows/init.c b/windows/init.c
index 69f1026bb..a370c464e 100644
--- a/windows/init.c
+++ b/windows/init.c
@@ -26,7 +26,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
-#include <Windows.h>
+#include <windows.h>
 
 HANDLE hSleepEvent = NULL;
 
diff --git a/windows/sleep.c b/windows/sleep.c
index 98387350f..a7e5125e5 100644
--- a/windows/sleep.c
+++ b/windows/sleep.c
@@ -24,7 +24,7 @@
  * THE SOFTWARE.
  */
 
-#include <Windows.h>
+#include <windows.h>
 
 extern HANDLE hSleepEvent;
 
-- 
GitLab