From 1979214e69399d503b0f5a5b302101c80d8f437a Mon Sep 17 00:00:00 2001
From: Johannes Schindelin <johannes.schindelin@gmx.de>
Date: Sat, 14 Apr 2018 00:23:10 +0200
Subject: [PATCH 15/23] cctest: allow building with -municode

The rest of the code is built with -municode, we cannot start building
cctest (which relies on the already-built parts) without this option.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 deps/gtest/src/gtest_main.cc | 61 ++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/deps/gtest/src/gtest_main.cc b/deps/gtest/src/gtest_main.cc
index 4cf03e59..e71ff613 100644
--- a/deps/gtest/src/gtest_main.cc
+++ b/deps/gtest/src/gtest_main.cc
@@ -31,7 +31,68 @@
 
 #include "gtest/gtest.h"
 
+#ifdef _WIN32
+#include <windows.h>
+#include <VersionHelpers.h>
+
+#if defined(__MINGW_VERSION_MAJOR)
+#extern "C" {
+#endif
+
+int wmain(int argc, wchar_t *wargv[]) {
+  if (!IsWindows7OrGreater()) {
+    fprintf(stderr, "This application is only supported on Windows 7, "
+                    "Windows Server 2008 R2, or higher.");
+    exit(1);
+  }
+
+  // Convert argv to to UTF8
+  char** argv = new char*[argc + 1];
+  for (int i = 0; i < argc; i++) {
+    // Compute the size of the required buffer
+    DWORD size = WideCharToMultiByte(CP_UTF8,
+                                     0,
+                                     wargv[i],
+                                     -1,
+                                     nullptr,
+                                     0,
+                                     nullptr,
+                                     nullptr);
+    if (size == 0) {
+      // This should never happen.
+      fprintf(stderr, "Could not convert arguments to utf8.");
+      exit(1);
+    }
+    // Do the actual conversion
+    argv[i] = new char[size];
+    DWORD result = WideCharToMultiByte(CP_UTF8,
+                                       0,
+                                       wargv[i],
+                                       -1,
+                                       argv[i],
+                                       size,
+                                       nullptr,
+                                       nullptr);
+    if (result == 0) {
+      // This should never happen.
+      fprintf(stderr, "Could not convert arguments to utf8.");
+      exit(1);
+    }
+  }
+  argv[argc] = nullptr;
+  testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
+
+#if defined(__MINGW_VERSION_MAJOR)
+}
+#endif
+
+#else
+
 GTEST_API_ int main(int argc, char **argv) {
   testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
+
+#endif
-- 
2.17.0.windows.1

