Change static build to use vs2019 - revert shared init to DllMain

This commit is contained in:
Ian Craggs 2020-03-12 12:19:44 +00:00
parent 291e96749b
commit 2d20fa3566
4 changed files with 59 additions and 51 deletions

View File

@ -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()

View File

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

View File

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

View File

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