Page MenuHomePhorge

pahomqttc.cmake
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

pahomqttc.cmake

#
# Builds the paho.mqtt.c library
#
# This step is necessary to provide the libraries and
# headers for paho.mqtt.cpp project
#
include(ExternalProject)
set(PAHOMQTTC_DIR ${CMAKE_SOURCE_DIR}/modules/paho.mqtt.c)
set(PAHOMQTTC_TARGET_DIR ${CMAKE_BINARY_DIR}/modules/paho.mqtt.c)
if( WIN32 )
set(PAHOMQTTC_CLIENT_STATIC_LIB ${PAHOMQTTC_TARGET_DIR}/lib/paho-mqtt3c-static.lib)
set(PAHOMQTTC_ASYNC_STATIC_LIB ${PAHOMQTTC_TARGET_DIR}/lib/paho-mqtt3a-static.lib)
set(PAHOMQTTC_INSTALL_BYPRODUCTS ${PAHOMQTTC_CLIENT_STATIC_LIB} ${PAHOMQTTC_ASYNC_STATIC_LIB})
else()
# '-static' suffix is removed from library names if not win32.
# That is to be fixed because paho.mqtt.cpp expects the suffix.
set(PAHOMQTTC_CLIENT_STATIC_WRONGLIB ${PAHOMQTTC_TARGET_DIR}/lib/libpaho-mqtt3c.a)
set(PAHOMQTTC_ASYNC_STATIC_WRONGLIB ${PAHOMQTTC_TARGET_DIR}/lib/libpaho-mqtt3a.a)
set(PAHOMQTTC_CLIENT_STATIC_LIB ${PAHOMQTTC_TARGET_DIR}/lib/libpaho-mqtt3c-static.a)
set(PAHOMQTTC_ASYNC_STATIC_LIB ${PAHOMQTTC_TARGET_DIR}/lib/libpaho-mqtt3a-static.a)
set(PAHOMQTTC_INSTALL_BYPRODUCTS ${PAHOMQTTC_CLIENT_STATIC_WRONGLIB} ${PAHOMQTTC_ASYNC_STATIC_WRONGLIB})
endif()
set(PAHOMQTTC_BYPRODUCTS ${PAHOMQTTC_CLIENT_STATIC_LIB} ${PAHOMQTTC_ASYNC_STATIC_LIB})
file(MAKE_DIRECTORY ${PAHOMQTTC_TARGET_DIR}/include)
ExternalProject_Add(
pahomqttc
PREFIX ${PAHOMQTTC_TARGET_DIR}
SOURCE_DIR ${PAHOMQTTC_DIR}
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PAHOMQTTC_TARGET_DIR}
CMAKE_ARGS -DPAHO_WITH_SSL=${PAHO_BUILD_WITH_SSL}
CMAKE_ARGS -DPAHO_BUILD_STATIC=${PAHO_BUILD_STATIC}
CMAKE_ARGS -DPAHO_ENABLE_TESTING=${PAHO_ENABLE_TESTING}
BUILD_COMMAND cmake --build . --config $<CONFIG>
INSTALL_COMMAND cmake --install . --config $<CONFIG>
BYPRODUCTS ${PAHOMQTTC_INSTALL_BYPRODUCTS}
)
if( NOT WIN32 )
ExternalProject_Add_Step(pahomqttc libfix
COMMAND ${CMAKE_COMMAND} -E copy ${PAHOMQTTC_CLIENT_STATIC_WRONGLIB} ${PAHOMQTTC_CLIENT_STATIC_LIB}
COMMAND ${CMAKE_COMMAND} -E copy ${PAHOMQTTC_ASYNC_STATIC_WRONGLIB} ${PAHOMQTTC_ASYNC_STATIC_LIB}
COMMENT "Fixing paho.mqtt.c static library names"
DEPENDS ${PAHOMQTTC_INSTALL_BYPRODUCTS}
BYPRODUCTS ${PAHOMQTTC_BYPRODUCTS}
)
endif()
# The paho.mqtt.cpp project needs to know where the paho.mqtt.c libraries
# and headers are installed, so we provide this information in an additional
# cmake file which is passed to the paho.mqtt.cpp project build
set(PAHOMQTTC_INCLUDE_DIR ${PAHOMQTTC_TARGET_DIR}/include)
set(PAHOMQTTC_LIBRARY_DIR ${PAHOMQTTC_TARGET_DIR}/lib)
configure_file(${CMAKE_SOURCE_DIR}/cmake/fix_pahomqttcpp.cmake.in
${CMAKE_BINARY_DIR}/cmake/fix_pahomqttcpp.cmake @ONLY)
add_library(paho-mqttc3::MQTTClient STATIC IMPORTED GLOBAL)
set_target_properties(paho-mqttc3::MQTTClient PROPERTIES
IMPORTED_LOCATION ${PAHOMQTTC_CLIENT_STATIC_LIB}
INTERFACE_INCLUDE_DIRECTORIES ${PAHOMQTTC_TARGET_DIR}/include)
add_library(paho-mqttc3::MQTTAsync STATIC IMPORTED GLOBAL)
set_target_properties(paho-mqttc3::MQTTAsync PROPERTIES
IMPORTED_LOCATION ${PAHOMQTTC_ASYNC_STATIC_LIB}
INTERFACE_INCLUDE_DIRECTORIES ${PAHOMQTTC_TARGET_DIR}/include)
if( NOT WIN32 )
# pthread is used and the link dependency needs to be explicitly specified here
set_target_properties(paho-mqttc3::MQTTClient paho-mqttc3::MQTTAsync PROPERTIES
INTERFACE_LINK_LIBRARIES pthread)
else()
# WIN32
# winsocks are used and the link dependency needs to be explicitly specified here
set_target_properties(paho-mqttc3::MQTTClient paho-mqttc3::MQTTAsync PROPERTIES
INTERFACE_LINK_LIBRARIES ws2_32)
endif()

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 1, 9:39 PM (1 d, 22 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
277044
Default Alt Text
pahomqttc.cmake (3 KB)

Event Timeline