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)

Reply via email to