diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d5ed963..011c9052 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,6 +61,10 @@ IF (NOT PAHO_BUILD_SHARED AND NOT PAHO_BUILD_STATIC) MESSAGE(FATAL_ERROR "YOu must set either PAHO_BUILD_SHARED, PAHO_BUILD_STATIC, or both") ENDIF() +IF (PAHO_BUILD_STATIC) + ADD_DEFINITIONS(-DPAHO_BUILD_STATIC=1) +ENDIF() + IF(PAHO_BUILD_DEB_PACKAGE) set(CMAKE_INSTALL_DOCDIR share/doc/libpaho-mqtt) ENDIF() diff --git a/appveyor.yml b/appveyor.yml index f5a42457..a5cb515e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,7 +12,7 @@ environment: PENSSL_ROOT_DIR: "C:/OpenSSL-Win64" PAHO_BUILD_STATIC: FALSE PAHO_BUILD_SHARED: TRUE - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 PAHO_WINDOWS_BUILD_BIT: x64 PENSSL_ROOT_DIR: "C:/OpenSSL-Win64" PAHO_BUILD_STATIC: TRUE @@ -39,6 +39,8 @@ build_script: echo %APPVEYOR_BUILD_WORKER_IMAGE% + if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2019" call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" %PAHO_WINDOWS_BUILD_BIT% + if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2015" call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %PAHO_WINDOWS_BUILD_BIT% if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2013" call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %PAHO_WINDOWS_BUILD_BIT% diff --git a/src/MQTTAsync.c b/src/MQTTAsync.c index 99ff5a9e..5b85c902 100644 --- a/src/MQTTAsync.c +++ b/src/MQTTAsync.c @@ -117,30 +117,6 @@ extern mutex_type stack_mutex; extern mutex_type heap_mutex; extern mutex_type log_mutex; -/* -BOOL APIENTRY DllMain(HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - Log(TRACE_MAX, -1, "DLL process attach"); - MQTTAsync_init(); - break; - case DLL_THREAD_ATTACH: - Log(TRACE_MAX, -1, "DLL thread attach"); - break; - case DLL_THREAD_DETACH: - Log(TRACE_MAX, -1, "DLL thread detach"); - break; - case DLL_PROCESS_DETACH: - Log(TRACE_MAX, -1, "DLL process detach"); - break; - } - return TRUE; -}*/ - void MQTTAsync_init(void) { if (mqttasync_mutex == NULL) @@ -164,6 +140,7 @@ void MQTTAsync_init(void) } } +#if defined(PAHO_BUILD_STATIC) // Global variable for one-time initialization structure INIT_ONCE g_InitOnce = INIT_ONCE_STATIC_INIT; // Static initialization @@ -205,6 +182,30 @@ BOOL CALLBACK InitHandleFunction ( MQTTAsync_init(); return TRUE; } +#else +BOOL APIENTRY DllMain(HANDLE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + Log(TRACE_MAX, -1, "DLL process attach"); + MQTTAsync_init(); + break; + case DLL_THREAD_ATTACH: + Log(TRACE_MAX, -1, "DLL thread attach"); + break; + case DLL_THREAD_DETACH: + Log(TRACE_MAX, -1, "DLL thread detach"); + break; + case DLL_PROCESS_DETACH: + Log(TRACE_MAX, -1, "DLL process detach"); + break; + } + return TRUE; +} +#endif #else @@ -605,7 +606,7 @@ int MQTTAsync_createWithOptions(MQTTAsync* handle, const char* serverURI, const int rc = 0; MQTTAsyncs *m = NULL; -#if defined(_WIN32) || defined(_WIN64) +#if (defined(_WIN32) || defined(_WIN64)) && defined(PAHO_BUILD_STATIC) OpenEventHandleSync(); /* intializes mutexes once. Must come before FUNC_ENTRY */ #endif FUNC_ENTRY; diff --git a/src/MQTTClient.c b/src/MQTTClient.c index 504d4ad1..fe2d9049 100644 --- a/src/MQTTClient.c +++ b/src/MQTTClient.c @@ -112,30 +112,6 @@ extern mutex_type stack_mutex; extern mutex_type heap_mutex; extern mutex_type log_mutex; -/* -BOOL APIENTRY DllMain(HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - Log(TRACE_MAX, -1, "DLL process attach"); - MQTTClient_init(); - break; - case DLL_THREAD_ATTACH: - Log(TRACE_MAX, -1, "DLL thread attach"); - break; - case DLL_THREAD_DETACH: - Log(TRACE_MAX, -1, "DLL thread detach"); - break; - case DLL_PROCESS_DETACH: - Log(TRACE_MAX, -1, "DLL process detach"); - break; - } - return TRUE; -}*/ - void MQTTClient_init(void) { if (mqttclient_mutex == NULL) @@ -151,6 +127,7 @@ void MQTTClient_init(void) } } +#if defined(PAHO_BUILD_STATIC) // Global variable for one-time initialization structure INIT_ONCE g_InitOnce = INIT_ONCE_STATIC_INIT; // Static initialization @@ -193,6 +170,30 @@ BOOL CALLBACK InitHandleFunction ( return TRUE; } +#else +BOOL APIENTRY DllMain(HANDLE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + Log(TRACE_MAX, -1, "DLL process attach"); + MQTTClient_init(); + break; + case DLL_THREAD_ATTACH: + Log(TRACE_MAX, -1, "DLL thread attach"); + break; + case DLL_THREAD_DETACH: + Log(TRACE_MAX, -1, "DLL thread detach"); + break; + case DLL_PROCESS_DETACH: + Log(TRACE_MAX, -1, "DLL process detach"); + break; + } + return TRUE; +} +#endif #else static pthread_mutex_t mqttclient_mutex_store = PTHREAD_MUTEX_INITIALIZER; @@ -396,7 +397,7 @@ int MQTTClient_createWithOptions(MQTTClient* handle, const char* serverURI, cons int rc = 0; MQTTClients *m = NULL; -#if defined(_WIN32) || defined(_WIN64) +#if (defined(_WIN32) || defined(_WIN64)) && defined(PAHO_BUILD_STATIC) OpenEventHandleSync(); /* intializes mutexes once. Must come before FUNC_ENTRY */ #endif FUNC_ENTRY;