This is an automated email from the ASF dual-hosted git repository. szaszm pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 18b90880259b428d6da88f44723354aa2b2ee372 Author: Adam Markovics <[email protected]> AuthorDate: Wed Sep 8 20:23:39 2021 +0200 MINIFICPP-1545 fix Paho MQTT C rebuilds Closes #1163 Signed-off-by: Marton Szasz <[email protected]> --- CMakeLists.txt | 2 - cmake/BundledLibreSSL.cmake | 6 +- cmake/BundledPahoMqttC.cmake | 78 ---------------------- .../mqtt/CMakeLists.txt => cmake/PahoMqttC.cmake | 35 ++++++---- extensions/mqtt/CMakeLists.txt | 3 +- thirdparty/paho.mqtt.c/paho.mqtt.c.patch | 13 ---- 6 files changed, 28 insertions(+), 109 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 530af57..ee3053f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -473,8 +473,6 @@ endif() ## Create MQTT Extension if(ENABLE_ALL OR ENABLE_MQTT) - include(BundledPahoMqttC) - use_bundled_pahomqttc(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) createExtension(MQTT-EXTENSIONS "MQTT EXTENSIONS" "This Enables MQTT functionality including PublishMQTT/ConsumeMQTT" "extensions/mqtt" "${TEST_DIR}/mqtt-tests") endif() diff --git a/cmake/BundledLibreSSL.cmake b/cmake/BundledLibreSSL.cmake index 02500d0..6ecc974 100644 --- a/cmake/BundledLibreSSL.cmake +++ b/cmake/BundledLibreSSL.cmake @@ -61,13 +61,15 @@ function(use_libre_ssl SOURCE_DIR BINARY_DIR) set(OPENSSL_FOUND "YES" CACHE STRING "" FORCE) set(OPENSSL_INCLUDE_DIR "${LIBRESSL_BIN_DIR}/include" CACHE STRING "" FORCE) set(OPENSSL_LIBRARIES ${LIBRESSL_LIBRARIES_LIST} CACHE STRING "" FORCE) + set(OPENSSL_CRYPTO_LIBRARY "${LIBRESSL_BIN_DIR}/lib/${BYPRODUCT_PREFIX}crypto${BYPRODUCT_SUFFIX}" CACHE STRING "" FORCE) + set(OPENSSL_SSL_LIBRARY "${LIBRESSL_BIN_DIR}/lib/${BYPRODUCT_PREFIX}ssl${BYPRODUCT_SUFFIX}" CACHE STRING "" FORCE) # Set exported variables for FindPackage.cmake set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_OPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}" CACHE STRING "" FORCE) string(REPLACE ";" "%" OPENSSL_LIBRARIES_EXPORT "${OPENSSL_LIBRARIES}") set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_OPENSSL_LIBRARIES=${OPENSSL_LIBRARIES_EXPORT}" CACHE STRING "" FORCE) - set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_OPENSSL_CRYPTO_LIBRARY=${LIBRESSL_BIN_DIR}/lib/${BYPRODUCT_PREFIX}crypto${BYPRODUCT_SUFFIX}" CACHE STRING "" FORCE) - set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_OPENSSL_SSL_LIBRARY=${LIBRESSL_BIN_DIR}/lib/${BYPRODUCT_PREFIX}ssl${BYPRODUCT_SUFFIX}" CACHE STRING "" FORCE) + set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_OPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY}" CACHE STRING "" FORCE) + set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_OPENSSL_SSL_LIBRARY=${OPENSSL_SSL_LIBRARY}" CACHE STRING "" FORCE) # Create imported targets file(MAKE_DIRECTORY ${OPENSSL_INCLUDE_DIR}) diff --git a/cmake/BundledPahoMqttC.cmake b/cmake/BundledPahoMqttC.cmake deleted file mode 100644 index 8442984..0000000 --- a/cmake/BundledPahoMqttC.cmake +++ /dev/null @@ -1,78 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -function(use_bundled_pahomqttc SOURCE_DIR BINARY_DIR) - # Define patch step - set(PATCH_FILE "${SOURCE_DIR}/thirdparty/paho.mqtt.c/paho.mqtt.c.patch") - set(PAHO_MQTT_C_PATCH_COMMAND "${Patch_EXECUTABLE}" -p1 -R -s -f --dry-run -i "${PATCH_FILE}" || "${Patch_EXECUTABLE}" -p1 -N -i "${PATCH_FILE}") - - # Define byproducts - if (WIN32) - set(BYPRODUCT "lib/libpaho-mqtt3cs-static.lib") - else() - include(GNUInstallDirs) - set(BYPRODUCT "${CMAKE_INSTALL_LIBDIR}/libpaho-mqtt3cs.a") - endif() - - # Set build options - set(PAHOMQTTC_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS} - "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/paho.mqtt.c-install" - -DPAHO_BUILD_STATIC=TRUE - -DPAHO_BUILD_SHARED=FALSE - -DPAHO_ENABLE_TESTING=FALSE) - if (OPENSSL_OFF) - list(APPEND PAHOMQTTC_CMAKE_ARGS -DPAHO_WITH_SSL=FALSE) - else() - list(APPEND PAHOMQTTC_CMAKE_ARGS -DPAHO_WITH_SSL=TRUE) - endif() - - append_third_party_passthrough_args(PAHOMQTTC_CMAKE_ARGS "${PAHOMQTTC_CMAKE_ARGS}") - - # Build project - ExternalProject_Add( - paho.mqtt.c-external - GIT_REPOSITORY "https://github.com/eclipse/paho.mqtt.c.git" - GIT_TAG "3b7ae6348bc917d42c04efa962e4868c09bbde9f" # Once tagged as v1.3.9 release, but tags may move - SOURCE_DIR "${BINARY_DIR}/thirdparty/paho.mqtt.c-src" - LIST_SEPARATOR % # This is needed for passing semicolon-separated lists - CMAKE_ARGS ${PAHOMQTTC_CMAKE_ARGS} - PATCH_COMMAND ${PAHO_MQTT_C_PATCH_COMMAND} - BUILD_BYPRODUCTS "${BINARY_DIR}/thirdparty/paho.mqtt.c-install/${BYPRODUCT}" - EXCLUDE_FROM_ALL TRUE - ) - - # Set dependencies - if (NOT OPENSSL_OFF) - add_dependencies(paho.mqtt.c-external OpenSSL::SSL OpenSSL::Crypto) - endif() - - # Set variables - set(PAHOMQTTC_FOUND "YES" CACHE STRING "" FORCE) - set(PAHOMQTTC_INCLUDE_DIR "${BINARY_DIR}/thirdparty/paho.mqtt.c-install/include" CACHE STRING "" FORCE) - set(PAHOMQTTC_LIBRARY "${BINARY_DIR}/thirdparty/paho.mqtt.c-install/${BYPRODUCT}" CACHE STRING "" FORCE) - set(PAHOMQTTC_LIBRARIES ${PAHOMQTTC_LIBRARY} CACHE STRING "" FORCE) - - # Create imported targets - add_library(paho.mqtt.c STATIC IMPORTED) - set_target_properties(paho.mqtt.c PROPERTIES IMPORTED_LOCATION "${PAHOMQTTC_LIBRARY}") - add_dependencies(paho.mqtt.c paho.mqtt.c-external) - file(MAKE_DIRECTORY ${PAHOMQTTC_INCLUDE_DIR}) - set_property(TARGET paho.mqtt.c APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PAHOMQTTC_INCLUDE_DIR}) - if (NOT OPENSSL_OFF) - set_property(TARGET paho.mqtt.c APPEND PROPERTY INTERFACE_LINK_LIBRARIES OpenSSL::SSL OpenSSL::Crypto Threads::Threads) - endif() -endfunction(use_bundled_pahomqttc) diff --git a/extensions/mqtt/CMakeLists.txt b/cmake/PahoMqttC.cmake similarity index 50% copy from extensions/mqtt/CMakeLists.txt copy to cmake/PahoMqttC.cmake index 22d728f..1199df3 100644 --- a/extensions/mqtt/CMakeLists.txt +++ b/cmake/PahoMqttC.cmake @@ -1,4 +1,3 @@ -# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -15,21 +14,31 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -# - -include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt) -include_directories(./controllerservice ./processors ./protocol ../../libminifi/include ../../libminifi/include/core) -file(GLOB SOURCES "*.cpp" "protocol/*.cpp" "processors/*.cpp" "controllerservice/*.cpp") +include(FetchContent) -add_library(minifi-mqtt-extensions STATIC ${SOURCES}) -set_property(TARGET minifi-mqtt-extensions PROPERTY POSITION_INDEPENDENT_CODE ON) +# Set build options +set(PAHO_BUILD_STATIC ON CACHE BOOL "" FORCE) +set(PAHO_BUILD_SHARED OFF CACHE BOOL "" FORCE) +set(PAHO_ENABLE_TESTING OFF CACHE BOOL "" FORCE) -target_link_libraries(minifi-mqtt-extensions ${LIBMINIFI}) -target_link_libraries(minifi-mqtt-extensions paho.mqtt.c) +if (OPENSSL_OFF) + set(PAHO_WITH_SSL OFF CACHE BOOL "" FORCE) +else() + set(PAHO_WITH_SSL ON CACHE BOOL "" FORCE) +endif() +FetchContent_Declare( + paho.mqtt.c-external + URL "https://github.com/eclipse/paho.mqtt.c/archive/refs/tags/v1.3.9.tar.gz" + URL_HASH "SHA256=386c9b5fa1cf6d0d516db12d57fd8f6a410dd0fdc5e9a2da870aae437a2535ed" +) -SET (MQTT-EXTENSIONS minifi-mqtt-extensions PARENT_SCOPE) +FetchContent_MakeAvailable(paho.mqtt.c-external) -register_extension(minifi-mqtt-extensions) -register_extension_linter(minifi-mqtt-extensions-linter) +# Set dependencies and target to link to +if (NOT OPENSSL_OFF) + add_library(paho.mqtt.c ALIAS paho-mqtt3cs-static) +else() + add_library(paho.mqtt.c ALIAS paho-mqtt3c-static) +endif() diff --git a/extensions/mqtt/CMakeLists.txt b/extensions/mqtt/CMakeLists.txt index 22d728f..8483136 100644 --- a/extensions/mqtt/CMakeLists.txt +++ b/extensions/mqtt/CMakeLists.txt @@ -26,8 +26,9 @@ add_library(minifi-mqtt-extensions STATIC ${SOURCES}) set_property(TARGET minifi-mqtt-extensions PROPERTY POSITION_INDEPENDENT_CODE ON) target_link_libraries(minifi-mqtt-extensions ${LIBMINIFI}) -target_link_libraries(minifi-mqtt-extensions paho.mqtt.c) +include(PahoMqttC) +target_link_libraries(minifi-mqtt-extensions paho.mqtt.c) SET (MQTT-EXTENSIONS minifi-mqtt-extensions PARENT_SCOPE) diff --git a/thirdparty/paho.mqtt.c/paho.mqtt.c.patch b/thirdparty/paho.mqtt.c/paho.mqtt.c.patch deleted file mode 100644 index 2bedc37..0000000 --- a/thirdparty/paho.mqtt.c/paho.mqtt.c.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0ce3649..3981b6b 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -23,7 +23,7 @@ MESSAGE(STATUS "CMake version: " ${CMAKE_VERSION}) - MESSAGE(STATUS "CMake system name: " ${CMAKE_SYSTEM_NAME}) - - SET(CMAKE_SCRIPTS "${CMAKE_SOURCE_DIR}/cmake") --SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules") -+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules") - - ## build settings - SET(PAHO_VERSION_MAJOR 1)
