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 20d50c4  MINIFICPP-942,MINIFICPP-943 - compile flags refactor
20d50c4 is described below

commit 20d50c4a1d2e8f91f96f865e3ccc0a10d8158d68
Author: Daniel Bakai <[email protected]>
AuthorDate: Tue Apr 21 14:06:29 2020 +0200

    MINIFICPP-942,MINIFICPP-943 - compile flags refactor
    
    This commit
     - ensures that that the proper compile and link flags are passed
       to all CMake ExternalProject_Add third parties
     - ensures that the proper compile flags are passed to all
       ./configure && make && make install third parties
     - use the recommended Threads::Threads target everywhere for linking
       with the platform-specific threading library, when required
     - introduces universal PIC and PIE executables instead of sporadic
       and inconsistent usage
     - adds support for building with AddressSanitizer intstrumentation
       with supported compilers
    
    Signed-off-by: Arpad Boda <[email protected]>
    
    This closes #765
---
 CMakeLists.txt                                | 32 +++++++++--
 bootstrap.sh                                  |  2 +
 bstrp_functions.sh                            |  6 +-
 cmake/BuildTests.cmake                        |  4 +-
 cmake/BundledAwsSdkCpp.cmake                  | 10 ++--
 cmake/BundledCivetWeb.cmake                   |  3 +-
 cmake/BundledJemalloc.cmake                   |  8 +--
 cmake/BundledLibCoAP.cmake                    |  3 +-
 cmake/BundledLibLZMA.cmake                    |  2 +-
 cmake/BundledLibRdKafka.cmake                 |  2 +-
 cmake/BundledLibcURL.cmake                    |  3 +-
 cmake/BundledOSSPUUID.cmake                   |  5 +-
 cmake/BundledOpen62541.cmake                  |  2 +-
 cmake/BundledPahoMqttC.cmake                  |  3 +-
 cmake/BundledSQLite.cmake                     |  1 +
 cmake/BundledYamlCpp.cmake                    |  3 +-
 controller/CMakeLists.txt                     |  9 +--
 extensions/aws/CMakeLists.txt                 |  5 +-
 extensions/civetweb/CMakeLists.txt            | 10 +---
 extensions/coap/CMakeLists.txt                |  8 +--
 extensions/http-curl/CMakeLists.txt           |  8 +--
 extensions/libarchive/CMakeLists.txt          |  8 +--
 extensions/librdkafka/CMakeLists.txt          |  8 +--
 extensions/opc/CMakeLists.txt                 |  9 +--
 extensions/pcap/CMakeLists.txt                |  8 +--
 extensions/rocksdb-repos/CMakeLists.txt       |  8 +--
 extensions/script/CMakeLists.txt              |  8 +--
 extensions/sensors/CMakeLists.txt             | 10 +---
 extensions/sftp/CMakeLists.txt                |  9 +--
 extensions/sql/CMakeLists.txt                 |  9 +--
 extensions/sqlite/CMakeLists.txt              |  8 +--
 extensions/standard-processors/CMakeLists.txt | 10 +---
 extensions/tensorflow/CMakeLists.txt          | 10 +---
 extensions/usb-camera/CMakeLists.txt          |  8 +--
 extensions/windows-event-log/CMakeLists.txt   |  8 +--
 libminifi/CMakeLists.txt                      |  8 +--
 main/CMakeLists.txt                           |  7 +--
 nanofi/ecu/CMakeLists.txt                     |  6 +-
 nanofi/examples/CMakeLists.txt                | 12 ++--
 thirdparty/ossp-uuid/ossp-uuid-no-prog.patch  | 81 +++++++++++++++++++++++++++
 40 files changed, 175 insertions(+), 189 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 284a876..5283124 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,6 +55,8 @@ option(DISABLE_CURL "Disables libCurl Properties." OFF)
 option(USE_GOLD_LINKER "Use Gold Linker" OFF)
 option(INSTALLER_MERGE_MODULES "Creates installer with merge modules" OFF)
 
+cmake_dependent_option(ASAN_BUILD "Uses AddressSanitizer to instrument the 
code" OFF "NOT WIN32" OFF)
+
 # Use ccache if present
 find_program(CCACHE_FOUND ccache)
 if(CCACHE_FOUND)
@@ -123,6 +125,29 @@ endif()
 set(CMAKE_CXX_STANDARD 11)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
+# thread library - we must find this before we set ASAN flags, otherwise 
FindThreads.cmake sometimes thinks we don't
+# need to link with libpthread because libasan already provides some 
overridden pthread_* symbols.
+set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
+set(THREADS_PREFER_PTHREAD_FLAG TRUE)
+find_package(Threads REQUIRED)
+message("CMAKE_THREAD_LIBS_INIT is ${CMAKE_THREAD_LIBS_INIT}")
+message("THREADS_HAVE_PTHREAD_ARG is ${THREADS_HAVE_PTHREAD_ARG}")
+
+# We want everything PIC. Even though it isn't needed for the executables 
itself (that use libminifi.a), it is needed
+# to create libminifi.so, and it will enable us to use the same set of 
compiled libminifi sources for both.
+# It has the added benefit of having PIE executables that supports using 
Address space layout randomization,
+# an important security feature.
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
+# Use ASAN if instructed
+if (ASAN_BUILD)
+       set(ASAN_FLAGS "-g -fsanitize=address 
-fsanitize-address-use-after-scope -fno-omit-frame-pointer")
+       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ASAN_FLAGS}")
+       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ASAN_FLAGS}")
+       set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${ASAN_FLAGS}")
+       set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} 
${ASAN_FLAGS}")
+endif()
+
 #### Third party dependencies ####
 
 # Define function for passing dependencies
@@ -143,12 +168,15 @@ set(PASSTHROUGH_CMAKE_ARGS -DANDROID_ABI=${ANDROID_ABI}
                
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
                -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
                -DANDROID_NDK=${ANDROID_NDK}
+               
-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
                -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
                -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
                -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
                -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
                -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
                -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+               -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
+               -DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
                -DCMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH}
                
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=${CMAKE_FIND_ROOT_PATH_MODE_PROGRAM}
                
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=${CMAKE_FIND_ROOT_PATH_MODE_LIBRARY}
@@ -167,13 +195,9 @@ if(NOT WIN32)
                endif()
                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_JNI")
                set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_JNI")
-
        endif()
 endif()
 
-# thread library
-find_package(Threads REQUIRED)
-
 # Simple-Windows-Posix-Semaphore
 if (WIN32)
        add_subdirectory("thirdparty/Simple-Windows-Posix-Semaphore")
diff --git a/bootstrap.sh b/bootstrap.sh
index b7cd7c4..9c96146 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -322,6 +322,8 @@ TESTS_DISABLED=${FALSE}
 ## name, default, values
 add_multi_option BUILD_PROFILE "RelWithDebInfo" "RelWithDebInfo" "Debug" 
"MinSizeRel" "Release"
 
+add_disabled_option ASAN_ENABLED ${FALSE} "ASAN_BUILD"
+
 if [ "$GUIDED_INSTALL" == "${TRUE}" ]; then
   EnableAllFeatures
   ALL_FEATURES_ENABLED=${TRUE}
diff --git a/bstrp_functions.sh b/bstrp_functions.sh
index d292d85..a13be2e 100755
--- a/bstrp_functions.sh
+++ b/bstrp_functions.sh
@@ -372,6 +372,7 @@ show_supported_features() {
   echo "3. Enable JNI Support ..........$(print_feature_status JNI_ENABLED)"
   echo "4. Use Shared Dependency Links .$(print_feature_status 
USE_SHARED_LIBS)"
   echo "5. Build Profile ...............$(print_multi_option_status 
BUILD_PROFILE)"
+  echo "6. Create ASAN build ...........$(print_feature_status ASAN_ENABLED)"
   echo "P. Continue with these options"
   if [ "$GUIDED_INSTALL" = "${TRUE}" ]; then
     echo "R. Return to Main Menu"
@@ -384,7 +385,7 @@ show_supported_features() {
 
 read_feature_options(){
   local choice
-  read -p "Enter choice [ A - W or 1-4 ] " choice
+  read -p "Enter choice [ A - W or 1-6 ] " choice
   choice=$(echo ${choice} | tr '[:upper:]' '[:lower:]')
   case $choice in
     a) ToggleFeature ROCKSDB_ENABLED ;;
@@ -422,13 +423,14 @@ read_feature_options(){
           fi
        ;;
     5) ToggleMultiOption BUILD_PROFILE;;
+    6) ToggleFeature ASAN_ENABLED;;
     p) FEATURES_SELECTED="true" ;;
     r) if [ "$GUIDED_INSTALL" = "${TRUE}" ]; then
         MENU="main"
       fi
       ;;
     q) exit 0;;
-    *) echo -e "${RED}Please enter an option A-V or 1-4...${NO_COLOR}" && 
sleep 2
+    *) echo -e "${RED}Please enter an option A-W or 1-6...${NO_COLOR}" && 
sleep 2
   esac
 }
 
diff --git a/cmake/BuildTests.cmake b/cmake/BuildTests.cmake
index 8779d86..6df7240 100644
--- a/cmake/BuildTests.cmake
+++ b/cmake/BuildTests.cmake
@@ -72,7 +72,7 @@ function(createTests testName)
         target_include_directories(${testName} BEFORE PRIVATE 
"${Boost_INCLUDE_DIRS}")
     endif()
     target_link_libraries(${testName} ${CMAKE_DL_LIBS} ${TEST_BASE_LIB})
-    target_link_libraries(${testName} ${CMAKE_THREAD_LIBS_INIT} core-minifi 
yaml-cpp spdlog)
+    target_link_libraries(${testName} core-minifi yaml-cpp spdlog 
Threads::Threads)
     if (NOT excludeBase)
       target_wholearchive_library(${testName} minifi)
        endif()
@@ -127,7 +127,7 @@ FOREACH(testfile ${NANOFI_UNIT_TESTS})
     target_include_directories(${testfilename} BEFORE PRIVATE 
"${CMAKE_SOURCE_DIR}/extensions/standard-processors/processors/")
     target_include_directories(${testfilename} BEFORE PRIVATE 
"${CMAKE_SOURCE_DIR}/libminifi/test")
     appendIncludes("${testfilename}")
-    target_link_libraries(${testfilename} ${CMAKE_THREAD_LIBS_INIT} 
${CATCH_MAIN_LIB} ${TEST_BASE_LIB}  nanofi)
+    target_link_libraries(${testfilename} ${CATCH_MAIN_LIB} ${TEST_BASE_LIB} 
nanofi Threads::Threads)
 
     target_wholearchive_library(${testfilename} minifi-standard-processors)
 
diff --git a/cmake/BundledAwsSdkCpp.cmake b/cmake/BundledAwsSdkCpp.cmake
index 4690c61..871e638 100644
--- a/cmake/BundledAwsSdkCpp.cmake
+++ b/cmake/BundledAwsSdkCpp.cmake
@@ -135,7 +135,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
     set_target_properties(AWS::aws-c-common PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/lib/libaws-c-common.${SUFFIX}")
     add_dependencies(AWS::aws-c-common aws-c-common-external)
     set_property(TARGET AWS::aws-c-common APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${LIBAWS_INCLUDE_DIR})
-    set_property(TARGET AWS::aws-c-common APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB)
+    set_property(TARGET AWS::aws-c-common APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB 
Threads::Threads)
     if (APPLE)
         set_property(TARGET AWS::aws-c-common APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES "-framework CoreFoundation")
     endif()
@@ -144,7 +144,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
     set_target_properties(AWS::aws-checksums PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/lib/libaws-checksums.${SUFFIX}")
     add_dependencies(AWS::aws-checksums aws-checksums-external)
     set_property(TARGET AWS::aws-checksums APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${LIBAWS_INCLUDE_DIR})
-    set_property(TARGET AWS::aws-checksums APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB)
+    set_property(TARGET AWS::aws-checksums APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB 
Threads::Threads)
     if (APPLE)
         set_property(TARGET AWS::aws-checksums APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES "-framework CoreFoundation")
     endif()
@@ -153,7 +153,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
     set_target_properties(AWS::aws-c-event-stream PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/lib/libaws-c-event-stream.${SUFFIX}")
     add_dependencies(AWS::aws-c-event-stream aws-c-event-stream-external)
     set_property(TARGET AWS::aws-c-event-stream APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${LIBAWS_INCLUDE_DIR})
-    set_property(TARGET AWS::aws-c-event-stream APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES AWS::aws-c-common AWS::aws-checksums CURL::libcurl 
OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB)
+    set_property(TARGET AWS::aws-c-event-stream APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES AWS::aws-c-common AWS::aws-checksums CURL::libcurl 
OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB Threads::Threads)
     if (APPLE)
         set_property(TARGET AWS::aws-c-event-stream APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES "-framework CoreFoundation")
     endif()
@@ -162,7 +162,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
     set_target_properties(AWS::aws-cpp-sdk-core PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/lib/libaws-cpp-sdk-core.${SUFFIX}")
     add_dependencies(AWS::aws-cpp-sdk-core aws-sdk-cpp-external)
     set_property(TARGET AWS::aws-cpp-sdk-core APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${LIBAWS_INCLUDE_DIR})
-    set_property(TARGET AWS::aws-cpp-sdk-core APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES AWS::aws-c-event-stream AWS::aws-c-common 
AWS::aws-checksums CURL::libcurl OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB)
+    set_property(TARGET AWS::aws-cpp-sdk-core APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES AWS::aws-c-event-stream AWS::aws-c-common 
AWS::aws-checksums CURL::libcurl OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB 
Threads::Threads)
     if (APPLE)
         set_property(TARGET AWS::aws-cpp-sdk-core APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES "-framework CoreFoundation")
     endif()
@@ -171,7 +171,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
     set_target_properties(AWS::aws-cpp-sdk-s3 PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/lib/libaws-cpp-sdk-s3.${SUFFIX}")
     add_dependencies(AWS::aws-cpp-sdk-s3 aws-sdk-cpp-external)
     set_property(TARGET AWS::aws-cpp-sdk-s3 APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${LIBAWS_INCLUDE_DIR})
-    set_property(TARGET AWS::aws-cpp-sdk-s3 APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB)
+    set_property(TARGET AWS::aws-cpp-sdk-s3 APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB 
Threads::Threads)
     if (APPLE)
         set_property(TARGET AWS::aws-cpp-sdk-s3 APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES "-framework CoreFoundation")
     endif()
diff --git a/cmake/BundledCivetWeb.cmake b/cmake/BundledCivetWeb.cmake
index f5b7e11..7ed493e 100644
--- a/cmake/BundledCivetWeb.cmake
+++ b/cmake/BundledCivetWeb.cmake
@@ -43,7 +43,6 @@ function(use_bundled_civetweb SOURCE_DIR BINARY_DIR)
     # Set build options
     set(CIVETWEB_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
             "-DCMAKE_INSTALL_PREFIX=${CIVETWEB_BIN_DIR}"
-            -DCMAKE_POSITION_INDEPENDENT_CODE=ON
             -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=OFF
             -DCIVETWEB_ENABLE_CXX=ON
             -DBUILD_TESTING=OFF
@@ -91,7 +90,7 @@ function(use_bundled_civetweb SOURCE_DIR BINARY_DIR)
     set_property(TARGET CIVETWEB::c-library APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${CIVETWEB_INCLUDE_DIR})
     add_dependencies(CIVETWEB::c-library civetweb-external)
     if (NOT OPENSSL_OFF)
-        set_property(TARGET CIVETWEB::c-library APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
+        set_property(TARGET CIVETWEB::c-library APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES OpenSSL::SSL OpenSSL::Crypto Threads::Threads)
     endif()
 
     add_library(CIVETWEB::civetweb-cpp STATIC IMPORTED)
diff --git a/cmake/BundledJemalloc.cmake b/cmake/BundledJemalloc.cmake
index c4bdfc8..acaf8e8 100644
--- a/cmake/BundledJemalloc.cmake
+++ b/cmake/BundledJemalloc.cmake
@@ -24,18 +24,18 @@ function(use_bundled_jemalloc SOURCE_DIR BINARY_DIR)
     # Build project
     ExternalProject_Add(
             jemalloc-external
-            GIT_REPOSITORY "https://github.com/jemalloc/jemalloc.git";
-            GIT_TAG "5.1.0"
+            URL 
https://github.com/jemalloc/jemalloc/releases/download/5.1.0/jemalloc-5.1.0.tar.bz2
+            URL_HASH 
"SHA256=5396e61cc6103ac393136c309fae09e44d74743c86f90e266948c50f3dbb7268"
             PREFIX "${BINARY_DIR}/thirdparty/jemalloc"
             BUILD_IN_SOURCE true
             SOURCE_DIR "${BINARY_DIR}/thirdparty/jemalloc-src"
-            BUILD_COMMAND make
+            BUILD_COMMAND make build_lib_static
             CMAKE_COMMAND ""
             UPDATE_COMMAND ""
             BUILD_BYPRODUCTS 
"${BINARY_DIR}/thirdparty/jemalloc-src/${BYPRODUCT}"
             INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step."
             CONFIGURE_COMMAND ""
-            PATCH_COMMAND ./autogen.sh && ./configure
+            PATCH_COMMAND ./autogen.sh && ./configure 
"CFLAGS=${CMAKE_C_FLAGS}" "CXXFLAGS=${CMAKE_CXX_FLAGS}"
             STEP_TARGETS build
             EXCLUDE_FROM_ALL TRUE
     )
diff --git a/cmake/BundledLibCoAP.cmake b/cmake/BundledLibCoAP.cmake
index 1f09362..dceb6ee 100644
--- a/cmake/BundledLibCoAP.cmake
+++ b/cmake/BundledLibCoAP.cmake
@@ -62,7 +62,7 @@ function(use_bundled_libcoap SOURCE_DIR BINARY_DIR)
                 INSTALL_COMMAND make install
                 BUILD_BYPRODUCTS 
"${BINARY_DIR}/thirdparty/libcoap-install/${BYPRODUCT}"
                 CONFIGURE_COMMAND ""
-                PATCH_COMMAND ./autogen.sh && ./configure --disable-examples 
--disable-dtls --disable-tests --disable-documentation 
--prefix=${BINARY_DIR}/thirdparty/libcoap-install
+                PATCH_COMMAND ./autogen.sh && ./configure 
"CFLAGS=${CMAKE_C_FLAGS} -fPIC" "CXXFLAGS=${CMAKE_CXX_FLAGS} -fPIC" 
--disable-examples --disable-dtls --disable-tests --disable-documentation 
--prefix=${BINARY_DIR}/thirdparty/libcoap-install
                 STEP_TARGETS build
                 EXCLUDE_FROM_ALL TRUE
         )
@@ -81,4 +81,5 @@ function(use_bundled_libcoap SOURCE_DIR BINARY_DIR)
     set_target_properties(COAP::libcoap PROPERTIES IMPORTED_LOCATION 
"${COAP_LIBRARY}")
     add_dependencies(COAP::libcoap coap-external)
     set_property(TARGET COAP::libcoap APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES "${COAP_INCLUDE_DIRS}")
+    set_property(TARGET COAP::libcoap APPEND PROPERTY INTERFACE_LINK_LIBRARIES 
Threads::Threads)
 endfunction(use_bundled_libcoap)
diff --git a/cmake/BundledLibLZMA.cmake b/cmake/BundledLibLZMA.cmake
index 2f2de44..1002f5a 100644
--- a/cmake/BundledLibLZMA.cmake
+++ b/cmake/BundledLibLZMA.cmake
@@ -57,7 +57,7 @@ function(use_bundled_liblzma SOURCE_DIR BINARY_DIR)
                 EXCLUDE_FROM_ALL TRUE
         )
     else()
-        set(CONFIGURE_COMMAND ./configure --disable-xz --disable-xzdec 
--disable-lzmadec --disable-lzmainfo --disable-lzma-links --disable-scripts 
--disable-doc --enable-shared=no "--prefix=${LIBLZMA_BIN_DIR}")
+        set(CONFIGURE_COMMAND ./configure "CFLAGS=${CMAKE_C_FLAGS} -fPIC" 
"CXXFLAGS=${CMAKE_CXX_FLAGS} -fPIC" --disable-xz --disable-xzdec 
--disable-lzmadec --disable-lzmainfo --disable-lzma-links --disable-scripts 
--disable-doc --enable-shared=no "--prefix=${LIBLZMA_BIN_DIR}")
         if(PORTABLE)
             list(APPEND CONFIGURE_COMMAND "--disable-assembler")
         endif()
diff --git a/cmake/BundledLibRdKafka.cmake b/cmake/BundledLibRdKafka.cmake
index 594ff2c..ce14c31 100644
--- a/cmake/BundledLibRdKafka.cmake
+++ b/cmake/BundledLibRdKafka.cmake
@@ -66,7 +66,7 @@ function(use_bundled_librdkafka SOURCE_DIR BINARY_DIR)
     add_library(librdkafka STATIC IMPORTED)
     set_target_properties(librdkafka PROPERTIES IMPORTED_LOCATION 
"${LIBRDKAFKA_LIBRARY}")
     add_dependencies(librdkafka kafka-external)
-    set_property(TARGET librdkafka APPEND PROPERTY INTERFACE_LINK_LIBRARIES 
OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB)
+    set_property(TARGET librdkafka APPEND PROPERTY INTERFACE_LINK_LIBRARIES 
OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB Threads::Threads)
     file(MAKE_DIRECTORY ${LIBRDKAFKA_INCLUDE_DIR})
     set_property(TARGET librdkafka APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${LIBRDKAFKA_INCLUDE_DIR})
     set_property(TARGET librdkafka APPEND PROPERTY 
INTERFACE_COMPILE_DEFINITIONS "LIBRDKAFKA_STATICLIB=1")
diff --git a/cmake/BundledLibcURL.cmake b/cmake/BundledLibcURL.cmake
index 1917d98..b4224c2 100644
--- a/cmake/BundledLibcURL.cmake
+++ b/cmake/BundledLibcURL.cmake
@@ -37,7 +37,6 @@ function(use_bundled_curl SOURCE_DIR BINARY_DIR)
     # Set build options
     set(CURL_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
             "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/curl-install"
-            -DCMAKE_POSITION_INDEPENDENT_CODE=ON
             -DBUILD_CURL_EXE=OFF
             -DBUILD_TESTING=OFF
             -DBUILD_SHARED_LIBS=OFF
@@ -99,7 +98,7 @@ function(use_bundled_curl SOURCE_DIR BINARY_DIR)
     set_target_properties(CURL::libcurl PROPERTIES IMPORTED_LOCATION 
"${CURL_LIBRARY}")
     add_dependencies(CURL::libcurl curl-external)
     set_property(TARGET CURL::libcurl APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${CURL_INCLUDE_DIRS})
-    set_property(TARGET CURL::libcurl APPEND PROPERTY INTERFACE_LINK_LIBRARIES 
ZLIB::ZLIB)
+    set_property(TARGET CURL::libcurl APPEND PROPERTY INTERFACE_LINK_LIBRARIES 
ZLIB::ZLIB Threads::Threads)
     if (NOT OPENSSL_OFF)
         set_property(TARGET CURL::libcurl APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
     endif()
diff --git a/cmake/BundledOSSPUUID.cmake b/cmake/BundledOSSPUUID.cmake
index 61c02dc..95b1bb4 100644
--- a/cmake/BundledOSSPUUID.cmake
+++ b/cmake/BundledOSSPUUID.cmake
@@ -21,7 +21,8 @@ function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
     message("Using bundled ossp-uuid")
 
     # Define patch step
-    set(PC "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
+    set(PC "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch" &&
+           "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-no-prog.patch")
 
     # Define byproducts
     set(BYPRODUCTS "lib/libuuid.a"
@@ -34,7 +35,7 @@ function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
     ENDFOREACH(BYPRODUCT)
 
     # Build project
-    set(CONFIGURE_COMMAND ./configure "CFLAGS=-fPIC" "CXXFLAGS=-fPIC" 
--with-cxx --without-perl --without-php --without-pgsql 
"--prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install")
+    set(CONFIGURE_COMMAND ./configure "CFLAGS=${CMAKE_C_FLAGS} -fPIC" 
"CXXFLAGS=${CMAKE_CXX_FLAGS} -fPIC" --enable-shared=no --with-cxx 
--without-perl --without-php --without-pgsql 
"--prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install")
     string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
     if(NOT build_type MATCHES debug)
         list(APPEND CONFIGURE_COMMAND --enable-debug=yes)
diff --git a/cmake/BundledOpen62541.cmake b/cmake/BundledOpen62541.cmake
index 663d831..5ce80ff 100644
--- a/cmake/BundledOpen62541.cmake
+++ b/cmake/BundledOpen62541.cmake
@@ -69,7 +69,7 @@ function(use_bundled_open62541 SOURCE_DIR BINARY_DIR)
     add_dependencies(open62541::open62541 open62541-external)
     file(MAKE_DIRECTORY ${OPEN62541_INCLUDE_DIR})
     set_property(TARGET open62541::open62541 APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${OPEN62541_INCLUDE_DIR})
-    set_property(TARGET open62541::open62541 APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES mbedTLS::mbedtls)
+    set_property(TARGET open62541::open62541 APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES mbedTLS::mbedtls Threads::Threads)
     if(WIN32)
         set_property(TARGET open62541::open62541 APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES Ws2_32.lib Iphlpapi.lib)
     endif()
diff --git a/cmake/BundledPahoMqttC.cmake b/cmake/BundledPahoMqttC.cmake
index fd707e8..ed82b15 100644
--- a/cmake/BundledPahoMqttC.cmake
+++ b/cmake/BundledPahoMqttC.cmake
@@ -34,7 +34,6 @@ function(use_bundled_pahomqttc SOURCE_DIR BINARY_DIR)
     # Set build options
     set(PAHOMQTTC_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
             
"-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/paho.mqtt.c-install"
-            -DCMAKE_POSITION_INDEPENDENT_CODE=ON
             -DPAHO_BUILD_STATIC=TRUE
             -DPAHO_ENABLE_TESTING=FALSE)
     if (OPENSSL_OFF)
@@ -76,6 +75,6 @@ function(use_bundled_pahomqttc SOURCE_DIR BINARY_DIR)
     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)
+        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/cmake/BundledSQLite.cmake b/cmake/BundledSQLite.cmake
index 0a9e1f8..30abfce 100644
--- a/cmake/BundledSQLite.cmake
+++ b/cmake/BundledSQLite.cmake
@@ -45,4 +45,5 @@ function(use_bundled_sqlite SOURCE_DIR BINARY_DIR)
     set_target_properties(SQLite::SQLite3 PROPERTIES IMPORTED_LOCATION 
"${SQLite3_LIBRARY}")
     add_dependencies(SQLite::SQLite3 sqlite-external)
     set_property(TARGET SQLite::SQLite3 APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES ${SQLite3_INCLUDE_DIRS})
+    set_property(TARGET SQLite::SQLite3 APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES Threads::Threads)
 endfunction(use_bundled_sqlite)
diff --git a/cmake/BundledYamlCpp.cmake b/cmake/BundledYamlCpp.cmake
index f486681..1b7bab0 100644
--- a/cmake/BundledYamlCpp.cmake
+++ b/cmake/BundledYamlCpp.cmake
@@ -29,8 +29,7 @@ function(use_bundled_yamlcpp SOURCE_DIR BINARY_DIR)
 
     # Set build options
     set(YAMLCPP_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-            "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/yaml-cpp-install"
-            -DCMAKE_POSITION_INDEPENDENT_CODE=ON)
+            "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/yaml-cpp-install")
 
     # Build project
     ExternalProject_Add(
diff --git a/controller/CMakeLists.txt b/controller/CMakeLists.txt
index f04d2b0..9e2332b 100644
--- a/controller/CMakeLists.txt
+++ b/controller/CMakeLists.txt
@@ -47,16 +47,9 @@ else()
 endif()
 
 add_executable(minificontroller MiNiFiController.cpp ../main/MainHelper.cpp)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minificontroller "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minificontroller "${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
 target_wholearchive_library(minificontroller minifi)
 
-target_link_libraries(minificontroller cxxopts)
+target_link_libraries(minificontroller cxxopts Threads::Threads)
 
 get_property(extensions GLOBAL PROPERTY EXTENSION-OPTIONS)
 foreach(EXTENSION ${extensions})
diff --git a/extensions/aws/CMakeLists.txt b/extensions/aws/CMakeLists.txt
index 627b6df..c1c0bbd 100644
--- a/extensions/aws/CMakeLists.txt
+++ b/extensions/aws/CMakeLists.txt
@@ -24,10 +24,9 @@ file(GLOB SOURCES "*.cpp" "s3/*.cpp" 
"controllerservices/*.cpp")
 
 add_library(minifi-aws STATIC ${SOURCES})
 
-target_link_libraries(minifi-aws ${LIBMINIFI})
+target_link_libraries(minifi-aws ${LIBMINIFI} Threads::Threads)
 
-target_link_libraries(minifi-aws AWS::aws-cpp-sdk-core)
-target_link_libraries(minifi-aws AWS::aws-cpp-sdk-s3)
+target_link_libraries(minifi-aws AWS::aws-cpp-sdk-core AWS::aws-cpp-sdk-s3)
 
 SET (AWS-EXTENSION minifi-aws PARENT_SCOPE)
 register_extension(minifi-aws)
diff --git a/extensions/civetweb/CMakeLists.txt 
b/extensions/civetweb/CMakeLists.txt
index 72f9de5..aaa9968 100644
--- a/extensions/civetweb/CMakeLists.txt
+++ b/extensions/civetweb/CMakeLists.txt
@@ -28,17 +28,9 @@ file(GLOB SOURCES  "processors/*.cpp")
 
 add_library(minifi-civet-extensions STATIC ${SOURCES})
 set_property(TARGET minifi-civet-extensions PROPERTY POSITION_INDEPENDENT_CODE 
ON)
-target_link_libraries(minifi-civet-extensions ${LIBMINIFI})
+target_link_libraries(minifi-civet-extensions ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-civet-extensions CIVETWEB::c-library 
CIVETWEB::civetweb-cpp)
 
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-civet-extensions "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-civet-extensions "${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
-
 SET (civet-EXTENSIONS minifi-civet-extensions PARENT_SCOPE)
 
 register_extension(minifi-civet-extensions)
diff --git a/extensions/coap/CMakeLists.txt b/extensions/coap/CMakeLists.txt
index 450dbfe..a28da86 100644
--- a/extensions/coap/CMakeLists.txt
+++ b/extensions/coap/CMakeLists.txt
@@ -29,13 +29,9 @@ add_library(nanofi-coap-c STATIC ${CSOURCES})
 add_library(minifi-coap STATIC ${SOURCES})
 set_property(TARGET minifi-coap PROPERTY POSITION_INDEPENDENT_CODE ON)
 
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-coap "${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
-target_link_libraries(nanofi-coap-c COAP::libcoap)
+target_link_libraries(nanofi-coap-c COAP::libcoap Threads::Threads)
 target_link_libraries(minifi-coap ${LIBMINIFI})
-target_link_libraries(minifi-coap nanofi-coap-c COAP::libcoap minifi-http-curl)
+target_link_libraries(minifi-coap nanofi-coap-c Threads::Threads COAP::libcoap 
minifi-http-curl)
 
 SET (COAP-EXTENSION minifi-coap PARENT_SCOPE)
 register_extension(minifi-coap)
diff --git a/extensions/http-curl/CMakeLists.txt 
b/extensions/http-curl/CMakeLists.txt
index 956fc47..fff6eb1 100644
--- a/extensions/http-curl/CMakeLists.txt
+++ b/extensions/http-curl/CMakeLists.txt
@@ -24,14 +24,8 @@ file(GLOB SOURCES  "*.cpp" "protocols/*.cpp" "client/*.cpp" 
"processors/*.cpp" "
 
 add_library(minifi-http-curl STATIC ${SOURCES})
 set_property(TARGET minifi-http-curl PROPERTY POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-http-curl "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-http-curl "${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
-target_link_libraries(minifi-http-curl ${LIBMINIFI})
+target_link_libraries(minifi-http-curl ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-http-curl CURL::libcurl RapidJSON)
 target_link_libraries(minifi-http-curl minifi-civet-extensions)
 
diff --git a/extensions/libarchive/CMakeLists.txt 
b/extensions/libarchive/CMakeLists.txt
index 27c5406..cc55acd 100644
--- a/extensions/libarchive/CMakeLists.txt
+++ b/extensions/libarchive/CMakeLists.txt
@@ -23,14 +23,8 @@ file(GLOB SOURCES  "*.cpp")
 
 add_library(minifi-archive-extensions STATIC ${SOURCES})
 set_property(TARGET minifi-archive-extensions PROPERTY 
POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-archive-extensions "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-archive-extensions "${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
-target_link_libraries(minifi-archive-extensions ${LIBMINIFI})
+target_link_libraries(minifi-archive-extensions ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-archive-extensions LibArchive::LibArchive)
 
 SET (ARCHIVE-EXTENSIONS minifi-archive-extensions PARENT_SCOPE)
diff --git a/extensions/librdkafka/CMakeLists.txt 
b/extensions/librdkafka/CMakeLists.txt
index a0856ab..8e8709d 100644
--- a/extensions/librdkafka/CMakeLists.txt
+++ b/extensions/librdkafka/CMakeLists.txt
@@ -23,14 +23,8 @@ file(GLOB SOURCES  "*.cpp")
 
 add_library(minifi-rdkafka-extensions STATIC ${SOURCES})
 set_property(TARGET minifi-rdkafka-extensions PROPERTY 
POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-rdkafka-extensions "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-rdkafka-extensions "${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
-target_link_libraries(minifi-rdkafka-extensions ${LIBMINIFI})
+target_link_libraries(minifi-rdkafka-extensions ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-rdkafka-extensions librdkafka)
 
 SET (RDKAFKA-EXTENSIONS minifi-rdkafka-extensions PARENT_SCOPE)
diff --git a/extensions/opc/CMakeLists.txt b/extensions/opc/CMakeLists.txt
index b9968b0..4a51adf 100644
--- a/extensions/opc/CMakeLists.txt
+++ b/extensions/opc/CMakeLists.txt
@@ -28,14 +28,7 @@ file(GLOB SOURCES "src/*.cpp")
 add_library(minifi-opc-extensions STATIC ${SOURCES})
 set_property(TARGET minifi-opc-extensions PROPERTY POSITION_INDEPENDENT_CODE 
ON)
 
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-opc-extensions "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-opc-extensions "${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
-target_link_libraries(minifi-opc-extensions ${LIBMINIFI})
+target_link_libraries(minifi-opc-extensions ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-opc-extensions ${CMAKE_DL_LIBS} spdlog 
open62541::open62541)
 
 
diff --git a/extensions/pcap/CMakeLists.txt b/extensions/pcap/CMakeLists.txt
index 25d89cb..347fefe 100644
--- a/extensions/pcap/CMakeLists.txt
+++ b/extensions/pcap/CMakeLists.txt
@@ -53,12 +53,6 @@ file(GLOB SOURCES  "*.cpp")
 
 add_library(minifi-pcap STATIC ${SOURCES})
 set_property(TARGET minifi-pcap PROPERTY POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-pcap "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-pcap "${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
 add_dependencies(minifi-pcap pcappp)
 
@@ -69,7 +63,7 @@ if (APPLE)
        set_target_properties(minifi-pcap PROPERTIES LINK_FLAGS 
"-Wl,-F/Library/Frameworks")
 endif ()
 
-target_link_libraries(minifi-pcap ${LIBMINIFI})
+target_link_libraries(minifi-pcap ${LIBMINIFI} Threads::Threads)
 
 SET (PCAP-EXTENSION minifi-pcap PARENT_SCOPE)
 register_extension(minifi-pcap)
diff --git a/extensions/rocksdb-repos/CMakeLists.txt 
b/extensions/rocksdb-repos/CMakeLists.txt
index 9bf81bb..3c5395e 100644
--- a/extensions/rocksdb-repos/CMakeLists.txt
+++ b/extensions/rocksdb-repos/CMakeLists.txt
@@ -23,14 +23,8 @@ file(GLOB SOURCES  "*.cpp")
 
 add_library(minifi-rocksdb-repos STATIC ${SOURCES})
 set_property(TARGET minifi-rocksdb-repos PROPERTY POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-rocksdb-repos "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-rocksdb-repos "${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
-target_link_libraries(minifi-rocksdb-repos ${LIBMINIFI})
+target_link_libraries(minifi-rocksdb-repos ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-rocksdb-repos RocksDB::RocksDB)
 
 SET (ROCKSDB-REPOS minifi-rocksdb-repos PARENT_SCOPE)
diff --git a/extensions/script/CMakeLists.txt b/extensions/script/CMakeLists.txt
index 22a4cd8..d89e4e5 100644
--- a/extensions/script/CMakeLists.txt
+++ b/extensions/script/CMakeLists.txt
@@ -45,14 +45,8 @@ file(GLOB SOURCES  "ExecuteScript.cpp" "ScriptFlowFile.cpp" 
"ScriptProcessContex
 
 add_library(minifi-script-extensions STATIC ${SOURCES})
 set_property(TARGET minifi-script-extensions PROPERTY 
POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-script-extensions "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-script-extensions "${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
-target_link_libraries(minifi-script-extensions ${LIBMINIFI})
+target_link_libraries(minifi-script-extensions ${LIBMINIFI} Threads::Threads)
 
 if (NOT DISABLE_PYTHON_SCRIPTING)
     find_package(PythonLibs 3.5)
diff --git a/extensions/sensors/CMakeLists.txt 
b/extensions/sensors/CMakeLists.txt
index e78ff08..14aa03a 100644
--- a/extensions/sensors/CMakeLists.txt
+++ b/extensions/sensors/CMakeLists.txt
@@ -25,14 +25,8 @@ file(GLOB SOURCES  "*.cpp")
 add_library(minifi-sensors STATIC ${SOURCES})
 
 set_property(TARGET minifi-sensors PROPERTY POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-sensors "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-sensors "${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
-target_link_libraries(minifi-sensors ${LIBMINIFI})
+
+target_link_libraries(minifi-sensors ${LIBMINIFI} Threads::Threads)
 
 add_dependencies(minifi-sensors RTIMULib)
 target_link_libraries(minifi-sensors RTIMULib)
diff --git a/extensions/sftp/CMakeLists.txt b/extensions/sftp/CMakeLists.txt
index 48a7012..6805730 100644
--- a/extensions/sftp/CMakeLists.txt
+++ b/extensions/sftp/CMakeLists.txt
@@ -24,15 +24,8 @@ file(GLOB SOURCES  "*.cpp" "client/*.cpp" "processors/*.cpp")
 
 add_library(minifi-sftp STATIC ${SOURCES})
 set_property(TARGET minifi-sftp PROPERTY POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-       target_compile_options(PUBLIC minifi-sftp "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-       target_link_libraries(minifi-sftp "${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
-target_link_libraries(minifi-sftp ${LIBMINIFI})
 
+target_link_libraries(minifi-sftp ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-sftp CURL::libcurl libssh2 RapidJSON)
 
 SET (SFTP minifi-sftp PARENT_SCOPE)
diff --git a/extensions/sql/CMakeLists.txt b/extensions/sql/CMakeLists.txt
index ead2726..94d6ede 100644
--- a/extensions/sql/CMakeLists.txt
+++ b/extensions/sql/CMakeLists.txt
@@ -30,13 +30,6 @@ file(GLOB SOURCES  "*.cpp" "services/*.cpp" 
"processors/*.cpp"  "data/*.cpp")
 add_library(minifi-sql STATIC ${SOURCES})
 set_property(TARGET minifi-sql PROPERTY POSITION_INDEPENDENT_CODE ON)
 
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-sql "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-sql "${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
 # Get whether we should use lib64/ library paths
 get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
 
@@ -174,7 +167,7 @@ set_property(TARGET SOCI::libsoci_odbc APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES
 
 target_link_libraries(minifi-sql SOCI::libsoci_odbc SOCI::libsoci_core)
 
-target_link_libraries(minifi-sql ${LIBMINIFI})
+target_link_libraries(minifi-sql ${LIBMINIFI} Threads::Threads)
 
 SET (SQL-EXTENSION minifi-sql PARENT_SCOPE)
 register_extension(minifi-sql)
diff --git a/extensions/sqlite/CMakeLists.txt b/extensions/sqlite/CMakeLists.txt
index b97a38f..53d6370 100644
--- a/extensions/sqlite/CMakeLists.txt
+++ b/extensions/sqlite/CMakeLists.txt
@@ -23,14 +23,8 @@ file(GLOB SOURCES "*.cpp")
 
 add_library(minifi-sqlite-extensions STATIC ${SOURCES})
 set_property(TARGET minifi-sqlite-extensions PROPERTY 
POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-sqlite-extensions "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-sqlite-extensions "${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
-target_link_libraries(minifi-sqlite-extensions ${LIBMINIFI})
+target_link_libraries(minifi-sqlite-extensions ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-sqlite-extensions SQLite::SQLite3)
 
 
diff --git a/extensions/standard-processors/CMakeLists.txt 
b/extensions/standard-processors/CMakeLists.txt
index c96d6ca..d49a29f 100644
--- a/extensions/standard-processors/CMakeLists.txt
+++ b/extensions/standard-processors/CMakeLists.txt
@@ -24,14 +24,8 @@ file(GLOB SOURCES  "processors/*.cpp" )
 
 add_library(minifi-standard-processors STATIC ${SOURCES})
 set_property(TARGET minifi-standard-processors PROPERTY 
POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-standard-processors "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-standard-processors "${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
-target_link_libraries(minifi-standard-processors ${LIBMINIFI})
+
+target_link_libraries(minifi-standard-processors ${LIBMINIFI} Threads::Threads)
 
 SET (STANDARD-PROCESSORS minifi-standard-processors PARENT_SCOPE)
 register_extension(minifi-standard-processors)
diff --git a/extensions/tensorflow/CMakeLists.txt 
b/extensions/tensorflow/CMakeLists.txt
index a308756..3c792ee 100644
--- a/extensions/tensorflow/CMakeLists.txt
+++ b/extensions/tensorflow/CMakeLists.txt
@@ -32,14 +32,8 @@ file(GLOB SOURCES  "*.cpp")
 
 add_library(minifi-tensorflow-extensions STATIC ${SOURCES})
 set_property(TARGET minifi-tensorflow-extensions PROPERTY 
POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-tensorflow-extensions "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-tensorflow-extensions 
"${CMAKE_THREAD_LIBS_INIT}")
-endif()
-
-target_link_libraries(minifi-tensorflow-extensions ${LIBMINIFI})
+
+target_link_libraries(minifi-tensorflow-extensions ${LIBMINIFI} 
Threads::Threads)
 target_link_libraries(minifi-tensorflow-extensions ${TENSORFLOW_LIBRARIES})
 
 SET (TENSORFLOW-EXTENSIONS minifi-tensorflow-extensions PARENT_SCOPE)
diff --git a/extensions/usb-camera/CMakeLists.txt 
b/extensions/usb-camera/CMakeLists.txt
index ef7e0b9..f770247 100644
--- a/extensions/usb-camera/CMakeLists.txt
+++ b/extensions/usb-camera/CMakeLists.txt
@@ -51,14 +51,8 @@ file(GLOB SOURCES  "*.cpp")
 
 add_library(minifi-usb-camera-extensions STATIC ${SOURCES})
 set_property(TARGET minifi-usb-camera-extensions PROPERTY 
POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-usb-camera-extensions "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-usb-camera-extensions 
"${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
-target_link_libraries(minifi-usb-camera-extensions ${LIBMINIFI})
+target_link_libraries(minifi-usb-camera-extensions ${LIBMINIFI} 
Threads::Threads)
 target_link_libraries(minifi-usb-camera-extensions libuvc PNG::PNG)
 
 SET (USB-CAMERA-EXTENSIONS minifi-usb-camera-extensions PARENT_SCOPE)
diff --git a/extensions/windows-event-log/CMakeLists.txt 
b/extensions/windows-event-log/CMakeLists.txt
index 5241126..c205245 100644
--- a/extensions/windows-event-log/CMakeLists.txt
+++ b/extensions/windows-event-log/CMakeLists.txt
@@ -23,14 +23,8 @@ file(GLOB SOURCES  "*.cpp" "wel/*.cpp")
 
 add_library(minifi-wel STATIC ${SOURCES})
 set_property(TARGET minifi-wel PROPERTY POSITION_INDEPENDENT_CODE ON)
-if(THREADS_HAVE_PTHREAD_ARG)
-  target_compile_options(PUBLIC minifi-wel "-pthread")
-endif()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifi-wel "${CMAKE_THREAD_LIBS_INIT}")
-endif()
 
-target_link_libraries(minifi-wel ${LIBMINIFI})
+target_link_libraries(minifi-wel ${LIBMINIFI} Threads::Threads)
 target_link_libraries(minifi-wel PUGI::libpugixml ZLIB::ZLIB Wevtapi.lib)
 
 SET(WEL-EXTENSION minifi-wel PARENT_SCOPE)
diff --git a/libminifi/CMakeLists.txt b/libminifi/CMakeLists.txt
index b99213e..9eaaf58 100644
--- a/libminifi/CMakeLists.txt
+++ b/libminifi/CMakeLists.txt
@@ -111,7 +111,7 @@ if(WIN32)
         target_include_directories(core-minifi PRIVATE 
"${CMAKE_CURRENT_BINARY_DIR}/include")
 endif()
 
-target_link_libraries(core-minifi ${CMAKE_DL_LIBS} yaml-cpp ZLIB::ZLIB 
concurrentqueue RapidJSON spdlog cron)
+target_link_libraries(core-minifi ${CMAKE_DL_LIBS} yaml-cpp ZLIB::ZLIB 
concurrentqueue RapidJSON spdlog cron Threads::Threads)
 if(NOT WIN32)
        target_link_libraries(core-minifi OSSP::libuuid++)
 endif()
@@ -134,7 +134,7 @@ SET (LIBMINIFI core-minifi PARENT_SCOPE)
 if (ENABLE_PYTHON AND NOT STATIC_BUILD)
 #### shared
        add_library(core-minifi-shared SHARED ${SOURCES})
-       target_link_libraries(core-minifi-shared ${CMAKE_DL_LIBS} yaml-cpp 
ZLIB::ZLIB concurrentqueue RapidJSON spdlog cron)
+       target_link_libraries(core-minifi-shared ${CMAKE_DL_LIBS} yaml-cpp 
ZLIB::ZLIB concurrentqueue RapidJSON spdlog cron Threads::Threads)
        if(NOT WIN32)
                target_link_libraries(core-minifi-shared OSSP::libuuid++)
        endif()
@@ -149,8 +149,4 @@ if (ENABLE_PYTHON AND NOT STATIC_BUILD)
                set_target_properties(minifi-shared PROPERTIES 
WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
                set_target_properties(minifi-shared PROPERTIES LINK_FLAGS 
"${LINK_FLAGS} /WHOLEARCHIVE:core-minifi-shared")
        endif()
-
-
-       set_property(TARGET core-minifi-shared PROPERTY 
POSITION_INDEPENDENT_CODE ON)
-       set_property(TARGET minifi-shared PROPERTY POSITION_INDEPENDENT_CODE ON)
 endif(ENABLE_PYTHON AND NOT STATIC_BUILD)
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index 2d6a624..0cfd81f 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -66,12 +66,7 @@ if (NOT USE_SHARED_LIBS)
                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()
-if(CMAKE_THREAD_LIBS_INIT)
-  target_link_libraries(minifiexe "${CMAKE_THREAD_LIBS_INIT}")
-endif()
+target_link_libraries(minifiexe Threads::Threads)
 
 target_wholearchive_library(minifiexe core-minifi)
 target_wholearchive_library(minifiexe minifi)
diff --git a/nanofi/ecu/CMakeLists.txt b/nanofi/ecu/CMakeLists.txt
index 9c9e314..9b55cbd 100644
--- a/nanofi/ecu/CMakeLists.txt
+++ b/nanofi/ecu/CMakeLists.txt
@@ -22,14 +22,14 @@ cmake_minimum_required(VERSION 2.6)
 
 if (NOT WIN32)
 add_executable(log_aggregator log_aggregator.c)
-target_link_libraries(log_aggregator nanofi ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(log_aggregator nanofi Threads::Threads)
 target_wholearchive_library(log_aggregator minifi-http-curl)
 
 add_executable(tailfile_chunk tailfile_chunk.c)
-target_link_libraries(tailfile_chunk nanofi ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(tailfile_chunk nanofi Threads::Threads)
 target_wholearchive_library(tailfile_chunk minifi-http-curl)
 
 add_executable(tailfile_delimited tailfile_delimited.c)
-target_link_libraries(tailfile_delimited nanofi ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(tailfile_delimited nanofi Threads::Threads)
 target_wholearchive_library(tailfile_delimited minifi-http-curl)
 endif()
diff --git a/nanofi/examples/CMakeLists.txt b/nanofi/examples/CMakeLists.txt
index fa1be9f..f35381a 100644
--- a/nanofi/examples/CMakeLists.txt
+++ b/nanofi/examples/CMakeLists.txt
@@ -53,27 +53,27 @@ add_executable(generate_flow generate_flow.c)
 add_executable(terminate_handler terminate_handler.c)
 
 target_wholearchive_library(generate_flow minifi-http-curl)
-target_link_libraries(generate_flow nanofi ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(generate_flow nanofi Threads::Threads)
 
-target_link_libraries(terminate_handler nanofi ${CMAKE_THREAD_LIBS_INIT} )
+target_link_libraries(terminate_handler nanofi Threads::Threads)
 
 #add_executable(hash_file hash_file.c)
 
-#arget_link_libraries(hash_file nanofi ${CMAKE_THREAD_LIBS_INIT} )
+#arget_link_libraries(hash_file nanofi Threads::Threads )
 
 add_executable(transmit_flow transmit_flow.c)
 
 target_wholearchive_library(transmit_flow minifi-http-curl)
-target_link_libraries(transmit_flow nanofi ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(transmit_flow nanofi Threads::Threads)
 
 add_executable(transmit_payload transmit_payload.c)
 
 target_wholearchive_library(transmit_payload minifi-http-curl)
-target_link_libraries(transmit_payload nanofi ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(transmit_payload nanofi Threads::Threads)
 
 add_executable(monitor_directory monitor_directory.c)
 
 target_wholearchive_library(monitor_directory minifi-http-curl)
-target_link_libraries(monitor_directory nanofi ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(monitor_directory nanofi Threads::Threads)
 
 endif()
diff --git a/thirdparty/ossp-uuid/ossp-uuid-no-prog.patch 
b/thirdparty/ossp-uuid/ossp-uuid-no-prog.patch
new file mode 100644
index 0000000..467d89f
--- /dev/null
+++ b/thirdparty/ossp-uuid/ossp-uuid-no-prog.patch
@@ -0,0 +1,81 @@
+diff -rupN orig/Makefile.in patched/Makefile.in
+--- orig/Makefile.in   2008-03-08 19:31:40.000000000 +0100
++++ patched/Makefile.in        2020-04-21 15:57:42.000000000 +0200
+@@ -71,9 +71,6 @@ DCE_OBJS    = uuid_dce.lo $(LIB_OBJS)
+ CXX_NAME    = libuuid++.la
+ CXX_OBJS    = uuid++.lo $(LIB_OBJS)
+ 
+-PRG_NAME    = uuid
+-PRG_OBJS    = uuid_cli.o
+-
+ MAN_NAME    = uuid.3 uuid++.3 uuid.1
+ 
+ PERL_NAME   = $(S)/perl/blib/lib/OSSP/uuid.pm
+@@ -85,7 +82,7 @@ PHP_OBJS    = $(S)/php/uuid.c
+ PGSQL_NAME  = $(S)/pgsql/libuuid.so
+ PGSQL_OBJS  = $(S)/pgsql/uuid.c
+ 
+-TARGETS     = $(LIB_NAME) @DCE_NAME@ @CXX_NAME@ $(PRG_NAME) @PERL_NAME@ 
@PHP_NAME@ @PGSQL_NAME@
++TARGETS     = $(LIB_NAME) @DCE_NAME@ @CXX_NAME@ @PERL_NAME@ @PHP_NAME@ 
@PGSQL_NAME@
+ 
+ WITH_DCE         = @WITH_DCE@
+ WITH_CXX         = @WITH_CXX@
+@@ -123,9 +120,6 @@ $(CXX_NAME): $(CXX_OBJS)
+       @$(LIBTOOL) --mode=link $(CXX) -o $(CXX_NAME) $(CXX_OBJS) -rpath 
$(libdir) \
+           -version-info `$(SHTOOL) version -l c -d libtool $(S)/uuid_vers.h`
+ 
+-$(PRG_NAME): $(PRG_OBJS) $(LIB_NAME)
+-      @$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $(PRG_NAME) $(PRG_OBJS) 
$(LIB_NAME) $(LIBS)
+-
+ $(PERL_NAME): $(PERL_OBJS) $(LIB_NAME)
+       @cd $(S)/perl && $(PERL) Makefile.PL PREFIX=$(prefix) 
COMPAT=$(WITH_PERL_COMPAT) && $(MAKE) $(MFLAGS) all
+       @touch $(PERL_NAME)
+@@ -187,27 +181,6 @@ uuid.1: uuid_cli.pod
+       $(RM) /tmp/uuid.pod
+ 
+ check: all
+-      @echo "==== UUID version 1 (time and node based): 4 single iterations"; 
\
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v1 -n 4 -1
+-      @echo "==== UUID version 1 (time and node based): 4 subsequent 
iterations"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v1 -n 4
+-      @echo "==== UUID version 3 (name based, MD5): 2 times repeated"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v3 -n 2 ns:URL 
http://www.ossp.org/
+-      @echo "==== UUID version 5 (name based, SHA-1): 2 times repeated"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v5 -n 2 ns:URL 
http://www.ossp.org/
+-      @echo "==== UUID version 4 (random data based): 4 single iterations"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v4 -n 4 -1
+-      @echo "==== UUID version 4 (random data based): 4 subsequent 
iterations"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v4 -n 4
+-      @echo "==== UUID version 1 generation and decoding"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute 
./$(PRG_NAME) -v1`; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute 
./$(PRG_NAME) -v1 -m`
+-      @echo "==== UUID version 3 generation and decoding"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute 
./$(PRG_NAME) -v3 ns:URL http://www.ossp.org/`
+-      @echo "==== UUID version 5 generation and decoding"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute 
./$(PRG_NAME) -v5 ns:URL http://www.ossp.org/`
+-      @echo "==== UUID version 3 generation and decoding"; \
+-      $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute 
./$(PRG_NAME) -v4`
+       -@if [ ".$(WITH_PERL)" = .yes ]; then \
+           echo "==== Perl bindings to C API"; \
+           (cd $(S)/perl && $(MAKE) $(MFLAGS) test); \
+@@ -253,7 +226,6 @@ install:
+       -@if [ ".$(WITH_CXX)" = .yes ]; then \
+           $(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 $(CXX_NAME) 
$(DESTDIR)$(libdir)/; \
+       fi
+-      @$(LIBTOOL) --mode=install $(SHTOOL) install -c -s -m 755 uuid 
$(DESTDIR)$(bindir)/
+       $(SHTOOL) install -c -m 644 $(S)/uuid.1 $(DESTDIR)$(mandir)/man1/
+       -@if [ ".$(WITH_PERL)" = .yes ]; then \
+           (cd $(S)/perl && $(MAKE) $(MFLAGS) install DESTDIR=$(DESTDIR)); \
+@@ -313,7 +285,6 @@ clean:
+           echo "$(RM) $(CXX_NAME) $(CXX_OBJS)"; \
+           $(RM) $(CXX_NAME) $(CXX_OBJS); \
+       fi
+-      -$(RM) $(PRG_NAME) $(PRG_OBJS)
+       -$(RM) -r .libs >/dev/null 2>&1 || $(TRUE)
+       -$(RM) *.o *.lo
+       -@if [ ".$(WITH_PERL)" = .yes ]; then \
+@@ -354,4 +325,3 @@ realclean: distclean
+       -@if [ ".$(WITH_PGSQL)" = .yes ]; then \
+           (cd $(S)/pgsql && $(MAKE) $(MFLAGS) realclean 
PG_CONFIG=$(PG_CONFIG) || true); \
+       fi
+-

Reply via email to