From 5738f1620c9e8a5a236969603036ec5fbb9f2839 Mon Sep 17 00:00:00 2001 From: Joel Nordell Date: Tue, 6 Dec 2016 14:29:29 -0600 Subject: [PATCH] add support for mingw-std-threads --- CMakeLists.txt | 10 ++++++++++ INSTALL.md | 1 + src/internal/sio_client_impl.h | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c2fad3f..f58a1a0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,11 @@ target_include_directories(sioclient PRIVATE ${Boost_INCLUDE_DIRS} ${CMAKE_CURRENT_LIST_DIR}/lib/rapidjson/include ) +if(MINGW_STD_THREADS) + target_include_directories(sioclient PRIVATE ${MINGW_STD_THREADS}) + target_compile_definitions(sioclient PRIVATE -D_USE_MINGW_STD_THREADS -D_WEBSOCKETPP_NO_CPP11_THREAD_) +endif() + set_property(TARGET sioclient PROPERTY CXX_STANDARD 11) set_property(TARGET sioclient PROPERTY CXX_STANDARD_REQUIRED ON) target_link_libraries(sioclient PRIVATE ${Boost_LIBRARIES}) @@ -56,6 +61,11 @@ target_include_directories(sioclient_tls PRIVATE ${Boost_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR} ) +if(MINGW_STD_THREADS) + target_include_directories(sioclient_tls PRIVATE ${MINGW_STD_THREADS}) + target_compile_definitions(sioclient_tls PRIVATE -D_USE_MINGW_STD_THREADS -D_WEBSOCKETPP_NO_CPP11_THREAD_) +endif() + set_property(TARGET sioclient_tls PROPERTY CXX_STANDARD 11) set_property(TARGET sioclient_tls PROPERTY CXX_STANDARD_REQUIRED ON) target_link_libraries(sioclient_tls PRIVATE ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ) diff --git a/INSTALL.md b/INSTALL.md index 614280df..79037c3d 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -16,6 +16,7 @@ cmake ./ ``` * CMake didn't allow merging static libraries,but they're all copied to `./build/lib`, you can DIY if you like. +* If you are compiling with MinGW, you might need to use [mingw-std-threads](https://github.com/meganz/mingw-std-threads). Use `-DMINGW_STD_THREADS=` to enable. ### Without CMake 1. Install boost, see [Boost setup](#boost_setup) section. diff --git a/src/internal/sio_client_impl.h b/src/internal/sio_client_impl.h index 87ac1d03..3036b8b7 100644 --- a/src/internal/sio_client_impl.h +++ b/src/internal/sio_client_impl.h @@ -3,7 +3,9 @@ #include #ifdef _WIN32 +#ifndef _USE_MINGW_STD_THREADS #define _WEBSOCKETPP_CPP11_THREAD_ +#endif #define BOOST_ALL_NO_LIB //#define _WEBSOCKETPP_CPP11_RANDOM_DEVICE_ #define _WEBSOCKETPP_NO_CPP11_FUNCTIONAL_ @@ -35,6 +37,11 @@ typedef websocketpp::config::asio_client client_config; #include #include #include +#include +#ifdef _USE_MINGW_STD_THREADS +#include "mingw.thread.h" +#include "mingw.mutex.h" +#endif #include "../sio_client.h" #include "sio_packet.h"