You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ab...@apache.org on 2019/09/23 15:06:17 UTC

[nifi-minifi-cpp] branch master updated: MINIFICPP-1024 - Fix third party dependencies

This is an automated email from the ASF dual-hosted git repository.

aboda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git


The following commit(s) were added to refs/heads/master by this push:
     new 8719bda  MINIFICPP-1024 - Fix third party dependencies
8719bda is described below

commit 8719bdad38389e710f8edf844a5478ddfc0fec90
Author: Daniel Bakai <ba...@gmail.com>
AuthorDate: Thu Sep 19 13:02:42 2019 +0200

    MINIFICPP-1024 - Fix third party dependencies
    
    Signed-off-by: Arpad Boda <ab...@gapache.org>
    
    This closes #649
---
 CMakeLists.txt                            | 24 +++++++++++++++++++++--
 extensions/librdkafka/CMakeLists.txt      | 32 +++++++++++++++++++++----------
 thirdparty/paho.mqtt.c/src/CMakeLists.txt | 27 +++++---------------------
 3 files changed, 49 insertions(+), 34 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9f946f2..ec02734 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -196,7 +196,7 @@ if (NOT OPENSSL_OFF)
 	include(LibreSSL)
 	use_libre_ssl("${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}")
 	list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/ssl")
-	
+
 	find_package (OpenSSL REQUIRED)
 
 	if (OPENSSL_FOUND)
@@ -294,11 +294,18 @@ endif()
   else()
   endif()
 
+  list(APPEND CURL_CMAKE_MODULE_PATH_PASSTHROUGH_LIST "${CMAKE_SOURCE_DIR}/cmake/ssl")
+  if(WIN32 OR NOT USE_SYSTEM_ZLIB)
+	  list(APPEND CURL_CMAKE_MODULE_PATH_PASSTHROUGH_LIST "${CMAKE_SOURCE_DIR}/cmake/zlib/dummy")
+  endif()
+  string(REPLACE ";" "%" CURL_CMAKE_MODULE_PATH_PASSTHROUGH "${CURL_CMAKE_MODULE_PATH_PASSTHROUGH_LIST}")
+
   ExternalProject_Add(
     curl-external
     GIT_REPOSITORY "https://github.com/curl/curl.git"
     GIT_TAG "f3294d9d86e6a7915a967efff2842089b8b0d071"  # Version 7.64.0
     SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-src"
+    LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
     CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
                "-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-install"
                 -DCMAKE_POSITION_INDEPENDENT_CODE=ON
@@ -310,6 +317,12 @@ endif()
                 -DCMAKE_USE_OPENSSL=ON
                 "-DLIBRESSL_BIN_DIR=${LIBRESSL_BIN_DIR}"
                 "-DLIBRESSL_SRC_DIR=${LIBRESSL_SRC_DIR}"
+                "-DBYPRODUCT_PREFIX=${BYPRODUCT_PREFIX}"
+                "-DBYPRODUCT_SUFFIX=${BYPRODUCT_SUFFIX}"
+                "-DZLIB_BYPRODUCT_INCLUDE=${ZLIB_BYPRODUCT_INCLUDE}"
+                "-DZLIB_BYPRODUCT=${ZLIB_BYPRODUCT}"
+                "-DZLIB_LIBRARY=${ZLIB_LIBRARY}"
+                "-DZLIB_LIBRARIES=${ZLIB_LIBRARIES}"
                 -DCURL_DISABLE_CRYPTO_AUTH=ON
                 -DCMAKE_USE_LIBSSH2=OFF
                 "-DCMAKE_DEBUG_POSTFIX="
@@ -320,7 +333,7 @@ endif()
                 -DHAVE_POLL_FINE_EXITCODE=0
                 -DHAVE_FSETXATTR_5=0
                 -DHAVE_FSETXATTR_5__TRYRUN_OUTPUT=""
-               "-DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/cmake/ssl"
+               "-DCMAKE_MODULE_PATH=${CURL_CMAKE_MODULE_PATH_PASSTHROUGH}"
                "-DCMAKE_C_FLAGS=${CURL_C_FLAGS}"
                "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
                "-DCMAKE_CXX_FLAGS=${CURL_CXX_FLAGS}"
@@ -329,6 +342,9 @@ endif()
   )
 
   add_dependencies(curl-external libressl-portable)
+  if(WIN32 OR NOT USE_SYSTEM_ZLIB)
+	  add_dependencies(curl-external zlib-external)
+  endif()
 
   set(CURL_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/curl/" CACHE STRING "" FORCE)
   set(CURL_BIN_DIR "${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-install/" CACHE STRING "" FORCE)
@@ -472,6 +488,10 @@ endif(WIN32)
 option(ENABLE_MQTT "Enables the mqtt extension." OFF)
 if(ENABLE_ALL OR ENABLE_MQTT)
         createExtension(MQTT-EXTENSIONS "MQTT EXTENSIONS" "This Enables MQTT functionality including PublishMQTT/ConsumeMQTT" "extensions/mqtt" "${TEST_DIR}/mqtt-tests" "TRUE" "thirdparty/paho.mqtt.c")
+        add_dependencies(paho-mqtt3cs libressl-portable)
+        add_dependencies(paho-mqtt3as libressl-portable)
+        add_dependencies(paho-mqtt3cs-static libressl-portable)
+        add_dependencies(paho-mqtt3as-static libressl-portable)
 endif()
 
 if(ENABLE_ALL OR ENABLE_JNI)
diff --git a/extensions/librdkafka/CMakeLists.txt b/extensions/librdkafka/CMakeLists.txt
index 6b8fbb2..769b0e3 100644
--- a/extensions/librdkafka/CMakeLists.txt
+++ b/extensions/librdkafka/CMakeLists.txt
@@ -38,13 +38,17 @@ endif()
   endif()
 
 list(APPEND CMAKE_MODULE_PATH_PASSTHROUGH_LIST "${CMAKE_SOURCE_DIR}/cmake/ssl")
-list(APPEND CMAKE_MODULE_PATH_PASSTHROUGH_LIST "${CMAKE_SOURCE_DIR}/cmake/zlib/dummy")
-    
+if(WIN32 OR NOT USE_SYSTEM_ZLIB)
+    list(APPEND CMAKE_MODULE_PATH_PASSTHROUGH_LIST "${CMAKE_SOURCE_DIR}/cmake/zlib/dummy")
+endif()
+string(REPLACE ";" "%" CMAKE_MODULE_PATH_PASSTHROUGH "${CMAKE_MODULE_PATH_PASSTHROUGH_LIST}")
+
 ExternalProject_Add(
     kafka-external
     GIT_REPOSITORY "https://github.com/edenhill/librdkafka.git"
     GIT_TAG "v1.0.1" 
     PREFIX "${BASE_DIR}"
+    LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
     CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
                "-DCMAKE_INSTALL_PREFIX=${BASE_DIR}/install"
                "-DWITH_SASL=OFF"
@@ -54,25 +58,33 @@ ExternalProject_Add(
                "-DRDKAFKA_BUILD_TESTS=OFF"
                "-DENABLE_LZ4_EXT=OFF"
                "-DWITH_ZSTD=OFF"
-               "-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH_PASSTHROUGH_LIST}"
+               "-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH_PASSTHROUGH}"
                "-DCMAKE_C_FLAGS=${CURL_C_FLAGS}"
                "-DCMAKE_INSTALL_LIBDIR=lib"
                "-DCMAKE_CXX_FLAGS=${CURL_CXX_FLAGS}"
+               "-DLIBRESSL_BIN_DIR=${LIBRESSL_BIN_DIR}"
+               "-DLIBRESSL_SRC_DIR=${LIBRESSL_SRC_DIR}"
+               "-DBYPRODUCT_PREFIX=${BYPRODUCT_PREFIX}"
+               "-DBYPRODUCT_SUFFIX=${BYPRODUCT_SUFFIX}"
+               "-DZLIB_BYPRODUCT_INCLUDE=${ZLIB_BYPRODUCT_INCLUDE}"
+               "-DZLIB_BYPRODUCT=${ZLIB_BYPRODUCT}"
+               "-DZLIB_LIBRARY=${ZLIB_LIBRARY}"
+               "-DZLIB_LIBRARIES=${ZLIB_LIBRARIES}"
+               "-DLIBRDKAFKA_STATICLIB=1"
     EXCLUDE_FROM_ALL TRUE
   )
 add_dependencies(kafka-external libressl-portable)
+if(WIN32 OR NOT USE_SYSTEM_ZLIB)
+    add_dependencies(kafka-external zlib-external)
+endif()
 set(KAFKA_INCLUDE "${BASE_DIR}/install/include/librdkafka/")
 set(KAFKA_LIBRARY "${BYPRODUCT}")
+add_definitions("-DLIBRDKAFKA_STATICLIB=1")
 add_dependencies(minifi-rdkafka-extensions kafka-external)
 include_directories(${ZLIB_INCLUDE_DIRS})
 include_directories(${KAFKA_INCLUDE})
-if (WIN32)
-	target_link_libraries (minifi-rdkafka-extensions -WHOLEARCHIVE:${KAFKA_LIBRARY} ${KAFKA_LIBRARY})
-elseif (APPLE)
-	target_link_libraries (minifi-rdkafka-extensions -Wl,-force_load ${KAFKA_LIBRARY})
-else ()
-	target_link_libraries (minifi-rdkafka-extensions -Wl,--whole-archive ${KAFKA_LIBRARY} -Wl,--no-whole-archive)
-endif ()
+
+target_link_libraries(minifi-rdkafka-extensions ${KAFKA_LIBRARY} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES})
 
 SET (RDKAFKA-EXTENSIONS minifi-rdkafka-extensions PARENT_SCOPE)
 
diff --git a/thirdparty/paho.mqtt.c/src/CMakeLists.txt b/thirdparty/paho.mqtt.c/src/CMakeLists.txt
index c57185b..b412002 100644
--- a/thirdparty/paho.mqtt.c/src/CMakeLists.txt
+++ b/thirdparty/paho.mqtt.c/src/CMakeLists.txt
@@ -101,27 +101,10 @@ INSTALL(FILES MQTTAsync.h MQTTClient.h MQTTClientPersistence.h
     DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
 
 IF (PAHO_WITH_SSL)
-    SET(OPENSSL_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL libraries and includes")
-
-    IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-      SET(OPENSSL_SEARCH_PATH "/usr/local/opt/openssl")
-    ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-
-    IF (WIN32)
-      SET(OPENSSL_SEARCH_PATH "C:/OpenSSL-Win64")
-    ENDIF ()
-
-    FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h
-        HINTS ${OPENSSL_SEARCH_PATH}/include)
-    FIND_LIBRARY(OPENSSL_LIB NAMES ssl libssl ssleay32
-        HINTS ${OPENSSL_SEARCH_PATH}/lib ${OPENSSL_SEARCH_PATH}/lib64)
-    FIND_LIBRARY(OPENSSLCRYPTO_LIB NAMES crypto libcrypto libeay32
-      	HINTS ${OPENSSL_SEARCH_PATH}/lib ${OPENSSL_SEARCH_PATH}/lib64)
-
-    MESSAGE(STATUS "OpenSSL hints: ${OPENSSL_SEARCH_PATH}")
     MESSAGE(STATUS "OpenSSL headers found at ${OPENSSL_INCLUDE_DIR}")
-    MESSAGE(STATUS "OpenSSL library found at ${OPENSSL_LIB}")
-    MESSAGE(STATUS "OpenSSL Crypto library found at ${OPENSSLCRYPTO_LIB}")
+    MESSAGE(STATUS "OpenSSL libraries found at ${OPENSSL_LIBRARIES}")
+    MESSAGE(STATUS "OpenSSL Crypto library found at ${OPENSSL_CRYPTO_LIBRARY}")
+    MESSAGE(STATUS "OpenSSL SSL library found at ${OPENSSL_SSL_LIBRARY}")
 
     INCLUDE_DIRECTORIES(
         ${OPENSSL_INCLUDE_DIR}
@@ -135,8 +118,8 @@ IF (PAHO_WITH_SSL)
     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)
 
-    TARGET_LINK_LIBRARIES(paho-mqtt3cs ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ${LIBS_SYSTEM})
-    TARGET_LINK_LIBRARIES(paho-mqtt3as ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ${LIBS_SYSTEM})
+    TARGET_LINK_LIBRARIES(paho-mqtt3cs ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} ${LIBS_SYSTEM})
+    TARGET_LINK_LIBRARIES(paho-mqtt3as ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} ${LIBS_SYSTEM})
     SET_TARGET_PROPERTIES(
         paho-mqtt3cs paho-mqtt3as PROPERTIES
         VERSION ${CLIENT_VERSION}