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})