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

phrocker 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 8d297ac  MINIFICPP-835: Use release tarball
8d297ac is described below

commit 8d297acc7248d69d266a1ca906921f06509a759f
Author: Marc Parisi <[email protected]>
AuthorDate: Tue Apr 30 11:32:10 2019 -0400

    MINIFICPP-835: Use release tarball
    
    MINIFICPP-835: Change params for windows.
    
    MINIFICPP-835: Ensure OpenSSL properly pulled with find_package
    
    This closes #549.
    
    Signed-off-by: Marc Parisi <[email protected]>
---
 CMakeLists.txt                  | 59 ++++++++++-----------------------------
 CMakeSettings.json              |  6 +---
 cmake/LibreSSL.cmake            | 62 +++++++++++++++++++++++++++++++++++++++++
 cmake/curl/dummy/FindCURL.cmake |  5 +++-
 cmake/ssl/FindOpenSSL.cmake     |  6 ++--
 libminifi/CMakeLists.txt        |  2 --
 main/CMakeLists.txt             | 12 ++++++++
 7 files changed, 97 insertions(+), 55 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b35539..8066a33 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,7 @@ option(ENABLE_PYTHON "Instructs the build system to enable 
building shared objec
 cmake_dependent_option(STATIC_BUILD "Attempts to statically link as many 
dependencies as possible." ON "NOT ENABLE_PYTHON; NOT USE_SHARED_LIBS" OFF)  
 
 cmake_dependent_option(USE_SYSTEM_OPENSSL "Instructs the build system to 
search for and use an SSL library available in the host system" ON "NOT 
STATIC_BUILD" OFF)
+option(LIBC_STATIC "Instructs the build system to statically link libstdc++ 
and glibc into minifiexe. Experiemental" OFF)
 
 option(OPENSSL_OFF "Disables OpenSSL" OFF)
 option(ENABLE_OPS "Enable Operations/zlib Tools" ON)
@@ -200,45 +201,10 @@ if (NOT OPENSSL_OFF)
                find_package (OpenSSL REQUIRED)
        
        else()
-               message("Using bundled LibreSSL")
-               set(BUILD_ARGS "")
-               if (WIN32)
-               set(BUILD_ARGS " -GVisual Studio 15 2017")
-               endif(WIN32)
-               ExternalProject_Add(
-               libressl-portable
-               GIT_REPOSITORY 
"https://github.com/libressl-portable/portable.git";
-               GIT_TAG "v2.8.3"
-               SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-src"
-               CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-                                       
"-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-install"
-                                       "-DLIBRESSL_APPS=OFF"
-                                       "-DLIBRESSL_TESTS=OFF"
-                                       "${BUILD_ARGS}"
-               PATCH_COMMAND ./autogen.sh
-               )
-       
+               include(LibreSSL)
+               use_libre_ssl(${CMAKE_CURRENT_SOURCE_DIR} 
${CMAKE_CURRENT_BINARY_DIR})
                list(APPEND CMAKE_MODULE_PATH 
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/ssl")
-               add_library(crypto STATIC IMPORTED)
-               set_target_properties(crypto PROPERTIES IMPORTED_LOCATION 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-install/lib/libcrypto.a")
-               add_dependencies(crypto libressl-portable)
-                                               
-               add_library(ssl STATIC IMPORTED)
-               set_target_properties(ssl PROPERTIES IMPORTED_LOCATION 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-install/lib/libssl.a")
-               set_target_properties(ssl PROPERTIES INTERFACE_LINK_LIBRARIES 
crypto)
-               add_dependencies(ssl libressl-portable)
-               
-               add_library(tls STATIC IMPORTED)
-               set_target_properties(tls PROPERTIES IMPORTED_LOCATION 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-install/lib/libtls.a")
-               set_target_properties(tls PROPERTIES INTERFACE_LINK_LIBRARIES 
crypto)
-               add_dependencies(tls libressl-portable)
-               
-               set(LIBRESSL_SRC_DIR 
"${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libressl/" CACHE STRING "" FORCE)
-               set(LIBRESSL_BIN_DIR 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-install/" CACHE STRING "" 
FORCE)
-       
-               set(OPENSSL_FOUND "YES" CACHE STRING "" FORCE)
-               set(OPENSSL_INCLUDE_DIR 
"${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libressl/include" CACHE STRING "" FORCE)
-               set(OPENSSL_LIBRARIES 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-install/lib/libtls.a" 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-install/lib/libssl.a" 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/libressl-install/lib/libcrypto.a" CACHE 
STRING "" FORCE)
+               find_package (OpenSSL REQUIRED)
        endif()
 if (OPENSSL_FOUND)
   include_directories(${OPENSSL_INCLUDE_DIR})
@@ -337,12 +303,12 @@ endif()
 
   if (WIN32)
  if (CMAKE_BUILD_TYPE MATCHES RelWithDebInfo OR CMAKE_BUILD_TYPE MATCHES 
Release)
-  set(BYPRODUCT "thirdparty/curl-install/lib/libcurl.lib")
+  set(BYPRODUCT "lib/libcurl.lib")
   else()
-  set(BYPRODUCT "thirdparty/curl-install/lib/libcurl-d.lib")
+  set(BYPRODUCT "lib/libcurl-d.lib")
   endif()
   else()
-  set(BYPRODUCT "thirdparty/curl-install/lib${LIBSUFFIX}/libcurl.a")
+  set(BYPRODUCT "lib${LIBSUFFIX}/libcurl.a")
   endif()
 
   if (WIN32)
@@ -375,16 +341,21 @@ endif()
                "-DCMAKE_C_FLAGS=${CURL_C_FLAGS}"
                "-DCMAKE_CXX_FLAGS=${CURL_CXX_FLAGS}"
        ${PC}
-    BUILD_BYPRODUCTS "thirdparty/${BYPRODUCT}"
+    BUILD_BYPRODUCTS 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-install/${BYPRODUCT}"
   )
 
   if(NOT USE_SYSTEM_OPENSSL OR USE_SYSTEM_OPENSSL STREQUAL "OFF")
     add_dependencies(curl-external libressl-portable)
   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)
+  set(CURL_BYPRODUCT_DIR "${BYPRODUCT}" CACHE STRING "" FORCE)
+       
+
   list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/curl/dummy")
   add_library(curl STATIC IMPORTED)
-  set_target_properties(curl PROPERTIES IMPORTED_LOCATION 
"${CMAKE_CURRENT_BINARY_DIR}/${BYPRODUCT}")
+  set_target_properties(curl PROPERTIES IMPORTED_LOCATION 
"${CURL_BIN_DIR}${BYPRODUCT}")
   
   
   if (OPENSSL_FOUND) 
@@ -395,7 +366,7 @@ endif()
   add_dependencies(curl curl-external)
   set(CURL_FOUND "YES")
   set(CURL_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/curl/include")
-  set(CURL_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/${BYPRODUCT}" CACHE STRING "" 
FORCE)
+  set(CURL_LIBRARY "${CURL_BIN_DIR}${BYPRODUCT}" CACHE STRING "" FORCE)
   set(CURL_LIBRARIES ${CURL_LIBRARY} CACHE STRING "" FORCE)
  else()
   message("Using System cURL")
diff --git a/CMakeSettings.json b/CMakeSettings.json
index a0c51b2..2064f29 100644
--- a/CMakeSettings.json
+++ b/CMakeSettings.json
@@ -98,17 +98,13 @@
         },
         {
           "name": "USE_SYSTEM_OPENSSL",
-          "value": "ON"
+          "value": "OFF"
         },
         {
           "name": "PORTABLE",
           "value": "ON"
         },
         {
-          "name": "OPENSSL_ROOT_DIR",
-          "value": "C:\\OpenSSL-Win64"
-        },
-        {
           "name": "USE_SYSTEM_ZLIB",
           "value": "OFF"
         },
diff --git a/cmake/LibreSSL.cmake b/cmake/LibreSSL.cmake
new file mode 100644
index 0000000..efcccad
--- /dev/null
+++ b/cmake/LibreSSL.cmake
@@ -0,0 +1,62 @@
+# 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_libre_ssl SOURCE_DIR BINARY_DIR)
+       message("Using bundled LibreSSL from release")
+       
+       set(BYPRODUCT_PREFIX "lib" CACHE STRING "" FORCE)
+       set(BYPRODUCT_SUFFIX ".a" CACHE STRING "" FORCE)
+       
+       set(BUILD_ARGS "")
+       if (WIN32)
+               set(BYPRODUCT_SUFFIX ".lib" CACHE STRING "" FORCE)
+               set(BYPRODUCT_PREFIX "" CACHE STRING "" FORCE)
+       set(BUILD_ARGS " -GVisual Studio 15 2017")
+       endif(WIN32)
+       ExternalProject_Add(
+       libressl-portable
+       URL "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz";
+       SOURCE_DIR "${BINARY_DIR}/thirdparty/libressl-src"
+       CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
+                               
"-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libressl-install"
+                               "-DLIBRESSL_APPS=OFF"
+                               "-DLIBRESSL_TESTS=OFF"
+                               "${BUILD_ARGS}"
+       )
+
+       add_library(crypto STATIC IMPORTED)
+       set_target_properties(crypto PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libressl-install/lib/${BYPRODUCT_PREFIX}crypto${BYPRODUCT_SUFFIX}")
+       add_dependencies(crypto libressl-portable)
+                                       
+       add_library(ssl STATIC IMPORTED)
+       set_target_properties(ssl PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libressl-install/lib/${BYPRODUCT_PREFIX}ssl${BYPRODUCT_SUFFIX}")
+       set_target_properties(ssl PROPERTIES INTERFACE_LINK_LIBRARIES crypto)
+       add_dependencies(ssl libressl-portable)
+       
+       add_library(tls STATIC IMPORTED)
+       set_target_properties(tls PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libressl-install/lib/${BYPRODUCT_PREFIX}tls${BYPRODUCT_SUFFIX}")
+       set_target_properties(tls PROPERTIES INTERFACE_LINK_LIBRARIES crypto)
+       add_dependencies(tls libressl-portable)
+       
+       set(LIBRESSL_SRC_DIR "${SOURCE_DIR}/thirdparty/libressl/" CACHE STRING 
"" FORCE)
+       set(LIBRESSL_BIN_DIR "${BINARY_DIR}/thirdparty/libressl-install/" CACHE 
STRING "" FORCE)
+
+       set(OPENSSL_FOUND "YES" CACHE STRING "" FORCE)
+       set(OPENSSL_INCLUDE_DIR "${SOURCE_DIR}/thirdparty/libressl/include" 
CACHE STRING "" FORCE)
+       set(OPENSSL_LIBRARIES 
"${BINARY_DIR}/thirdparty/libressl-install/lib/${BYPRODUCT_PREFIX}tls${BYPRODUCT_SUFFIX}"
 
"${BINARY_DIR}/thirdparty/libressl-install/lib/${BYPRODUCT_PREFIX}ssl${BYPRODUCT_SUFFIX}"
 
"${BINARY_DIR}/thirdparty/libressl-install/lib/${BYPRODUCT_PREFIX}crypto${BYPRODUCT_SUFFIX}"
 CACHE STRING "" FORCE)
+       
+endfunction(use_libre_ssl) 
\ No newline at end of file
diff --git a/cmake/curl/dummy/FindCURL.cmake b/cmake/curl/dummy/FindCURL.cmake
index 3a7e214..4af4f5e 100644
--- a/cmake/curl/dummy/FindCURL.cmake
+++ b/cmake/curl/dummy/FindCURL.cmake
@@ -15,4 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
-# Dummy cURL find for when we use bundled version
+set(CURL_FOUND "YES" CACHE STRING "" FORCE)
+set(CURL_INCLUDE_DIR "${CURL_SRC_DIR}/include" CACHE STRING "" FORCE)
+set(CURL_LIBRARY "${CURL_BIN_DIR}${CURL_BYPRODUCT_DIR}" CACHE STRING "" FORCE)
+set(CURL_LIBRARIES "${CURL_BIN_DIR}${CURL_BYPRODUCT_DIR}" CACHE STRING "" 
FORCE)
\ No newline at end of file
diff --git a/cmake/ssl/FindOpenSSL.cmake b/cmake/ssl/FindOpenSSL.cmake
index 392b47a..bbce9ec 100644
--- a/cmake/ssl/FindOpenSSL.cmake
+++ b/cmake/ssl/FindOpenSSL.cmake
@@ -19,9 +19,9 @@
 
 set(OPENSSL_FOUND "YES" CACHE STRING "" FORCE)
 set(OPENSSL_INCLUDE_DIR "${LIBRESSL_SRC_DIR}/include" CACHE STRING "" FORCE)
-set(OPENSSL_CRYPTO_LIBRARY "${LIBRESSL_BIN_DIR}/lib/libcrypto.a" CACHE STRING 
"" FORCE)
-set(OPENSSL_SSL_LIBRARY "${LIBRESSL_BIN_DIR}/lib/libssl.a" CACHE STRING "" 
FORCE)
-set(OPENSSL_LIBRARIES "${LIBRESSL_BIN_DIR}/lib/libtls.a" 
${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} 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(OPENSSL_LIBRARIES 
"${LIBRESSL_BIN_DIR}/lib/${BYPRODUCT_PREFIX}tls${BYPRODUCT_SUFFIX}" 
${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} CACHE STRING "" FORCE)
 
  if(NOT TARGET OpenSSL::Crypto )
     add_library(OpenSSL::Crypto UNKNOWN IMPORTED)
diff --git a/libminifi/CMakeLists.txt b/libminifi/CMakeLists.txt
index 3de1d1a..c3ae370 100644
--- a/libminifi/CMakeLists.txt
+++ b/libminifi/CMakeLists.txt
@@ -122,10 +122,8 @@ set_target_properties(core-minifi PROPERTIES LINK_FLAGS 
"/WHOLEARCHIVE")
 
 
 # Include OpenSSL
-
 if (OPENSSL_FOUND)
        include_directories(${OPENSSL_INCLUDE_DIR})
-       #target_link_libraries (core-minifi ${OPENSSL_LIBRARIES})
        if (WIN32)
                foreach(OPENSSL_LIB ${OPENSSL_LIBRARIES})
                        if (OPENSSL_LIB MATCHES "\\.lib$" OR OPENSSL_LIB 
MATCHES "\\.dll$" )
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index 49361c6..062449b 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -56,6 +56,11 @@ endif()
 endif()
 
 add_executable(minifiexe MiNiFiMain.cpp)
+if (NOT USE_SHARED_LIBS)
+       if (LIBC_STATIC)
+               set_target_properties(minifiexe PROPERTIES 
LINK_SEARCH_START_STATIC 1)
+       endif(LIBC_STATIC)
+endif(NOT USE_SHARED_LIBS)
 #if(THREADS_HAVE_PTHREAD_ARG)
 #  target_compile_options(PUBLIC minifiexe "-pthread")
 #endif()
@@ -118,6 +123,13 @@ if (WIN32)
        target_link_libraries(minifiexe semaphore)
 endif()
 
+if (NOT USE_SHARED_LIBS)
+       if (LIBC_STATIC)
+               target_link_libraries(minifiexe -static-libgcc 
-static-libstdc++)
+               set_target_properties(minifiexe PROPERTIES 
LINK_SEARCH_END_STATIC 1)
+       endif(LIBC_STATIC)
+endif(NOT USE_SHARED_LIBS)
+
 if (APPLE)
        get_property(extensions GLOBAL PROPERTY EXTENSION-OPTIONS)
        foreach(EXTENSION ${extensions})

Reply via email to