| 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 |
| |