if(WIN32)
tr_add_external_auto_library(EVENT2 event
- PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${THIRD_PARTY_DIR}/event2.cmake" "<SOURCE_DIR>/CMakeLists.txt")
+ PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${THIRD_PARTY_DIR}/event2.cmake" "<SOURCE_DIR>/CMakeLists.txt"
+ COMMAND "${CMAKE_COMMAND}" -E chdir "<SOURCE_DIR>" patch -p1 -i "${THIRD_PARTY_DIR}/event2-01-win32.patch")
else()
tr_add_external_auto_library(EVENT2 event
BUILD_IN_SOURCE 1
tr_add_external_auto_library(UTP utp
PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${THIRD_PARTY_DIR}/utp.cmake" "<SOURCE_DIR>/CMakeLists.txt"
COMMAND "${CMAKE_COMMAND}" -E copy "${THIRD_PARTY_DIR}/utp_config.h" "<SOURCE_DIR>/utp_config.h"
- COMMAND "${CMAKE_COMMAND}" -E chdir "<SOURCE_DIR>" patch -p1 --binary -i "${THIRD_PARTY_DIR}/utp-01-ticket-5002.patch")
+ COMMAND "${CMAKE_COMMAND}" -E chdir "<SOURCE_DIR>" patch -p1 --binary -i "${THIRD_PARTY_DIR}/utp-01-ticket-5002.patch"
+ COMMAND "${CMAKE_COMMAND}" -E chdir "<SOURCE_DIR>" patch -p1 --binary -i "${THIRD_PARTY_DIR}/utp-02-win32.patch"
+ COMMAND "${CMAKE_COMMAND}" -E chdir "<SOURCE_DIR>" patch -p1 --binary -i "${THIRD_PARTY_DIR}/utp-03-msvc14.patch")
endif()
tr_add_external_auto_library(B64 b64
--- /dev/null
+diff --git a/WIN32-Code/event2/event-config.h b/WIN32-Code/event2/event-config.h
+--- a/WIN32-Code/event2/event-config.h
++++ b/WIN32-Code/event2/event-config.h
+@@ -167,7 +167,9 @@
+ /* #undef _EVENT_HAVE_STRSEP */
+
+ /* Define to 1 if you have the `strtok_r' function. */
+-/* #undef _EVENT_HAVE_STRTOK_R */
++#if defined(__MINGW32__) || defined(__MINGW64__)
++#define _EVENT_HAVE_STRTOK_R 1
++#endif
+
+ /* Define to 1 if you have the `strtoll' function. */
+ /* #define _EVENT_HAVE_STRTOLL 1 */
--- /dev/null
+diff --git a/utp.h b/utp.h
+--- a/utp.h
++++ b/utp.h
+@@ -4,12 +4,18 @@
+ #include "utypes.h"\r
+ \r
+ #ifdef WIN32\r
++#ifndef _CRT_SECURE_NO_DEPRECATE\r
+ #define _CRT_SECURE_NO_DEPRECATE\r
++#endif\r
++#ifndef WIN32_LEAN_AND_MEAN\r
+ #define WIN32_LEAN_AND_MEAN\r
++#endif\r
+ #include <windows.h>\r
+ #include <winsock2.h>\r
+ #include <ws2tcpip.h>\r
++#ifdef _MSC_VER\r
+ #pragma comment(lib,"ws2_32.lib")\r
++#endif\r
+ #else\r
+ #include <stdlib.h>\r
+ #include <sys/types.h>\r
+@@ -142,7 +148,7 @@
+ };\r
+ \r
+ // Get stats for UTP socket\r
+-void UTP_GetStats(struct UTPSocket *socket, UTPStats *stats);\r
++void UTP_GetStats(struct UTPSocket *socket, struct UTPStats *stats);\r
+ #endif\r
+ \r
+ // Close the UTP socket.\r
--- /dev/null
+diff --git a/utp.cpp b/utp.cpp
+--- a/utp.cpp
++++ b/utp.cpp
+@@ -859,7 +859,7 @@
+ int flags = version == 0 ? b->flags : b1->type();\r
+ uint16 seq_nr = version == 0 ? b->seq_nr : b1->seq_nr;\r
+ uint16 ack_nr = version == 0 ? b->ack_nr : b1->ack_nr;\r
+- LOG_UTPV("0x%08x: send %s len:%u id:%u timestamp:"I64u" reply_micro:%u flags:%s seq_nr:%u ack_nr:%u",\r
++ LOG_UTPV("0x%08x: send %s len:%u id:%u timestamp:" I64u " reply_micro:%u flags:%s seq_nr:%u ack_nr:%u",\r
+ this, addrfmt(addr, addrbuf), (uint)length, conn_id_send, time, reply_micro, flagnames[flags],\r
+ seq_nr, ack_nr);\r
+ #endif\r
+@@ -1705,7 +1705,7 @@
+ // used in parse_log.py\r
+ LOG_UTP("0x%08x: actual_delay:%u our_delay:%d their_delay:%u off_target:%d max_window:%u "\r
+ "delay_base:%u delay_sum:%d target_delay:%d acked_bytes:%u cur_window:%u "\r
+- "scaled_gain:%f rtt:%u rate:%u quota:%d wnduser:%u rto:%u timeout:%d get_microseconds:"I64u" "\r
++ "scaled_gain:%f rtt:%u rate:%u quota:%d wnduser:%u rto:%u timeout:%d get_microseconds:" I64u " "\r
+ "cur_window_packets:%u packet_size:%u their_delay_base:%u their_actual_delay:%u",\r
+ this, actual_delay, our_delay / 1000, their_hist.get_value() / 1000,\r
+ (int)off_target / 1000, (uint)(max_window), our_hist.delay_base,\r
+@@ -1790,7 +1790,7 @@
+ \r
+ if (pk_flags >= ST_NUM_STATES) return 0;\r
+ \r
+- LOG_UTPV("0x%08x: Got %s. seq_nr:%u ack_nr:%u state:%s version:%u timestamp:"I64u" reply_micro:%u",\r
++ LOG_UTPV("0x%08x: Got %s. seq_nr:%u ack_nr:%u state:%s version:%u timestamp:" I64u " reply_micro:%u",\r
+ conn, flagnames[pk_flags], pk_seq_nr, pk_ack_nr, statenames[conn->state], conn->version,\r
+ conn->version == 0?(uint64)(pf->tv_sec) * 1000000 + pf->tv_usec:uint64(pf1->tv_usec),\r
+ conn->version == 0?(uint32)(pf->reply_micro):(uint32)(pf1->reply_micro));\r