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


The following commit(s) were added to refs/heads/main by this push:
     new 0887534f4 MINIFICPP-2784 Fixing OpenSSL cmake (#2168)
0887534f4 is described below

commit 0887534f4f0fa69bfd6b25b2f227f975881dfe20
Author: Martin Zink <[email protected]>
AuthorDate: Wed May 13 15:06:27 2026 +0200

    MINIFICPP-2784 Fixing OpenSSL cmake (#2168)
    
    https://issues.apache.org/jira/browse/MINIFICPP-2784
    
    The bundled openssl was not strict enough and sometimes it used the system 
headers while building, this caused build errors on systems where the openssl 
headers were not compatible with our bundled version. (e.g. arch linux, trixie, 
etc)
    
    This also fixes the currently failing CI jobs namely
    
        🟢 MiNiFi-CPP memcheck
        🟢 Check supported Compilers
    
    ---------
    
    * MINIFICPP-2784 Fixing OpenSSL cmake
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot Autofix powered by AI 
<[email protected]>
    
    * BundledLibcURL.cmake -> FetchLibcURL.cmake, BundledLibSSH2.cmake -> 
FetchLibSSH2.cmake
    
    ---------
    
    Co-authored-by: Copilot Autofix powered by AI 
<[email protected]>
---
 cmake/BundledAwsSdkCpp.cmake                       |  73 +++++++++-----
 cmake/BundledLibArchive.cmake                      |   2 +
 cmake/BundledLibSSH2.cmake                         |  79 ---------------
 cmake/BundledLibcURL.cmake                         | 106 ---------------------
 cmake/BundledOpenSSL.cmake                         |   1 +
 cmake/CivetWeb.cmake                               |   6 +-
 cmake/FetchLibSSH2.cmake                           |  44 +++++++++
 cmake/FetchLibcURL.cmake                           |  68 +++++++++++++
 cmake/GetLibCURL.cmake                             |   3 +-
 cmake/KubernetesClientC.cmake                      |   3 +-
 cmake/PahoMqttC.cmake                              |   2 +-
 cmake/curl/dummy/FindCURL.cmake                    |  31 ------
 cmake/libssh2/dummy/FindLibSSH2.cmake              |  22 -----
 cmake/libssh2/sys/FindLibSSH2.cmake                |  35 -------
 cmake/ssl/FindCrypto.cmake                         |  56 +++++++++++
 cmake/ssl/FindOpenSSL.cmake                        |  77 +++++++++------
 extensions/aws/CMakeLists.txt                      |   6 +-
 extensions/aws/tests/CMakeLists.txt                |   6 ++
 extensions/aws/tests/PutKinesisStreamTests.cpp     |  11 +++
 extensions/civetweb/CMakeLists.txt                 |   2 +-
 extensions/libarchive/CMakeLists.txt               |   2 +-
 extensions/sftp/CMakeLists.txt                     |   4 +-
 .../src/core/state/nodes/AgentInformation.cpp      |   5 +-
 thirdparty/aws-sdk-cpp/aws-c-cal.patch             |  42 ++++++++
 thirdparty/aws-sdk-cpp/s2n.patch                   |  51 ++++++++++
 25 files changed, 394 insertions(+), 343 deletions(-)

diff --git a/cmake/BundledAwsSdkCpp.cmake b/cmake/BundledAwsSdkCpp.cmake
index 9455b5b81..1b41cee1e 100644
--- a/cmake/BundledAwsSdkCpp.cmake
+++ b/cmake/BundledAwsSdkCpp.cmake
@@ -16,13 +16,25 @@
 # under the License.
 
 function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
-    set(PATCH_FILE1 
"${SOURCE_DIR}/thirdparty/aws-sdk-cpp/dll-export-injection.patch")
-    set(PATCH_FILE2 
"${SOURCE_DIR}/thirdparty/aws-sdk-cpp/bundle-openssl.patch")
-    set(PATCH_FILE3 
"${SOURCE_DIR}/thirdparty/aws-sdk-cpp/fix-finding-s2n.patch")
+    find_package(OpenSSL REQUIRED)
+    find_package(ZLIB REQUIRED)
+    set(DLL_EXPORT_INJECTION_PATCH 
"${SOURCE_DIR}/thirdparty/aws-sdk-cpp/dll-export-injection.patch")
+    set(FIX_FINDING_S2N_PATCH 
"${SOURCE_DIR}/thirdparty/aws-sdk-cpp/fix-finding-s2n.patch")
+    set(S2N_OPENSSL_PATCH "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/s2n.patch")
+    set(AWS_C_CAL_OPENSSL_PATCH 
"${SOURCE_DIR}/thirdparty/aws-sdk-cpp/aws-c-cal.patch")
+
+    if (WIN32)
+        set(REMOVE_FIND_CMAKE_COMMAND "powershell -Command \\\"Remove-Item 
-Path ./* -Include 'FindOpenSSL.cmake', 'Findcrypto.cmake' -Recurse -Force\\\"")
+    else ()
+        set(REMOVE_FIND_CMAKE_COMMAND "find . -type f -iname 
'FindOpenSSL.cmake' -delete -o -iname 'Findcrypto.cmake' -delete")
+    endif ()
+
     set(AWS_SDK_CPP_PATCH_COMMAND ${Bash_EXECUTABLE} -c "set -x &&\
-            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i 
\"${PATCH_FILE1}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE1}\") &&\
-            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i 
\"${PATCH_FILE2}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE2}\") &&\
-            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i 
\"${PATCH_FILE3}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE3}\") &&\
+        (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i 
\"${DLL_EXPORT_INJECTION_PATCH}\" || \"${Patch_EXECUTABLE}\" -f -p1 -N -i 
\"${DLL_EXPORT_INJECTION_PATCH}\") &&\
+        (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i 
\"${FIX_FINDING_S2N_PATCH}\" || \"${Patch_EXECUTABLE}\" -f -p1 -N -i 
\"${FIX_FINDING_S2N_PATCH}\") &&\
+        (\"${Patch_EXECUTABLE}\" -d crt/aws-crt-cpp/crt/s2n -p1 -R -s -f 
--dry-run -i \"${S2N_OPENSSL_PATCH}\" || \"${Patch_EXECUTABLE}\" -d 
crt/aws-crt-cpp/crt/s2n -f -p1 -N -i \"${S2N_OPENSSL_PATCH}\") &&\
+        (\"${Patch_EXECUTABLE}\" -d crt/aws-crt-cpp/crt/aws-c-cal -p1 -R -s -f 
--dry-run -i \"${AWS_C_CAL_OPENSSL_PATCH}\" || \"${Patch_EXECUTABLE}\" -d 
crt/aws-crt-cpp/crt/aws-c-cal -f -p1 -N -i \"${AWS_C_CAL_OPENSSL_PATCH}\") &&\
+        ${REMOVE_FIND_CMAKE_COMMAND} &&\
     :")
 
     if (WIN32)
@@ -68,9 +80,20 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
         LIST(APPEND AWSSDK_LIBRARIES_LIST 
"${BINARY_DIR}/thirdparty/libaws-install/${BYPRODUCT}")
     ENDFOREACH(BYPRODUCT)
 
+    string(REPLACE ";" "%" ESCAPED_CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}")
+
     set(AWS_SDK_CPP_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-            -DCMAKE_PREFIX_PATH=${BINARY_DIR}/thirdparty/libaws-install
-            -DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libaws-install
+            "-DCMAKE_PREFIX_PATH=${BINARY_DIR}/thirdparty/libaws-install"
+            "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libaws-install"
+            "-DCMAKE_MODULE_PATH=${ESCAPED_CMAKE_MODULE_PATH}"
+            "-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}"
+            "-DFIND_OPENSSL_PATH=${SOURCE_DIR}/cmake/ssl/FindOpenSSL.cmake"
+            "-DFIND_CRYPTO_PATH=${SOURCE_DIR}/cmake/ssl/FindCrypto.cmake"
+            "-DCURL_ROOT_DIR=${CURL_ROOT_DIR}"
+            "-DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIRS}"
+            "-DZLIB_INCLUDE_DIRS=${ZLIB_INCLUDE_DIRS}"
+            "-DZLIB_LIBRARY=${ZLIB_LIBRARIES}"
+            -DUSE_OPENSSL=ON
             -DBUILD_ONLY=kinesis%s3%s3-crt
             -DENABLE_TESTING=OFF
             -DBUILD_SHARED_LIBS=OFF
@@ -112,20 +135,20 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
     # Create imported targets
     file(MAKE_DIRECTORY ${LIBAWS_INCLUDE_DIR})
 
-    add_library(AWS::aws-c-common STATIC IMPORTED)
+    add_library(AWS::aws-c-common STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-common PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-common.${SUFFIX}")
     add_dependencies(AWS::aws-c-common aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-common INTERFACE 
${LIBAWS_INCLUDE_DIR})
 
     if (NOT WIN32 AND NOT APPLE)
-        add_library(AWS::s2n STATIC IMPORTED)
+        add_library(AWS::s2n STATIC IMPORTED GLOBAL)
         set_target_properties(AWS::s2n PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}s2n.${SUFFIX}")
         add_dependencies(AWS::s2n aws-sdk-cpp-external)
         target_include_directories(AWS::s2n INTERFACE ${LIBAWS_INCLUDE_DIR})
         target_link_libraries(AWS::s2n INTERFACE OpenSSL::Crypto)
     endif()
 
-    add_library(AWS::aws-c-io STATIC IMPORTED)
+    add_library(AWS::aws-c-io STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-io PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-io.${SUFFIX}")
     add_dependencies(AWS::aws-c-io aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-io INTERFACE ${LIBAWS_INCLUDE_DIR})
@@ -134,60 +157,60 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
         target_link_libraries(AWS::aws-c-io INTERFACE ncrypt.lib)
     endif()
 
-    add_library(AWS::aws-checksums STATIC IMPORTED)
+    add_library(AWS::aws-checksums STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-checksums PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-checksums.${SUFFIX}")
     add_dependencies(AWS::aws-checksums aws-sdk-cpp-external)
     target_include_directories(AWS::aws-checksums INTERFACE 
${LIBAWS_INCLUDE_DIR})
 
-    add_library(AWS::aws-c-event-stream STATIC IMPORTED)
+    add_library(AWS::aws-c-event-stream STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-event-stream PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-event-stream.${SUFFIX}")
     add_dependencies(AWS::aws-c-event-stream aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-event-stream INTERFACE 
${LIBAWS_INCLUDE_DIR})
     target_link_libraries(AWS::aws-c-event-stream INTERFACE AWS::aws-checksums 
AWS::aws-c-io)
 
-    add_library(AWS::aws-c-auth STATIC IMPORTED)
+    add_library(AWS::aws-c-auth STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-auth PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-auth.${SUFFIX}")
     add_dependencies(AWS::aws-c-auth aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-auth INTERFACE ${LIBAWS_INCLUDE_DIR})
 
-    add_library(AWS::aws-c-s3 STATIC IMPORTED)
+    add_library(AWS::aws-c-s3 STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-s3 PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-s3.${SUFFIX}")
     add_dependencies(AWS::aws-c-s3 aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-s3 INTERFACE ${LIBAWS_INCLUDE_DIR})
     target_link_libraries(AWS::aws-c-s3 INTERFACE AWS::aws-c-auth)
 
-    add_library(AWS::aws-c-mqtt STATIC IMPORTED)
+    add_library(AWS::aws-c-mqtt STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-mqtt PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-mqtt.${SUFFIX}")
     add_dependencies(AWS::aws-c-mqtt aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-mqtt INTERFACE ${LIBAWS_INCLUDE_DIR})
 
-    add_library(AWS::aws-c-http STATIC IMPORTED)
+    add_library(AWS::aws-c-http STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-http PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-http.${SUFFIX}")
     add_dependencies(AWS::aws-c-http aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-http INTERFACE ${LIBAWS_INCLUDE_DIR})
 
-    add_library(AWS::aws-c-cal STATIC IMPORTED)
+    add_library(AWS::aws-c-cal STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-cal PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-cal.${SUFFIX}")
     add_dependencies(AWS::aws-c-cal aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-cal INTERFACE ${LIBAWS_INCLUDE_DIR})
 
-    add_library(AWS::aws-c-compression STATIC IMPORTED)
+    add_library(AWS::aws-c-compression STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-compression PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-compression.${SUFFIX}")
     add_dependencies(AWS::aws-c-compression aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-compression INTERFACE 
${LIBAWS_INCLUDE_DIR})
 
-    add_library(AWS::aws-c-sdkutils STATIC IMPORTED)
+    add_library(AWS::aws-c-sdkutils STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-c-sdkutils PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-sdkutils.${SUFFIX}")
     add_dependencies(AWS::aws-c-sdkutils aws-sdk-cpp-external)
     target_include_directories(AWS::aws-c-sdkutils INTERFACE 
${LIBAWS_INCLUDE_DIR})
 
-    add_library(AWS::aws-crt-cpp STATIC IMPORTED)
+    add_library(AWS::aws-crt-cpp STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-crt-cpp PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-crt-cpp.${SUFFIX}")
     add_dependencies(AWS::aws-crt-cpp aws-sdk-cpp-external)
     target_include_directories(AWS::aws-crt-cpp INTERFACE 
${LIBAWS_INCLUDE_DIR})
     target_link_libraries(AWS::aws-crt-cpp INTERFACE AWS::aws-c-io 
AWS::aws-c-s3 AWS::aws-c-mqtt AWS::aws-c-http AWS::aws-c-cal 
AWS::aws-c-compression AWS::aws-c-sdkutils)
 
-    add_library(AWS::aws-cpp-sdk-core STATIC IMPORTED)
+    add_library(AWS::aws-cpp-sdk-core STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-cpp-sdk-core PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-core.${SUFFIX}")
     add_dependencies(AWS::aws-cpp-sdk-core aws-sdk-cpp-external)
     target_include_directories(AWS::aws-cpp-sdk-core INTERFACE 
${LIBAWS_INCLUDE_DIR})
@@ -201,19 +224,19 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
         target_link_libraries(AWS::aws-cpp-sdk-core INTERFACE AWS::s2n)
     endif()
 
-    add_library(AWS::aws-cpp-sdk-s3 STATIC IMPORTED)
+    add_library(AWS::aws-cpp-sdk-s3 STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-cpp-sdk-s3 PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-s3.${SUFFIX}")
     add_dependencies(AWS::aws-cpp-sdk-s3 aws-sdk-cpp-external)
     target_include_directories(AWS::aws-cpp-sdk-s3 INTERFACE 
${LIBAWS_INCLUDE_DIR})
     target_link_libraries(AWS::aws-cpp-sdk-s3 INTERFACE AWS::aws-cpp-sdk-core)
 
-    add_library(AWS::aws-cpp-sdk-s3-crt STATIC IMPORTED)
+    add_library(AWS::aws-cpp-sdk-s3-crt STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-cpp-sdk-s3-crt PROPERTIES IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-s3-crt.${SUFFIX}")
     add_dependencies(AWS::aws-cpp-sdk-s3-crt aws-sdk-cpp-external)
     target_include_directories(AWS::aws-cpp-sdk-s3-crt INTERFACE 
${LIBAWS_INCLUDE_DIR})
     target_link_libraries(AWS::aws-cpp-sdk-s3-crt INTERFACE 
AWS::aws-cpp-sdk-core AWS::aws-crt-cpp)
 
-    add_library(AWS::aws-cpp-sdk-kinesis STATIC IMPORTED)
+    add_library(AWS::aws-cpp-sdk-kinesis STATIC IMPORTED GLOBAL)
     set_target_properties(AWS::aws-cpp-sdk-kinesis PROPERTIES 
IMPORTED_LOCATION 
"${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-kinesis.${SUFFIX}")
     add_dependencies(AWS::aws-cpp-sdk-kinesis aws-sdk-cpp-external)
     target_include_directories(AWS::aws-cpp-sdk-kinesis INTERFACE 
${LIBAWS_INCLUDE_DIR})
diff --git a/cmake/BundledLibArchive.cmake b/cmake/BundledLibArchive.cmake
index 57a195ac8..ccaeb6041 100644
--- a/cmake/BundledLibArchive.cmake
+++ b/cmake/BundledLibArchive.cmake
@@ -26,6 +26,8 @@ function(use_bundled_libarchive SOURCE_DIR BINARY_DIR)
 
     set(LIBARCHIVE_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
             
"-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libarchive-install"
+            "-DCURL_ROOT_DIR=${CURL_ROOT_DIR}"
+            "-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}"
             -DCMAKE_INSTALL_LIBDIR=lib
             -DLIBARCHIVE_STATIC=1
             -DBUILD_SHARED_LIBS=OFF
diff --git a/cmake/BundledLibSSH2.cmake b/cmake/BundledLibSSH2.cmake
deleted file mode 100644
index 9d6ee32a9..000000000
--- a/cmake/BundledLibSSH2.cmake
+++ /dev/null
@@ -1,79 +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_libssh2 SOURCE_DIR BINARY_DIR)
-    message("Using bundled libssh2")
-
-    # Define patch step
-    set(PC "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/libssh2/libssh2-CMAKE_MODULE_PATH.patch")
-
-    # Define byproducts
-    if (WIN32)
-        set(BYPRODUCT "lib/libssh2.lib")
-    else()
-        include(GNUInstallDirs)
-        string(REPLACE "/" ";" LIBDIR_LIST ${CMAKE_INSTALL_LIBDIR})
-        list(GET LIBDIR_LIST 0 LIBDIR)
-        set(BYPRODUCT "${LIBDIR}/libssh2.a")
-    endif()
-
-    # Set build options
-    set(LIBSSH2_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-            "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libssh2-install"
-            -DENABLE_ZLIB_COMPRESSION=ON
-            -DCRYPTO_BACKEND=OpenSSL
-            -DBUILD_TESTING=OFF
-            -DBUILD_EXAMPLES=OFF)
-
-    append_third_party_passthrough_args(LIBSSH2_CMAKE_ARGS 
"${LIBSSH2_CMAKE_ARGS}")
-
-    # Build project
-    ExternalProject_Add(
-            libssh2-external
-            URL 
"https://github.com/libssh2/libssh2/releases/download/libssh2-1.10.0/libssh2-1.10.0.tar.gz";
-            URL_HASH 
"SHA256=2d64e90f3ded394b91d3a2e774ca203a4179f69aebee03003e5a6fa621e41d51"
-            SOURCE_DIR "${BINARY_DIR}/thirdparty/libssh2-src"
-            LIST_SEPARATOR % # This is needed for passing semicolon-separated 
lists
-            CMAKE_ARGS ${LIBSSH2_CMAKE_ARGS}
-            PATCH_COMMAND ${PC}
-            BUILD_BYPRODUCTS 
"${BINARY_DIR}/thirdparty/libssh2-install/${BYPRODUCT}"
-            EXCLUDE_FROM_ALL TRUE
-            DOWNLOAD_NO_PROGRESS TRUE
-            TLS_VERIFY TRUE
-    )
-
-    # Set dependencies
-    add_dependencies(libssh2-external OpenSSL::Crypto ZLIB::ZLIB)
-
-    # Set variables
-    set(LIBSSH2_FOUND "YES" CACHE STRING "" FORCE)
-    set(LIBSSH2_INCLUDE_DIR "${BINARY_DIR}/thirdparty/libssh2-install/include" 
CACHE STRING "" FORCE)
-    set(LIBSSH2_LIBRARY 
"${BINARY_DIR}/thirdparty/libssh2-install/${BYPRODUCT}" CACHE STRING "" FORCE)
-
-    # Set exported variables for FindPackage.cmake
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_LIBSSH2_INCLUDE_DIR=${LIBSSH2_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_LIBSSH2_LIBRARY=${LIBSSH2_LIBRARY}" CACHE STRING "" FORCE)
-
-    # Create imported targets
-    file(MAKE_DIRECTORY ${LIBSSH2_INCLUDE_DIR})
-
-    add_library(libssh2 STATIC IMPORTED)
-    set_target_properties(libssh2 PROPERTIES IMPORTED_LOCATION 
"${LIBSSH2_LIBRARY}")
-    add_dependencies(libssh2 libssh2-external)
-    set_property(TARGET libssh2 APPEND PROPERTY INTERFACE_LINK_LIBRARIES 
OpenSSL::Crypto ZLIB::ZLIB)
-    set_property(TARGET libssh2 APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES 
${LIBSSH2_INCLUDE_DIR})
-endfunction(use_bundled_libssh2)
diff --git a/cmake/BundledLibcURL.cmake b/cmake/BundledLibcURL.cmake
deleted file mode 100644
index fa2b6b565..000000000
--- a/cmake/BundledLibcURL.cmake
+++ /dev/null
@@ -1,106 +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_curl SOURCE_DIR BINARY_DIR)
-    # Define patch step
-    set(PATCH_FILE_1 "${SOURCE_DIR}/thirdparty/curl/module-path.patch")
-    set(PC ${Bash_EXECUTABLE} -c "set -x && \
-            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i 
\"${PATCH_FILE_1}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE_1}\")")
-    # Define byproducts
-    string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
-    if (WIN32)
-        if (build_type MATCHES relwithdebinfo OR build_type MATCHES release)
-            set(BYPRODUCT "lib/libcurl.lib")
-        else()
-            set(BYPRODUCT "lib/libcurl-d.lib")
-        endif()
-    else()
-        include(GNUInstallDirs)
-        string(REPLACE "/" ";" LIBDIR_LIST ${CMAKE_INSTALL_LIBDIR})
-        list(GET LIBDIR_LIST 0 LIBDIR)
-        if (build_type MATCHES relwithdebinfo OR build_type MATCHES release)
-            set(BYPRODUCT "${LIBDIR}/libcurl.a")
-        else()
-            set(BYPRODUCT "${LIBDIR}/libcurl-d.a")
-        endif()
-    endif()
-
-    # Set build options
-    set(CURL_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-            "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/curl-install"
-            -DBUILD_CURL_EXE=OFF
-            -DBUILD_TESTING=OFF
-            -DBUILD_SHARED_LIBS=OFF
-            -DHTTP_ONLY=ON
-            -DCURL_CA_PATH=none
-            -DCURL_USE_LIBSSH2=OFF
-            -DUSE_LIBIDN2=OFF
-            -DCURL_USE_LIBPSL=OFF
-            -DCURL_USE_OPENSSL=ON
-            -DUSE_NGHTTP2=OFF
-            -DCURL_ZSTD=OFF
-            -DCURL_BROTLI=OFF
-            )
-
-    append_third_party_passthrough_args(CURL_CMAKE_ARGS "${CURL_CMAKE_ARGS}")
-
-    # Build project
-    ExternalProject_Add(
-            curl-external
-            URL 
"https://github.com/curl/curl/releases/download/curl-8_18_0/curl-8.18.0.tar.gz";
-            URL_HASH 
"SHA256=e9274a5f8ab5271c0e0e6762d2fce194d5f98acc568e4ce816845b2dcc0cf88f"
-            SOURCE_DIR "${BINARY_DIR}/thirdparty/curl-src"
-            LIST_SEPARATOR % # This is needed for passing semicolon-separated 
lists
-            CMAKE_ARGS ${CURL_CMAKE_ARGS}
-            PATCH_COMMAND ${PC}
-            BUILD_BYPRODUCTS 
"${BINARY_DIR}/thirdparty/curl-install/${BYPRODUCT}"
-            EXCLUDE_FROM_ALL TRUE
-            DOWNLOAD_NO_PROGRESS TRUE
-            TLS_VERIFY TRUE
-    )
-
-    # Set dependencies
-    add_dependencies(curl-external ZLIB::ZLIB OpenSSL::SSL OpenSSL::Crypto)
-
-    # Set variables
-    set(CURL_FOUND "YES" CACHE STRING "" FORCE)
-    set(CURL_INCLUDE_DIR "${BINARY_DIR}/thirdparty/curl-install/include" CACHE 
STRING "" FORCE)
-    set(CURL_INCLUDE_DIRS "${CURL_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(CURL_LIBRARY "${BINARY_DIR}/thirdparty/curl-install/${BYPRODUCT}" 
CACHE STRING "" FORCE)
-    set(CURL_LIBRARIES "${CURL_LIBRARY}" CACHE STRING "" FORCE)
-
-    # Set exported variables for FindPackage.cmake
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_CURL_INCLUDE_DIR=${CURL_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_CURL_LIBRARY=${CURL_LIBRARY}" CACHE STRING "" FORCE)
-
-    # Create imported targets
-    file(MAKE_DIRECTORY ${CURL_INCLUDE_DIRS})
-
-    add_library(CURL::libcurl STATIC IMPORTED)
-    set_target_properties(CURL::libcurl PROPERTIES IMPORTED_LOCATION 
"${CURL_LIBRARY}")
-    add_dependencies(CURL::libcurl curl-external)
-    target_include_directories(CURL::libcurl INTERFACE ${CURL_INCLUDE_DIRS})
-    target_link_libraries(CURL::libcurl INTERFACE ZLIB::ZLIB Threads::Threads 
OpenSSL::SSL OpenSSL::Crypto)
-    target_compile_definitions(CURL::libcurl INTERFACE CURL_STATICLIB)
-    if (APPLE)
-        target_link_libraries(CURL::libcurl INTERFACE "-framework 
CoreFoundation")
-        target_link_libraries(CURL::libcurl INTERFACE "-framework 
SystemConfiguration")
-        target_link_libraries(CURL::libcurl INTERFACE "-framework 
CoreServices")
-    elseif (WIN32)
-        target_link_libraries(CURL::libcurl INTERFACE Iphlpapi.lib)
-    endif()
-endfunction(use_bundled_curl SOURCE_DIR BINARY_DIR)
diff --git a/cmake/BundledOpenSSL.cmake b/cmake/BundledOpenSSL.cmake
index 306899ef9..dd0400395 100644
--- a/cmake/BundledOpenSSL.cmake
+++ b/cmake/BundledOpenSSL.cmake
@@ -259,5 +259,6 @@ function(use_openssl SOURCE_DIR BINARY_DIR)
     endif()
 
     add_dependencies(OpenSSL::Crypto openssl-fips-external)
+    set(OPENSSL_ROOT_DIR "${OPENSSL_BIN_DIR}" CACHE INTERNAL "Strict single 
source of truth for bundled OpenSSL")
 
 endfunction(use_openssl)
diff --git a/cmake/CivetWeb.cmake b/cmake/CivetWeb.cmake
index 308839201..67022f6ef 100644
--- a/cmake/CivetWeb.cmake
+++ b/cmake/CivetWeb.cmake
@@ -19,8 +19,10 @@ if(TARGET civetweb::civetweb-cpp)
 endif()
 
 include(FetchContent)
+find_package(OpenSSL REQUIRED)
 
 set(CIVETWEB_ENABLE_SSL_DYNAMIC_LOADING "OFF" CACHE STRING "" FORCE)
+set(CIVETWEB_ENABLE_SERVER_EXECUTABLE OFF CACHE BOOL "" FORCE)
 set(CIVETWEB_BUILD_TESTING "OFF" CACHE STRING "" FORCE)
 set(CIVETWEB_ENABLE_DUKTAPE "OFF" CACHE STRING "" FORCE)
 set(CIVETWEB_ENABLE_LUA "OFF" CACHE STRING "" FORCE)
@@ -40,8 +42,8 @@ FetchContent_Declare(civetweb
 
 FetchContent_MakeAvailable(civetweb)
 
-add_dependencies(civetweb-c-library OpenSSL::Crypto OpenSSL::SSL)
-add_dependencies(civetweb-cpp OpenSSL::Crypto OpenSSL::SSL)
+target_link_libraries(civetweb-c-library OpenSSL::SSL OpenSSL::Crypto)
+target_link_libraries(civetweb-cpp PUBLIC OpenSSL::SSL OpenSSL::Crypto)
 
 target_compile_definitions(civetweb-c-library PRIVATE 
SOCKET_TIMEOUT_QUANTUM=200)
 
diff --git a/cmake/FetchLibSSH2.cmake b/cmake/FetchLibSSH2.cmake
new file mode 100644
index 000000000..d4d99dec8
--- /dev/null
+++ b/cmake/FetchLibSSH2.cmake
@@ -0,0 +1,44 @@
+# 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.
+
+message(STATUS "Using bundled libssh2 via FetchContent")
+
+find_package(OpenSSL REQUIRED)
+find_package(ZLIB REQUIRED)
+
+include(FetchContent)
+
+set(PC "${Patch_EXECUTABLE}" -p1 -i 
"${CMAKE_SOURCE_DIR}/thirdparty/libssh2/libssh2-CMAKE_MODULE_PATH.patch")
+
+FetchContent_Declare(
+        libssh2
+        URL 
"https://github.com/libssh2/libssh2/releases/download/libssh2-1.10.0/libssh2-1.10.0.tar.gz";
+        URL_HASH 
"SHA256=2d64e90f3ded394b91d3a2e774ca203a4179f69aebee03003e5a6fa621e41d51"
+        PATCH_COMMAND ${PC}
+        SYSTEM
+        OVERRIDE_FIND_PACKAGE
+)
+
+set(ENABLE_ZLIB_COMPRESSION ON CACHE BOOL "" FORCE)
+set(CRYPTO_BACKEND "OpenSSL" CACHE STRING "" FORCE)
+set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
+set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
+set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
+
+FetchContent_MakeAvailable(libssh2)
+
+target_link_libraries(libssh2 PUBLIC OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB)
diff --git a/cmake/FetchLibcURL.cmake b/cmake/FetchLibcURL.cmake
new file mode 100644
index 000000000..3b3637f3d
--- /dev/null
+++ b/cmake/FetchLibcURL.cmake
@@ -0,0 +1,68 @@
+# 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.
+
+find_package(OpenSSL REQUIRED)
+find_package(ZLIB REQUIRED)
+find_package(Threads REQUIRED)
+
+include(FetchContent)
+
+set(PATCH_FILE "${CMAKE_SOURCE_DIR}/thirdparty/curl/module-path.patch")
+set(PC "${Patch_EXECUTABLE}" -p1 -i "${PATCH_FILE}")
+
+FetchContent_Declare(
+        curl
+        URL 
"https://github.com/curl/curl/releases/download/curl-8_19_0/curl-8.19.0.tar.gz";
+        URL_HASH 
"SHA256=2a2c11db4c122691aa23b4363befda1bfd801770bfebf41e1d21cee4f2ab0f71"
+        PATCH_COMMAND ${PC}
+        SYSTEM
+        OVERRIDE_FIND_PACKAGE
+)
+
+set(BUILD_CURL_EXE OFF CACHE BOOL "" FORCE)
+set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
+set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
+set(HTTP_ONLY ON CACHE BOOL "" FORCE)
+set(CURL_CA_PATH "none" CACHE STRING "" FORCE)
+set(CURL_USE_LIBSSH2 OFF CACHE BOOL "" FORCE)
+set(USE_LIBIDN2 OFF CACHE BOOL "" FORCE)
+set(CURL_USE_LIBPSL OFF CACHE BOOL "" FORCE)
+set(CURL_USE_OPENSSL ON CACHE BOOL "" FORCE)
+set(USE_NGHTTP2 OFF CACHE BOOL "" FORCE)
+set(CURL_ZSTD OFF CACHE BOOL "" FORCE)
+set(CURL_BROTLI OFF CACHE BOOL "" FORCE)
+
+FetchContent_MakeAvailable(curl)
+
+if (TARGET libcurl_static)
+    target_compile_definitions(libcurl_static PUBLIC CURL_STATICLIB)
+
+    if (APPLE)
+        target_link_libraries(libcurl_static INTERFACE "-framework 
CoreFoundation -framework SystemConfiguration -framework CoreServices")
+    elseif (WIN32)
+        target_link_libraries(libcurl_static INTERFACE Iphlpapi.lib)
+    endif ()
+else()
+    message(WARNING "libcurl_static target not found; bundled curl may not 
link correctly.")
+endif()
+
+# --- EXPORT LEGACY VARIABLES ---
+set(CURL_FOUND "YES" CACHE INTERNAL "")
+set(CURL_INCLUDE_DIR "${curl_SOURCE_DIR}/include" CACHE INTERNAL "")
+set(CURL_INCLUDE_DIRS "${curl_SOURCE_DIR}/include" CACHE INTERNAL "")
+set(CURL_LIBRARY CURL::libcurl CACHE INTERNAL "")
+set(CURL_LIBRARIES CURL::libcurl CACHE INTERNAL "")
diff --git a/cmake/GetLibCURL.cmake b/cmake/GetLibCURL.cmake
index afd38f3c9..72c6a2845 100644
--- a/cmake/GetLibCURL.cmake
+++ b/cmake/GetLibCURL.cmake
@@ -21,7 +21,6 @@ function(get_curl SOURCE_DIR BINARY_DIR)
         find_package(CURL REQUIRED)
     elseif(MINIFI_LIBCURL_SOURCE STREQUAL "BUILD")
         message("Using CMake to build libcurl from source")
-        include(BundledLibcURL)
-        use_bundled_curl(${SOURCE_DIR} ${BINARY_DIR})
+        include(FetchLibcURL)
     endif()
 endfunction(get_curl SOURCE_DIR BINARY_DIR)
diff --git a/cmake/KubernetesClientC.cmake b/cmake/KubernetesClientC.cmake
index 912983af9..bc5d13bf2 100644
--- a/cmake/KubernetesClientC.cmake
+++ b/cmake/KubernetesClientC.cmake
@@ -16,6 +16,7 @@
 # under the License.
 
 include(FetchContent)
+find_package(OpenSSL REQUIRED)
 
 set(BUILD_TESTING OFF     CACHE BOOL "" FORCE)
 set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
@@ -64,4 +65,4 @@ FetchContent_Declare(kubernetes
 
 FetchContent_MakeAvailable(kubernetes)
 
-add_dependencies(websockets CURL::libcurl OpenSSL::Crypto OpenSSL::SSL)
+target_link_libraries(websockets CURL::libcurl OpenSSL::Crypto OpenSSL::SSL)
diff --git a/cmake/PahoMqttC.cmake b/cmake/PahoMqttC.cmake
index 322239025..16148cf12 100644
--- a/cmake/PahoMqttC.cmake
+++ b/cmake/PahoMqttC.cmake
@@ -41,4 +41,4 @@ FetchContent_MakeAvailable(paho.mqtt.c-external)
 
 # Set dependencies and target to link to
 add_library(paho.mqtt.c ALIAS paho-mqtt3as-static)
-add_dependencies(common_ssl_obj_static OpenSSL::SSL OpenSSL::Crypto)
+target_link_libraries(common_ssl_obj_static PUBLIC OpenSSL::SSL 
OpenSSL::Crypto)
diff --git a/cmake/curl/dummy/FindCURL.cmake b/cmake/curl/dummy/FindCURL.cmake
deleted file mode 100644
index 77347bac2..000000000
--- a/cmake/curl/dummy/FindCURL.cmake
+++ /dev/null
@@ -1,31 +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.
-
-if(NOT CURL_FOUND AND EXPORTED_CURL_INCLUDE_DIR AND EXPORTED_CURL_LIBRARY)
-    set(CURL_FOUND "YES" CACHE STRING "" FORCE)
-    set(CURL_INCLUDE_DIR "${EXPORTED_CURL_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(CURL_INCLUDE_DIRS "${CURL_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(CURL_LIBRARY "${EXPORTED_CURL_LIBRARY}" CACHE STRING "" FORCE)
-    set(CURL_LIBRARIES "${CURL_LIBRARY}" CACHE STRING "" FORCE)
-endif()
-
-if(NOT TARGET CURL::libcurl)
-    add_library(CURL::libcurl STATIC IMPORTED)
-    set_target_properties(CURL::libcurl PROPERTIES IMPORTED_LOCATION 
"${CURL_LIBRARIES}")
-    set_property(TARGET CURL::libcurl APPEND PROPERTY 
INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}")
-    target_compile_definitions(CURL::libcurl INTERFACE CURL_STATICLIB)
-endif()
diff --git a/cmake/libssh2/dummy/FindLibSSH2.cmake 
b/cmake/libssh2/dummy/FindLibSSH2.cmake
deleted file mode 100644
index 9366abe6d..000000000
--- a/cmake/libssh2/dummy/FindLibSSH2.cmake
+++ /dev/null
@@ -1,22 +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.
-
-if(NOT LIBSSH2_FOUND)
-    set(LIBSSH2_FOUND "YES" CACHE STRING "" FORCE)
-    set(LIBSSH2_INCLUDE_DIR "${EXPORTED_LIBSSH2_INCLUDE_DIR}" CACHE STRING "" 
FORCE)
-    set(LIBSSH2_LIBRARY "${EXPORTED_LIBSSH2_LIBRARY}" CACHE STRING "" FORCE)
-endif()
diff --git a/cmake/libssh2/sys/FindLibSSH2.cmake 
b/cmake/libssh2/sys/FindLibSSH2.cmake
deleted file mode 100644
index 4f2a4dde8..000000000
--- a/cmake/libssh2/sys/FindLibSSH2.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-# - Try to find the libssh2 library
-# Once done this will define
-#
-# LIBSSH2_FOUND - system has the libssh2 library
-# LIBSSH2_INCLUDE_DIR - the libssh2 include directory
-# LIBSSH2_LIBRARY - the libssh2 library name
-
-if(LIBSSH2_INCLUDE_DIR AND LIBSSH2_LIBRARY)
-    set(LibSSH2_FIND_QUIETLY TRUE)
-endif()
-
-find_path(LIBSSH2_INCLUDE_DIR libssh2.h
-        )
-
-find_library(LIBSSH2_LIBRARY NAMES ssh2
-        )
-
-if(LIBSSH2_INCLUDE_DIR)
-    file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" libssh2_version_str REGEX 
"^#define[\t ]+LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9][0-9][0-9][0-9][0-9].*")
-
-    string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x([0-9][0-9]).*$" "\\1" 
LIBSSH2_VERSION_MAJOR "${libssh2_version_str}")
-    string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t 
]+0x[0-9][0-9]([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_MINOR  
"${libssh2_version_str}")
-    string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t 
]+0x[0-9][0-9][0-9][0-9]([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_PATCH 
"${libssh2_version_str}")
-
-    string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_MAJOR 
"${LIBSSH2_VERSION_MAJOR}")
-    string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_MINOR 
"${LIBSSH2_VERSION_MINOR}")
-    string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_PATCH 
"${LIBSSH2_VERSION_PATCH}")
-
-    set(LIBSSH2_VERSION 
"${LIBSSH2_VERSION_MAJOR}.${LIBSSH2_VERSION_MINOR}.${LIBSSH2_VERSION_PATCH}")
-endif()
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(LibSSH2 DEFAULT_MSG LIBSSH2_INCLUDE_DIR 
LIBSSH2_LIBRARY )
-
-mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY LIBSSH2_VERSION_MAJOR 
LIBSSH2_VERSION_MINOR LIBSSH2_VERSION_PATCH LIBSSH2_VERSION)
\ No newline at end of file
diff --git a/cmake/ssl/FindCrypto.cmake b/cmake/ssl/FindCrypto.cmake
new file mode 100644
index 000000000..bca84e846
--- /dev/null
+++ b/cmake/ssl/FindCrypto.cmake
@@ -0,0 +1,56 @@
+# 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.
+
+if(TARGET crypto OR TARGET AWS::crypto)
+    set(CRYPTO_FOUND TRUE)
+    set(crypto_FOUND TRUE)
+    return()
+endif()
+
+if(NOT OPENSSL_ROOT_DIR)
+    message(FATAL_ERROR "Strict bundled crypto requires OPENSSL_ROOT_DIR to be 
passed to this CMake scope!")
+endif()
+
+find_library(crypto_STATIC_LIBRARY
+        NAMES libcrypto.a crypto.lib
+        PATHS "${OPENSSL_ROOT_DIR}/lib" "${OPENSSL_ROOT_DIR}/lib64"
+        NO_DEFAULT_PATH # Strictly prevent system fallback
+)
+
+set(crypto_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include")
+set(crypto_LIBRARY "${crypto_STATIC_LIBRARY}")
+
+if(NOT crypto_LIBRARY OR NOT EXISTS "${crypto_INCLUDE_DIR}")
+    message(FATAL_ERROR "Failed to locate bundled crypto (libcrypto) inside 
${OPENSSL_ROOT_DIR}")
+endif()
+
+set(CRYPTO_FOUND TRUE)
+set(crypto_FOUND TRUE)
+set(crypto_SHARED_LIBRARY "")
+set(crypto_STATIC_LIBRARY "${crypto_LIBRARY}")
+
+add_library(AWS::crypto UNKNOWN IMPORTED)
+set_target_properties(AWS::crypto PROPERTIES
+        IMPORTED_LOCATION "${crypto_LIBRARY}"
+        INTERFACE_INCLUDE_DIRECTORIES "${crypto_INCLUDE_DIR}"
+)
+
+add_library(crypto ALIAS AWS::crypto)
+
+if(WIN32)
+    set_property(TARGET AWS::crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES 
crypt32.lib)
+endif()
diff --git a/cmake/ssl/FindOpenSSL.cmake b/cmake/ssl/FindOpenSSL.cmake
index 626efbb5c..1723258bb 100644
--- a/cmake/ssl/FindOpenSSL.cmake
+++ b/cmake/ssl/FindOpenSSL.cmake
@@ -15,31 +15,52 @@
 # specific language governing permissions and limitations
 # under the License.
 
-# Dummy OpenSSL find for when we use bundled version
-
-if(NOT OPENSSL_FOUND)
-    set(OPENSSL_FOUND "YES" CACHE STRING "" FORCE)
-    set(OPENSSL_INCLUDE_DIR "${EXPORTED_OPENSSL_INCLUDE_DIR}" CACHE STRING "" 
FORCE)
-    set(OPENSSL_CRYPTO_LIBRARY "${EXPORTED_OPENSSL_CRYPTO_LIBRARY}" CACHE 
STRING "" FORCE)
-    set(OPENSSL_SSL_LIBRARY "${EXPORTED_OPENSSL_SSL_LIBRARY}" CACHE STRING "" 
FORCE)
-    set(OPENSSL_LIBRARIES "${EXPORTED_OPENSSL_LIBRARIES}" CACHE STRING "" 
FORCE)
-    set(OPENSSL_VERSION "${EXPORTED_OPENSSL_VERSION}" CACHE STRING "" FORCE)
-endif()
-
-if(NOT TARGET OpenSSL::Crypto)
-    add_library(OpenSSL::Crypto UNKNOWN IMPORTED)
-    set_target_properties(OpenSSL::Crypto PROPERTIES
-            INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
-    set_target_properties(OpenSSL::Crypto PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-            IMPORTED_LOCATION "${OPENSSL_CRYPTO_LIBRARY}")
-endif()
-
-if(NOT TARGET OpenSSL::SSL)
-    add_library(OpenSSL::SSL UNKNOWN IMPORTED)
-    set_target_properties(OpenSSL::SSL PROPERTIES
-            INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
-    set_target_properties(OpenSSL::SSL PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-            IMPORTED_LOCATION "${OPENSSL_SSL_LIBRARY}")
-endif()
+
+if (NOT OPENSSL_ROOT_DIR)
+    message(FATAL_ERROR "Strict bundled OpenSSL requires OPENSSL_ROOT_DIR to 
be passed to this CMake scope!")
+endif ()
+
+if (WIN32)
+    set(LIB_EXT ".lib")
+elseif (APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64|AMD64)$")
+    set(LIB_EXT ".dylib")
+else ()
+    set(LIB_EXT ".a")
+endif ()
+
+if (APPLE OR WIN32 OR CMAKE_SIZEOF_VOID_P EQUAL 4 OR CMAKE_SYSTEM_PROCESSOR 
MATCHES "^(arm64|aarch64|armv8)$")
+    set(OSSL_LIBDIR "lib")
+else ()
+    set(OSSL_LIBDIR "lib64")
+endif ()
+
+set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include" CACHE STRING "" FORCE)
+set(OPENSSL_CRYPTO_LIBRARY 
"${OPENSSL_ROOT_DIR}/${OSSL_LIBDIR}/libcrypto${LIB_EXT}" CACHE STRING "" FORCE)
+set(OPENSSL_SSL_LIBRARY "${OPENSSL_ROOT_DIR}/${OSSL_LIBDIR}/libssl${LIB_EXT}" 
CACHE STRING "" FORCE)
+set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} CACHE 
STRING "" FORCE)
+
+set(OPENSSL_FOUND TRUE CACHE STRING "" FORCE)
+set(OpenSSL_FOUND TRUE CACHE STRING "" FORCE)
+
+if (TARGET OpenSSL::Crypto AND TARGET OpenSSL::SSL)
+    set(OPENSSL_FOUND TRUE)
+    set(OpenSSL_FOUND TRUE)
+    return()
+endif ()
+
+add_library(OpenSSL::Crypto UNKNOWN IMPORTED)
+set_target_properties(OpenSSL::Crypto PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${OPENSSL_CRYPTO_LIBRARY}")
+
+add_library(OpenSSL::SSL UNKNOWN IMPORTED)
+set_target_properties(OpenSSL::SSL PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${OPENSSL_SSL_LIBRARY}")
+
+if (WIN32)
+    set_property(TARGET OpenSSL::Crypto APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES crypt32.lib)
+    set_property(TARGET OpenSSL::SSL APPEND PROPERTY INTERFACE_LINK_LIBRARIES 
crypt32.lib)
+endif ()
diff --git a/extensions/aws/CMakeLists.txt b/extensions/aws/CMakeLists.txt
index 1ab71715e..b99135e78 100644
--- a/extensions/aws/CMakeLists.txt
+++ b/extensions/aws/CMakeLists.txt
@@ -43,9 +43,9 @@ get_target_property(AWS_SDK_S3_INCLUDE_DIRS 
AWS::aws-cpp-sdk-s3 INTERFACE_INCLUD
 get_target_property(AWS_SDK_S3_CRT_INCLUDE_DIRS AWS::aws-cpp-sdk-s3-crt 
INTERFACE_INCLUDE_DIRECTORIES)
 get_target_property(AWS_SDK_KINESIS_INCLUDE_DIRS AWS::aws-cpp-sdk-kinesis 
INTERFACE_INCLUDE_DIRECTORIES)
 
-target_include_directories(minifi-aws INTERFACE ${AWS_SDK_S3_INCLUDE_DIRS})
-target_include_directories(minifi-aws INTERFACE ${AWS_SDK_S3_CRT_INCLUDE_DIRS})
-target_include_directories(minifi-aws INTERFACE 
${AWS_SDK_KINESIS_INCLUDE_DIRS})
+target_include_directories(minifi-aws SYSTEM INTERFACE 
${AWS_SDK_S3_INCLUDE_DIRS})
+target_include_directories(minifi-aws SYSTEM INTERFACE 
${AWS_SDK_S3_CRT_INCLUDE_DIRS})
+target_include_directories(minifi-aws SYSTEM INTERFACE 
${AWS_SDK_KINESIS_INCLUDE_DIRS})
 
 if(WIN32)
     target_compile_definitions(minifi-aws INTERFACE 
"AWS_CORE_API=__declspec(dllimport)")
diff --git a/extensions/aws/tests/CMakeLists.txt 
b/extensions/aws/tests/CMakeLists.txt
index 9490d845c..84f197950 100644
--- a/extensions/aws/tests/CMakeLists.txt
+++ b/extensions/aws/tests/CMakeLists.txt
@@ -31,6 +31,12 @@ FOREACH(testfile ${AWS_INTEGRATION_TESTS})
     target_link_libraries(${testfilename} Catch2)
     target_link_libraries(${testfilename} minifi-aws)
     target_link_libraries(${testfilename} minifi-standard-processors)
+    if(CMAKE_SYSTEM_PROCESSOR MATCHES "(arm64)|(ARM64)|(aarch64)|(armv8)")
+        target_link_libraries(${testfilename} AWS::aws-checksums)
+    endif()
+    target_link_libraries(${testfilename} AWS::aws-cpp-sdk-s3)
+    target_link_libraries(${testfilename} AWS::aws-cpp-sdk-s3-crt)
+    target_link_libraries(${testfilename} AWS::aws-cpp-sdk-kinesis)
     MATH(EXPR AWS_TEST_COUNT "${AWS_TEST_COUNT}+1")
     add_test(NAME "${testfilename}" COMMAND "${testfilename}" 
WORKING_DIRECTORY ${TEST_DIR})
     set_tests_properties("${testfilename}" PROPERTIES LABELS "aws")
diff --git a/extensions/aws/tests/PutKinesisStreamTests.cpp 
b/extensions/aws/tests/PutKinesisStreamTests.cpp
index 0ec9ba2df..2f6478bd9 100644
--- a/extensions/aws/tests/PutKinesisStreamTests.cpp
+++ b/extensions/aws/tests/PutKinesisStreamTests.cpp
@@ -28,6 +28,12 @@
 
 namespace org::apache::nifi::minifi::aws::processors::test {
 
+// Disable the warning specifically for GCC to bypass the AWS SDK 
uninitialized member bug
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
+
 class MockKinesisClient final : public Aws::Kinesis::KinesisClient {
  public:
   enum class KinesisBehaviour {
@@ -83,6 +89,11 @@ class MockKinesisClient final : public 
Aws::Kinesis::KinesisClient {
   mutable uint32_t sequence_number_ = 0;
 };
 
+// Restore compiler warnings to ensure the rest of your tests remain strict
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+
 class PutKinesisStreamMocked final : public aws::processors::PutKinesisStream 
{  // NOLINT(cppcoreguidelines-special-member-functions)
  public:
   static constexpr const char* Description = "PutKinesisStreamMocked";
diff --git a/extensions/civetweb/CMakeLists.txt 
b/extensions/civetweb/CMakeLists.txt
index d299bc6e7..4ef192f2e 100644
--- a/extensions/civetweb/CMakeLists.txt
+++ b/extensions/civetweb/CMakeLists.txt
@@ -17,7 +17,7 @@
 # under the License.
 #
 
-if (NOT ENABLE_CIVET)
+if (NOT (ENABLE_ALL OR ENABLE_CIVET))
     return()
 endif()
 
diff --git a/extensions/libarchive/CMakeLists.txt 
b/extensions/libarchive/CMakeLists.txt
index 14b75dcc2..f7e93b071 100644
--- a/extensions/libarchive/CMakeLists.txt
+++ b/extensions/libarchive/CMakeLists.txt
@@ -17,7 +17,7 @@
 # under the License.
 #
 
-if (NOT ENABLE_LIBARCHIVE)
+if (NOT (ENABLE_ALL OR ENABLE_LIBARCHIVE))
     return()
 endif()
 
diff --git a/extensions/sftp/CMakeLists.txt b/extensions/sftp/CMakeLists.txt
index 7200b41ba..ab437622b 100644
--- a/extensions/sftp/CMakeLists.txt
+++ b/extensions/sftp/CMakeLists.txt
@@ -21,9 +21,7 @@ if (NOT (ENABLE_ALL OR ENABLE_SFTP))
     return()
 endif()
 
-include(BundledLibSSH2)
-use_bundled_libssh2(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/libssh2/dummy")
+include(FetchLibSSH2)
 
 include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt)
 include_directories(client processors)
diff --git a/libminifi/src/core/state/nodes/AgentInformation.cpp 
b/libminifi/src/core/state/nodes/AgentInformation.cpp
index 498dada87..a3165c588 100644
--- a/libminifi/src/core/state/nodes/AgentInformation.cpp
+++ b/libminifi/src/core/state/nodes/AgentInformation.cpp
@@ -76,10 +76,9 @@ void serializeClassDescription(const 
std::vector<ClassDescription>& descriptions
         if (const auto default_value = prop.getDefaultValue()) {
           child.children.push_back({.name = "defaultValue", .value = 
*default_value});  // NOLINT(cppcoreguidelines-slicing)
         }
-
-        if (!prop.getAllowedValues().empty()) {
+        if (const auto& allowed_values = prop.getAllowedValues(); 
!allowed_values.empty()) {
           SerializedResponseNode allowedValues{.name = "allowableValues", 
.array = true};
-          for (const auto &av : prop.getAllowedValues()) {
+          for (const auto &av : allowed_values) {
             SerializedResponseNode allowableValue{
               .name = "allowableValues",
               .children = {
diff --git a/thirdparty/aws-sdk-cpp/aws-c-cal.patch 
b/thirdparty/aws-sdk-cpp/aws-c-cal.patch
new file mode 100644
index 000000000..3211a0608
--- /dev/null
+++ b/thirdparty/aws-sdk-cpp/aws-c-cal.patch
@@ -0,0 +1,42 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5d30c6d..dd20fb4 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -128,7 +128,7 @@ endif()
+ if (NOT BYO_CRYPTO)
+     if ((NOT WIN32 AND NOT APPLE) OR 
AWS_USE_LIBCRYPTO_TO_SUPPORT_ED25519_EVERYWHERE)
+         if (USE_OPENSSL AND NOT ANDROID)
+-            find_package(OpenSSL REQUIRED)
++            include(${FIND_OPENSSL_PATH})
+             find_package(Threads REQUIRED)
+             list(APPEND PLATFORM_LIBS OpenSSL::Crypto Threads::Threads)
+             message(STATUS "Using libcrypto: ${OPENSSL_CRYPTO_LIBRARY}")
+@@ -138,7 +138,7 @@ if (NOT BYO_CRYPTO)
+                 list(APPEND PLATFORM_LIBS  crypto)
+             elseif(AWSLC_PREBUILT)
+                 message(STATUS "Using prebuilt libcrypto from AWS-LC")
+-                find_package(crypto REQUIRED)
++                include(${FIND_CRYPTO_PATH})
+                 list(APPEND PLATFORM_LIBS  AWS::crypto)
+             else()
+                 message(FATAL_ERROR "Target crypto is not defined, failed to 
find libcrypto.")
+@@ -149,7 +149,7 @@ if (NOT BYO_CRYPTO)
+             if (IN_SOURCE_BUILD)
+                 list(APPEND PLATFORM_LIBS crypto)
+             else()
+-                find_package(crypto REQUIRED)
++                include(${FIND_CRYPTO_PATH})
+                 list(APPEND PLATFORM_LIBS AWS::crypto)
+             endif()
+         endif()
+@@ -216,10 +216,6 @@ install(FILES 
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
+     DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
+     COMPONENT Development)
+ 
+-list(APPEND EXPORT_MODULES
+-    "cmake/modules/Findcrypto.cmake"
+-    )
+-
+ install(FILES ${EXPORT_MODULES}
+         DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/modules"
+         COMPONENT Development)
diff --git a/thirdparty/aws-sdk-cpp/s2n.patch b/thirdparty/aws-sdk-cpp/s2n.patch
new file mode 100644
index 000000000..7f51198f3
--- /dev/null
+++ b/thirdparty/aws-sdk-cpp/s2n.patch
@@ -0,0 +1,51 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2acb62d91..6470de162 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -264,9 +264,9 @@ if (TARGET crypto)
+     message(STATUS "S2N found target: crypto")
+     set(LINK_LIB "crypto")
+ else()
+-    find_package(crypto REQUIRED)
++    include(${FIND_OPENSSL_PATH})
+     message(STATUS "Using libcrypto from the cmake path")
+-    set(LINK_LIB "AWS::crypto")
++    set(LINK_LIB "OpenSSL::Crypto")
+ endif()
+ 
+ if (S2N_INTERN_LIBCRYPTO)
+@@ -375,11 +375,11 @@ endif()
+ 
+ if (S2N_INTERN_LIBCRYPTO)
+ 
+-    # Check if the AWS::crypto target has been added and handle it
+-    if (TARGET AWS::crypto)
++    # Check if the OpenSSL::Crypto target has been added and handle it
++    if (TARGET OpenSSL::Crypto)
+         # Get the target library type (shared or static)
+-        get_target_property(target_type AWS::crypto TYPE)
+-        message(STATUS "AWS::crypto target type: ${target_type}")
++        get_target_property(target_type OpenSSL::Crypto TYPE)
++        message(STATUS "OpenSSL::Crypto target type: ${target_type}")
+ 
+         # If we didn't find the a target with static library type, fallback to
+         # existing crypto_STATIC_LIBRARY and crypto_INCLUDE_DIR
+@@ -388,8 +388,8 @@ if (S2N_INTERN_LIBCRYPTO)
+             # The finder module defines these appropriately, but if we go 
through
+             # the target config we need to query this information from the 
target
+             # first.
+-            get_target_property(crypto_STATIC_LIBRARY AWS::crypto LOCATION)
+-            get_target_property(crypto_INCLUDE_DIR AWS::crypto 
INTERFACE_INCLUDE_DIRECTORIES)
++            get_target_property(crypto_STATIC_LIBRARY OpenSSL::Crypto 
LOCATION)
++            get_target_property(crypto_INCLUDE_DIR OpenSSL::Crypto 
INTERFACE_INCLUDE_DIRECTORIES)
+         endif()
+     endif()
+ 
+@@ -773,7 +773,3 @@ install(EXPORT "${PROJECT_NAME}-targets"
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
+         DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake/"
+         COMPONENT Development)
+-
+-install(FILES "cmake/modules/Findcrypto.cmake"
+-        DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake/modules/"
+-        COMPONENT Development)

Reply via email to