mirror of https://github.com/eclipse/paho.mqtt.c
Clean up static building especially for Windows #792
This commit is contained in:
parent
60350cae9d
commit
b7b27cb9db
|
|
@ -1,5 +1,5 @@
|
|||
#*******************************************************************************
|
||||
# Copyright (c) 2015, 2019 logi.cals GmbH and others
|
||||
# Copyright (c) 2015, 2020 logi.cals GmbH and others
|
||||
#
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License v1.0
|
||||
|
|
@ -42,7 +42,7 @@ IF (PAHO_HIGH_PERFORMANCE)
|
|||
ENDIF()
|
||||
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -DWIN32_LEAN_AND_MEAN -MD -DMQTT_EXPORTS=1)
|
||||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -DWIN32_LEAN_AND_MEAN -MD)
|
||||
ELSEIF(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
ADD_DEFINITIONS(-DOSX)
|
||||
ENDIF()
|
||||
|
|
@ -61,10 +61,6 @@ 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()
|
||||
|
|
|
|||
|
|
@ -71,13 +71,25 @@ ELSEIF (UNIX)
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
## common compilation for libpaho-mqtt3c and libpaho-mqtt3a
|
||||
IF (PAHO_BUILD_SHARED)
|
||||
# common compilation for libpaho-mqtt3c and libpaho-mqtt3a
|
||||
ADD_LIBRARY(common_obj OBJECT ${common_src})
|
||||
SET_TARGET_PROPERTIES(common_obj PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
COMPILE_DEFINITIONS "MQTT_EXPORTS=1")
|
||||
|
||||
COMPILE_DEFINITIONS "PAHO_MQTT_EXPORTS=1")
|
||||
ADD_EXECUTABLE(MQTTVersion MQTTVersion.c)
|
||||
SET_TARGET_PROPERTIES(MQTTVersion PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
COMPILE_DEFINITIONS "PAHO_MQTT_IMPORTS=1")
|
||||
ENDIF()
|
||||
|
||||
IF (PAHO_BUILD_STATIC)
|
||||
ADD_LIBRARY(common_obj_static OBJECT ${common_src})
|
||||
SET_TARGET_PROPERTIES(common_obj_static PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
COMPILE_DEFINITIONS "PAHO_MQTT_STATIC=1")
|
||||
ADD_EXECUTABLE(MQTTVersion-static MQTTVersion.c)
|
||||
ENDIF()
|
||||
|
||||
IF (PAHO_BUILD_SHARED)
|
||||
ADD_LIBRARY(paho-mqtt3c SHARED $<TARGET_OBJECTS:common_obj> MQTTClient.c)
|
||||
|
|
@ -85,13 +97,13 @@ IF (PAHO_BUILD_SHARED)
|
|||
|
||||
TARGET_LINK_LIBRARIES(paho-mqtt3c ${LIBS_SYSTEM})
|
||||
TARGET_LINK_LIBRARIES(paho-mqtt3a ${LIBS_SYSTEM})
|
||||
|
||||
TARGET_LINK_LIBRARIES(MQTTVersion paho-mqtt3a paho-mqtt3c ${LIBS_SYSTEM})
|
||||
|
||||
SET_TARGET_PROPERTIES(
|
||||
paho-mqtt3c paho-mqtt3a PROPERTIES
|
||||
VERSION ${CLIENT_VERSION}
|
||||
SOVERSION ${PAHO_VERSION_MAJOR}
|
||||
DEFINE_SYMBOL "MQTT_EXPORTS")
|
||||
COMPILE_DEFINITIONS "PAHO_MQTT_EXPORTS=1")
|
||||
|
||||
IF(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
SET(MQTTCLIENT_ENTRY_POINT _MQTTClient_init)
|
||||
|
|
@ -129,15 +141,20 @@ IF (PAHO_BUILD_SHARED)
|
|||
ENDIF()
|
||||
|
||||
IF (PAHO_BUILD_STATIC)
|
||||
ADD_LIBRARY(paho-mqtt3c-static STATIC $<TARGET_OBJECTS:common_obj> MQTTClient.c)
|
||||
ADD_LIBRARY(paho-mqtt3a-static STATIC $<TARGET_OBJECTS:common_obj> MQTTAsync.c)
|
||||
ADD_LIBRARY(paho-mqtt3c-static STATIC $<TARGET_OBJECTS:common_obj_static> MQTTClient.c)
|
||||
ADD_LIBRARY(paho-mqtt3a-static STATIC $<TARGET_OBJECTS:common_obj_static> MQTTAsync.c)
|
||||
|
||||
TARGET_LINK_LIBRARIES(paho-mqtt3c-static ${LIBS_SYSTEM})
|
||||
TARGET_LINK_LIBRARIES(paho-mqtt3a-static ${LIBS_SYSTEM})
|
||||
IF (NOT WIN32)
|
||||
SET_TARGET_PROPERTIES(paho-mqtt3c-static PROPERTIES OUTPUT_NAME paho-mqtt3c)
|
||||
SET_TARGET_PROPERTIES(paho-mqtt3a-static PROPERTIES OUTPUT_NAME paho-mqtt3a)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET_TARGET_PROPERTIES(
|
||||
paho-mqtt3c-static paho-mqtt3a-static PROPERTIES
|
||||
VERSION ${CLIENT_VERSION}
|
||||
SOVERSION ${PAHO_VERSION_MAJOR}
|
||||
COMPILE_DEFINITIONS "PAHO_MQTT_STATIC=1")
|
||||
|
||||
FOREACH(TARGET paho-mqtt3c-static paho-mqtt3a-static)
|
||||
TARGET_INCLUDE_DIRECTORIES(${TARGET}
|
||||
|
|
@ -149,7 +166,7 @@ IF (PAHO_BUILD_STATIC)
|
|||
ENDFOREACH()
|
||||
|
||||
IF (NOT PAHO_BUILD_SHARED)
|
||||
TARGET_LINK_LIBRARIES(MQTTVersion paho-mqtt3a-static paho-mqtt3c-static ${LIBS_SYSTEM})
|
||||
TARGET_LINK_LIBRARIES(MQTTVersion-static paho-mqtt3a-static paho-mqtt3c-static ${LIBS_SYSTEM})
|
||||
INSTALL(TARGETS paho-mqtt3c-static paho-mqtt3a-static
|
||||
EXPORT eclipse-paho-mqtt-cTargets
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
|
|
@ -168,14 +185,14 @@ IF (PAHO_WITH_SSL)
|
|||
SET(OPENSSL_ROOT_DIR "" CACHE PATH "Directory containing OpenSSL libraries and includes")
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
## common compilation for libpaho-mqtt3cs and libpaho-mqtt3as
|
||||
## Note: SSL libraries must be recompiled due ifdefs
|
||||
ADD_LIBRARY(common_ssl_obj OBJECT ${common_src})
|
||||
TARGET_INCLUDE_DIRECTORIES(common_ssl_obj PUBLIC ${OPENSSL_INCLUDE_DIR})
|
||||
SET_PROPERTY(TARGET common_ssl_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;MQTT_EXPORTS=1")
|
||||
|
||||
IF (PAHO_BUILD_SHARED)
|
||||
## common compilation for libpaho-mqtt3cs and libpaho-mqtt3as
|
||||
## Note: SSL libraries must be recompiled due ifdefs
|
||||
ADD_LIBRARY(common_ssl_obj OBJECT ${common_src})
|
||||
TARGET_INCLUDE_DIRECTORIES(common_ssl_obj PUBLIC ${OPENSSL_INCLUDE_DIR})
|
||||
SET_PROPERTY(TARGET common_ssl_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;PAHO_MQTT_EXPORTS=1")
|
||||
|
||||
ADD_LIBRARY(paho-mqtt3cs SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTClient.c SSLSocket.c)
|
||||
ADD_LIBRARY(paho-mqtt3as SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTAsync.c SSLSocket.c)
|
||||
|
||||
|
|
@ -183,8 +200,7 @@ IF (PAHO_WITH_SSL)
|
|||
paho-mqtt3cs paho-mqtt3as PROPERTIES
|
||||
VERSION ${CLIENT_VERSION}
|
||||
SOVERSION ${PAHO_VERSION_MAJOR}
|
||||
COMPILE_DEFINITIONS "OPENSSL=1"
|
||||
DEFINE_SYMBOL "MQTT_EXPORTS")
|
||||
COMPILE_DEFINITIONS "OPENSSL=1;PAHO_MQTT_EXPORTS=1")
|
||||
|
||||
IF(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
SET(MQTTCLIENT_ENTRY_POINT _MQTTClient_init)
|
||||
|
|
@ -222,15 +238,21 @@ IF (PAHO_WITH_SSL)
|
|||
ENDIF()
|
||||
|
||||
IF (PAHO_BUILD_STATIC)
|
||||
ADD_LIBRARY(paho-mqtt3cs-static STATIC $<TARGET_OBJECTS:common_ssl_obj> MQTTClient.c SSLSocket.c)
|
||||
ADD_LIBRARY(paho-mqtt3as-static STATIC $<TARGET_OBJECTS:common_ssl_obj> MQTTAsync.c SSLSocket.c)
|
||||
## common compilation for libpaho-mqtt3cs and libpaho-mqtt3as
|
||||
## Note: SSL libraries must be recompiled due ifdefs
|
||||
ADD_LIBRARY(common_ssl_obj_static OBJECT ${common_src})
|
||||
TARGET_INCLUDE_DIRECTORIES(common_ssl_obj_static PUBLIC ${OPENSSL_INCLUDE_DIR})
|
||||
SET_PROPERTY(TARGET common_ssl_obj_static PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
SET_PROPERTY(TARGET common_ssl_obj_static PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;PAHO_MQTT_STATIC=1")
|
||||
|
||||
ADD_LIBRARY(paho-mqtt3cs-static STATIC $<TARGET_OBJECTS:common_ssl_obj_static> MQTTClient.c SSLSocket.c)
|
||||
ADD_LIBRARY(paho-mqtt3as-static STATIC $<TARGET_OBJECTS:common_ssl_obj_static> MQTTAsync.c SSLSocket.c)
|
||||
|
||||
SET_TARGET_PROPERTIES(
|
||||
paho-mqtt3cs-static paho-mqtt3as-static PROPERTIES
|
||||
VERSION ${CLIENT_VERSION}
|
||||
SOVERSION ${PAHO_VERSION_MAJOR}
|
||||
COMPILE_DEFINITIONS "OPENSSL=1"
|
||||
LINK_FLAGS "MQTT_EXPORTS")
|
||||
COMPILE_DEFINITIONS "OPENSSL=1;PAHO_MQTT_STATIC=1")
|
||||
IF (NOT WIN32)
|
||||
SET_TARGET_PROPERTIES(paho-mqtt3cs-static PROPERTIES OUTPUT_NAME paho-mqtt3cs)
|
||||
SET_TARGET_PROPERTIES(paho-mqtt3as-static PROPERTIES OUTPUT_NAME paho-mqtt3as)
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@
|
|||
#define EXPORTDECLARATIONS_H
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
# if defined(MQTT_EXPORTS)
|
||||
# if defined(PAHO_MQTT_EXPORTS)
|
||||
# define LIBMQTT_API __declspec(dllexport)
|
||||
# elif defined(MQTT_DIRECT)
|
||||
# define LIBMQTT_API
|
||||
# else
|
||||
# elif defined(PAHO_MQTT_IMPORTS)
|
||||
# define LIBMQTT_API __declspec(dllimport)
|
||||
# endif
|
||||
# else
|
||||
# define LIBMQTT_API
|
||||
# endif
|
||||
#else
|
||||
# if defined(MQTT_EXPORTS)
|
||||
# define LIBMQTT_API __attribute__ ((visibility ("default")))
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ void MQTTAsync_cleanup(void)
|
|||
CloseHandle(mqttasync_mutex);
|
||||
}
|
||||
|
||||
#if defined(PAHO_BUILD_STATIC)
|
||||
#if defined(PAHO_MQTT_STATIC)
|
||||
// Global variable for one-time initialization structure
|
||||
INIT_ONCE g_InitOnce = INIT_ONCE_STATIC_INIT; // Static initialization
|
||||
|
||||
|
|
@ -565,7 +565,7 @@ int MQTTAsync_createWithOptions(MQTTAsync* handle, const char* serverURI, const
|
|||
int rc = 0;
|
||||
MQTTAsyncs *m = NULL;
|
||||
|
||||
#if (defined(_WIN32) || defined(_WIN64)) && defined(PAHO_BUILD_STATIC)
|
||||
#if (defined(_WIN32) || defined(_WIN64)) && defined(PAHO_MQTT_STATIC)
|
||||
OpenEventHandleSync(); /* intializes mutexes once. Must come before FUNC_ENTRY */
|
||||
#endif
|
||||
FUNC_ENTRY;
|
||||
|
|
|
|||
|
|
@ -115,7 +115,6 @@ extern mutex_type log_mutex;
|
|||
int MQTTClient_init(void)
|
||||
{
|
||||
DWORD rc = 0;
|
||||
|
||||
if (mqttclient_mutex == NULL)
|
||||
{
|
||||
if ((mqttclient_mutex = CreateMutex(NULL, 0, NULL)) == NULL)
|
||||
|
|
@ -191,7 +190,7 @@ void MQTTClient_cleanup(void)
|
|||
CloseHandle(mqttclient_mutex);
|
||||
}
|
||||
|
||||
#if defined(PAHO_BUILD_STATIC)
|
||||
#if defined(PAHO_MQTT_STATIC)
|
||||
/* Global variable for one-time initialization structure */
|
||||
static INIT_ONCE g_InitOnce = INIT_ONCE_STATIC_INIT; /* Static initialization */
|
||||
static PVOID lpContext; /* used by caller to InitOnceFunction */
|
||||
|
|
@ -368,7 +367,7 @@ int MQTTClient_createWithOptions(MQTTClient* handle, const char* serverURI, cons
|
|||
int rc = 0;
|
||||
MQTTClients *m = NULL;
|
||||
|
||||
#if (defined(_WIN32) || defined(_WIN64)) && defined(PAHO_BUILD_STATIC)
|
||||
#if (defined(_WIN32) || defined(_WIN64)) && defined(PAHO_MQTT_STATIC)
|
||||
/* intializes mutexes once. Must come before FUNC_ENTRY */
|
||||
BOOL bStatus = InitOnceExecuteOnce(&g_InitOnce, InitOnceFunction, NULL, &lpContext);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#*******************************************************************************
|
||||
# Copyright (c) 2015, 2017 logi.cals GmbH and others
|
||||
# Copyright (c) 2015, 2020 logi.cals GmbH and others
|
||||
#
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License v1.0
|
||||
|
|
@ -36,6 +36,10 @@ ADD_EXECUTABLE(paho_c_sub paho_c_sub.c pubsub_opts.c)
|
|||
ADD_EXECUTABLE(paho_cs_pub paho_cs_pub.c pubsub_opts.c)
|
||||
ADD_EXECUTABLE(paho_cs_sub paho_cs_sub.c pubsub_opts.c)
|
||||
|
||||
SET_TARGET_PROPERTIES(
|
||||
paho_c_pub paho_c_sub paho_cs_pub paho_cs_sub PROPERTIES
|
||||
COMPILE_DEFINITIONS "PAHO_MQTT_IMPORTS=1")
|
||||
|
||||
TARGET_LINK_LIBRARIES(paho_c_pub paho-mqtt3as)
|
||||
TARGET_LINK_LIBRARIES(paho_c_sub paho-mqtt3as)
|
||||
TARGET_LINK_LIBRARIES(paho_cs_pub paho-mqtt3cs)
|
||||
|
|
@ -47,6 +51,10 @@ ADD_EXECUTABLE(MQTTClient_subscribe MQTTClient_subscribe.c)
|
|||
ADD_EXECUTABLE(MQTTClient_publish MQTTClient_publish.c)
|
||||
ADD_EXECUTABLE(MQTTClient_publish_async MQTTClient_publish_async.c)
|
||||
|
||||
SET_TARGET_PROPERTIES(
|
||||
MQTTAsync_subscribe MQTTAsync_publish MQTTClient_subscribe MQTTClient_publish MQTTClient_publish_async PROPERTIES
|
||||
COMPILE_DEFINITIONS "PAHO_MQTT_IMPORTS=1")
|
||||
|
||||
TARGET_LINK_LIBRARIES(MQTTAsync_subscribe paho-mqtt3a)
|
||||
TARGET_LINK_LIBRARIES(MQTTAsync_publish paho-mqtt3a)
|
||||
TARGET_LINK_LIBRARIES(MQTTClient_subscribe paho-mqtt3c)
|
||||
|
|
@ -73,6 +81,8 @@ ADD_EXECUTABLE(paho_c_sub_static paho_c_sub.c pubsub_opts.c)
|
|||
ADD_EXECUTABLE(paho_cs_pub_static paho_cs_pub.c pubsub_opts.c)
|
||||
ADD_EXECUTABLE(paho_cs_sub_static paho_cs_sub.c pubsub_opts.c)
|
||||
|
||||
|
||||
|
||||
TARGET_LINK_LIBRARIES(paho_c_pub_static paho-mqtt3as-static)
|
||||
TARGET_LINK_LIBRARIES(paho_c_sub_static paho-mqtt3as-static)
|
||||
TARGET_LINK_LIBRARIES(paho_cs_pub_static paho-mqtt3cs-static)
|
||||
|
|
|
|||
Loading…
Reference in New Issue