Merge branch 'master' into mqtt_client

This commit is contained in:
2026-03-26 12:57:03 +03:00
58 changed files with 887 additions and 1393 deletions

View File

@@ -5,9 +5,9 @@ if (POLICY CMP0177)
endif()
project(PIP)
set(PIP_MAJOR 5)
set(PIP_MINOR 6)
set(PIP_MINOR 7)
set(PIP_REVISION 0)
set(PIP_SUFFIX )
set(PIP_SUFFIX _alpha)
set(PIP_COMPANY SHS)
set(PIP_DOMAIN org.SHS)
@@ -67,11 +67,13 @@ set(PIP_DLL_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE STRING "")
option(ICU "ICU support for convert codepages" ${_ICU_DEFAULT})
option(STD_IOSTREAM "Building with std iostream operators support" OFF)
option(INTROSPECTION "Build with introspection" OFF)
option(TESTS "Build tests and perform their before install step" OFF)
option(TESTS "Build tests" OFF)
option(TESTS_RUN "Run tests before install step" OFF)
option(COVERAGE "Build project with coverage info" OFF)
option(PIP_FFTW_F "Support fftw module for float" ON)
option(PIP_FFTW_L "Support fftw module for long double" ON)
option(PIP_FFTW_Q "Support fftw module for quad double" OFF)
option(PIP_MANUAL_TEST "Build dev test (main.cpp)" OFF)
set(PIP_UTILS 1)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_STANDARD 11)
@@ -96,7 +98,7 @@ set(PIP_TESTS_LIST)
set(PIP_EXPORTS)
set(PIP_3PL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rd")
set(PIP_SRC_MODULES "console;crypt;compress;usb;fftw;opencl;io_utils;client_server;cloud;lua;http_client;http_server")
set(PIP_SRC_MODULES "console;crypt;compress;usb;fftw;opencl;io_utils;client_server;cloud;lua;http_client;http_server;mqtt_client")
foreach(_m ${PIP_SRC_MODULES})
set(PIP_MSG_${_m} "no")
string(TOUPPER "${_m}" _mu)
@@ -360,10 +362,13 @@ endif()
if(WIN32)
add_definitions(-DPSAPI_VERSION=1)
if(${C_COMPILER} STREQUAL "cl.exe")
set(CMAKE_CXX_FLAGS "/O2 /Ob2 /Ot /W0")
set(CMAKE_CXX_FLAGS "/O2 /Ob2 /Ot /W0 /EH-")
endif()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
if (NOT DEFINED ANDROID_PLATFORM)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
endif()
if(DEFINED ENV{QNX_HOST} OR PIP_FREERTOS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-32")
endif()
@@ -382,28 +387,6 @@ endif()
add_subdirectory("3rd/pcre2" EXCLUDE_FROM_ALL)
list(APPEND LIBS_MAIN pcre2-16-static)
#set(MQTT_C_OpenSSL_SUPPORT OFF CACHE BOOL "" FORCE)
#set(MQTT_C_MbedTLS_SUPPORT OFF CACHE BOOL "" FORCE)
#set(MQTT_C_BearSSL_SUPPORT OFF CACHE BOOL "" FORCE)
#set(MQTT_C_EXAMPLES OFF CACHE BOOL "" FORCE)
#set(MQTT_C_INSTALL_EXAMPLES OFF CACHE BOOL "" FORCE)
#set(MQTT_C_TESTS OFF CACHE BOOL "" FORCE)
set(PAHO_WITH_SSL OFF CACHE BOOL "" FORCE)
set(PAHO_WITH_LIBRESSL OFF CACHE BOOL "" FORCE)
set(PAHO_WITH_LIBUUID OFF CACHE BOOL "" FORCE)
set(PAHO_BUILD_SHARED OFF CACHE BOOL "" FORCE)
set(PAHO_BUILD_STATIC ON CACHE BOOL "" FORCE)
set(PAHO_BUILD_DOCUMENTATION OFF CACHE BOOL "" FORCE)
set(PAHO_BUILD_SAMPLES OFF CACHE BOOL "" FORCE)
set(PAHO_BUILD_DEB_PACKAGE OFF CACHE BOOL "" FORCE)
set(PAHO_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
set(PAHO_ENABLE_CPACK OFF CACHE BOOL "" FORCE)
set(PAHO_HIGH_PERFORMANCE OFF CACHE BOOL "" FORCE)
set(PAHO_USE_SELECT OFF CACHE BOOL "" FORCE)
set(PAHO_NO_TCP_NODELAY OFF CACHE BOOL "" FORCE)
add_subdirectory("3rd/paho.mqtt.c" EXCLUDE_FROM_ALL)
list(APPEND LIBS_MAIN eclipse-paho-mqtt-c::paho-mqtt3c-static)
pip_module(main "${LIBS_MAIN}" "PIP main library" "" "${PIP_3PL_DIR}/BLAKE2;${PIP_3PL_DIR}/SipHash" "")
generate_export_header(pip)
@@ -607,6 +590,34 @@ if (NOT CROSSTOOLS)
endif()
if (PIP_BUILD_MQTT_CLIENT)
# paho.mqtt.c
#set(MQTT_C_OpenSSL_SUPPORT OFF CACHE BOOL "" FORCE)
#set(MQTT_C_MbedTLS_SUPPORT OFF CACHE BOOL "" FORCE)
#set(MQTT_C_BearSSL_SUPPORT OFF CACHE BOOL "" FORCE)
#set(MQTT_C_EXAMPLES OFF CACHE BOOL "" FORCE)
#set(MQTT_C_INSTALL_EXAMPLES OFF CACHE BOOL "" FORCE)
#set(MQTT_C_TESTS OFF CACHE BOOL "" FORCE)
set(PAHO_WITH_SSL OFF CACHE BOOL "" FORCE)
set(PAHO_WITH_LIBRESSL OFF CACHE BOOL "" FORCE)
set(PAHO_WITH_LIBUUID OFF CACHE BOOL "" FORCE)
set(PAHO_BUILD_SHARED OFF CACHE BOOL "" FORCE)
set(PAHO_BUILD_STATIC ON CACHE BOOL "" FORCE)
set(PAHO_BUILD_DOCUMENTATION OFF CACHE BOOL "" FORCE)
set(PAHO_BUILD_SAMPLES OFF CACHE BOOL "" FORCE)
set(PAHO_BUILD_DEB_PACKAGE OFF CACHE BOOL "" FORCE)
set(PAHO_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
set(PAHO_ENABLE_CPACK OFF CACHE BOOL "" FORCE)
set(PAHO_HIGH_PERFORMANCE OFF CACHE BOOL "" FORCE)
set(PAHO_USE_SELECT OFF CACHE BOOL "" FORCE)
set(PAHO_NO_TCP_NODELAY OFF CACHE BOOL "" FORCE)
add_subdirectory("3rd/paho.mqtt.c" EXCLUDE_FROM_ALL)
pip_module(mqtt_client eclipse-paho-mqtt-c::paho-mqtt3c-static "PIP MQTT Client" "" "" " (internal)")
endif()
# Test program
if(PIP_UTILS)
@@ -614,12 +625,14 @@ if (NOT CROSSTOOLS)
#target_link_libraries(pip_plugin pip)
if (NOT DEFINED ANDROID_PLATFORM)
if(microhttpd_FOUND AND curl_FOUND)
add_executable(pip_test "main.cpp")
target_link_libraries(pip_test pip pip_io_utils pip_client_server pip_http_server pip_http_client)
if(sodium_FOUND)
add_executable(pip_cloud_test "main_picloud_test.cpp")
target_link_libraries(pip_cloud_test pip_cloud)
if (PIP_MANUAL_TEST)
if(microhttpd_FOUND AND curl_FOUND)
add_executable(pip_test "main.cpp")
target_link_libraries(pip_test pip pip_io_utils pip_client_server pip_http_server pip_http_client pip_mqtt_client)
if(sodium_FOUND)
add_executable(pip_cloud_test "main_picloud_test.cpp")
target_link_libraries(pip_cloud_test pip_cloud)
endif()
endif()
endif()
endif()
@@ -756,7 +769,7 @@ if ((NOT PIP_FREERTOS) AND (NOT CROSSTOOLS))
find_package(Doxygen)
if(DOXYGEN_FOUND)
set(DOXY_DEFINES "${PIP_EXPORTS}")
foreach (_m "console" "usb" "compress" "crypt" "client_server" "cloud" "fftw" "opencl" "io_utils" "lua" "http_server" "http_client")
foreach (_m "console" "usb" "compress" "crypt" "client_server" "cloud" "fftw" "opencl" "io_utils" "lua" "http_server" "http_client" "mqtt_client")
string(TOUPPER "${_m}" _mdef)
list(APPEND DOXY_DEFINES "PIP_${_mdef}_EXPORT")
endforeach()
@@ -845,6 +858,9 @@ if (PIP_TESTS_LIST)
foreach(_test ${PIP_TESTS_LIST})
message(" * ${_test}")
endforeach()
if (TESTS_RUN)
message("TESTS_RUN ON -> Run tests before install step")
endif()
else()
message(" Tests: skip (tests off)")
endif()