From 4952f03d150770ff06f9a12ff42d8de680407649 Mon Sep 17 00:00:00 2001
From: Yi Zhao <yi.zhao@windriver.com>
Date: Tue, 19 Mar 2024 19:39:04 +0800
Subject: [PATCH] Do not use bundled packages

Use external dependencies for openssl, curl, bzip2, zlib, libarchive,
xz, yaml-cpp and libxml2.

Upstream-Status: Inappropriate [embedded specific]

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
 CMakeLists.txt                       | 3 +--
 cmake/GetBZip2.cmake                 | 3 +++
 cmake/GetCatch2.cmake                | 4 ++++
 cmake/GetCivetWeb.cmake              | 3 +++
 cmake/GetFmt.cmake                   | 3 +++
 cmake/GetLibCURL.cmake               | 3 +++
 cmake/GetLibXml2.cmake               | 3 +++
 cmake/GetOpenSSL.cmake               | 3 +++
 cmake/GetRocksDB.cmake               | 4 ++++
 cmake/GetSpdlog.cmake                | 4 ++++
 cmake/GetZLIB.cmake                  | 3 +++
 cmake/GetZstd.cmake                  | 4 ++++
 extensions/libarchive/CMakeLists.txt | 6 ++----
 13 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 50e31d871..fc1718dfd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -265,8 +265,7 @@ include(GetSpdlog)
 get_spdlog()
 
 # yaml-cpp
-include(BundledYamlCpp)
-use_bundled_yamlcpp(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+find_package(yaml-cpp REQUIRED)
 
 # concurrentqueue
 add_library(concurrentqueue INTERFACE)
diff --git a/cmake/GetBZip2.cmake b/cmake/GetBZip2.cmake
index 2a7d47e9e..754122895 100644
--- a/cmake/GetBZip2.cmake
+++ b/cmake/GetBZip2.cmake
@@ -23,5 +23,8 @@ function(get_bzip2 SOURCE_DIR BINARY_DIR)
         message("Using CMake to build bzip2 from source")
         include(BundledBZip2)
         use_bundled_bzip2(${SOURCE_DIR} ${BINARY_DIR})
+    elseif(MINIFI_BZIP2_SOURCE STREQUAL "SYSTEM")
+        message("Using bzip2 provided by system")
+        find_package(BZip2 REQUIRED)
     endif()
 endfunction(get_bzip2)
diff --git a/cmake/GetCatch2.cmake b/cmake/GetCatch2.cmake
index d6c1d6acc..ec11b0a77 100644
--- a/cmake/GetCatch2.cmake
+++ b/cmake/GetCatch2.cmake
@@ -23,5 +23,9 @@ function(get_catch2)
     elseif(MINIFI_CATCH2_SOURCE STREQUAL "BUILD")
         message("Using CMake to build Catch2 from source")
         include(Catch2)
+    elseif(MINIFI_CATCH2_SOURCE STREQUAL "SYSTEM")
+        message("Using Catch2 provided by system")
+        find_package(Catch2 REQUIRED)
+        add_library(Catch2WithMain ALIAS Catch2::Catch2WithMain)
     endif()
 endfunction(get_catch2)
diff --git a/cmake/GetCivetWeb.cmake b/cmake/GetCivetWeb.cmake
index f30d22289..8fc39a0e2 100644
--- a/cmake/GetCivetWeb.cmake
+++ b/cmake/GetCivetWeb.cmake
@@ -22,5 +22,8 @@ function(get_civetweb)
     elseif(MINIFI_CIVETWEB_SOURCE STREQUAL "BUILD")
         message("Using CMake to build CivetWeb from source")
         include(CivetWeb)
+    elseif(MINIFI_CIVETWEB_SOURCE STREQUAL "SYSTEM")
+        message("Using CivetWeb provided by system")
+        find_package(civetweb REQUIRED)
     endif()
 endfunction(get_civetweb)
diff --git a/cmake/GetFmt.cmake b/cmake/GetFmt.cmake
index f4f28458d..579a63897 100644
--- a/cmake/GetFmt.cmake
+++ b/cmake/GetFmt.cmake
@@ -22,5 +22,8 @@ function(get_fmt)
     elseif(MINIFI_FMT_SOURCE STREQUAL "BUILD")
         message("Using CMake to build Fmt from source")
         include(fmt)
+    elseif(MINIFI_FMT_SOURCE STREQUAL "SYSTEM")
+        message("Using Fmt provided by system")
+        find_package(fmt REQUIRED)
     endif()
 endfunction(get_fmt)
diff --git a/cmake/GetLibCURL.cmake b/cmake/GetLibCURL.cmake
index afd38f3c9..0eac59ec4 100644
--- a/cmake/GetLibCURL.cmake
+++ b/cmake/GetLibCURL.cmake
@@ -23,5 +23,8 @@ function(get_curl SOURCE_DIR BINARY_DIR)
         message("Using CMake to build libcurl from source")
         include(BundledLibcURL)
         use_bundled_curl(${SOURCE_DIR} ${BINARY_DIR})
+    elseif(MINIFI_LIBCURL_SOURCE STREQUAL "SYSTEM")
+        message("Using libcurl provided by system")
+        find_package(CURL REQUIRED)
     endif()
 endfunction(get_curl SOURCE_DIR BINARY_DIR)
diff --git a/cmake/GetLibXml2.cmake b/cmake/GetLibXml2.cmake
index 5915b117d..18048715d 100644
--- a/cmake/GetLibXml2.cmake
+++ b/cmake/GetLibXml2.cmake
@@ -23,5 +23,8 @@ function(get_libxml2 SOURCE_DIR BINARY_DIR)
         message("Using CMake to build libxml2 from source")
         include(BundledLibXml2)
         use_bundled_libxml2(${SOURCE_DIR} ${BINARY_DIR})
+    elseif(MINIFI_LIBXML2_SOURCE STREQUAL "SYSTEM")
+        message("Using libxml2 provided by system")
+        find_package(libxml2 REQUIRED)
     endif()
 endfunction(get_libxml2)
diff --git a/cmake/GetOpenSSL.cmake b/cmake/GetOpenSSL.cmake
index 58132c6bf..2b142f94e 100644
--- a/cmake/GetOpenSSL.cmake
+++ b/cmake/GetOpenSSL.cmake
@@ -23,5 +23,8 @@ function(get_openssl SOURCE_DIR BINARY_DIR)
         message("Using CMake to build OpenSSL from source")
         include(BundledOpenSSL)
         use_openssl(${SOURCE_DIR} ${BINARY_DIR})
+    elseif(MINIFI_OPENSSL_SOURCE STREQUAL "SYSTEM")
+        message("Using OpenSSL provided by system")
+        find_package(OpenSSL REQUIRED)
     endif()
 endfunction(get_openssl)
diff --git a/cmake/GetRocksDB.cmake b/cmake/GetRocksDB.cmake
index 0968afc38..3ca1fe565 100644
--- a/cmake/GetRocksDB.cmake
+++ b/cmake/GetRocksDB.cmake
@@ -30,5 +30,9 @@ function(get_rocksdb SOURCE_DIR BINARY_DIR)
             list(APPEND CMAKE_MODULE_PATH "${SOURCE_DIR}/cmake/rocksdb/sys")
             find_package(RocksDB REQUIRED)
         endif()
+    elseif(MINIFI_ROCKSDB_SOURCE STREQUAL "SYSTEM")
+        message("Using RocksDB provided by system")
+        list(APPEND CMAKE_MODULE_PATH "${SOURCE_DIR}/cmake/rocksdb/sys")
+        find_package(RocksDB REQUIRED)
     endif()
 endfunction(get_rocksdb SOURCE_DIR BINARY_DIR)
diff --git a/cmake/GetSpdlog.cmake b/cmake/GetSpdlog.cmake
index 747894984..6255e31bf 100644
--- a/cmake/GetSpdlog.cmake
+++ b/cmake/GetSpdlog.cmake
@@ -27,5 +27,9 @@ function(get_spdlog)
     elseif(MINIFI_SPDLOG_SOURCE STREQUAL "BUILD")
         message("Using CMake to build spdlog from source")
         include(Spdlog)
+    elseif(MINIFI_SPDLOG_SOURCE STREQUAL "SYSTEM")
+        message("Using spdlog provided by system")
+        find_package(spdlog REQUIRED)
+        add_library(spdlog ALIAS spdlog::spdlog)
     endif()
 endfunction(get_spdlog)
diff --git a/cmake/GetZLIB.cmake b/cmake/GetZLIB.cmake
index 6e7bea1e3..c15e2246a 100644
--- a/cmake/GetZLIB.cmake
+++ b/cmake/GetZLIB.cmake
@@ -23,5 +23,8 @@ function(get_zlib SOURCE_DIR BINARY_DIR)
         message("Using CMake to build zlib from source")
         include(BundledZLIB)
         use_bundled_zlib(${SOURCE_DIR} ${BINARY_DIR})
+    elseif(MINIFI_ZLIB_SOURCE STREQUAL "SYSTEM")
+        message("Using zlib provided by system")
+        find_package(ZLIB REQUIRED)
     endif()
 endfunction(get_zlib)
diff --git a/cmake/GetZstd.cmake b/cmake/GetZstd.cmake
index a0334b02d..0e7600c22 100644
--- a/cmake/GetZstd.cmake
+++ b/cmake/GetZstd.cmake
@@ -23,5 +23,9 @@ function(get_zstd)
     elseif(MINIFI_ZSTD_SOURCE STREQUAL "BUILD")
         message("Using CMake to build zstd from source")
         include(Zstd)
+    elseif(MINIFI_ZSTD_SOURCE STREQUAL "SYSTEM")
+        message("Using zstd provided by system")
+        find_package(zstd REQUIRED)
+        add_library(zstd::zstd ALIAS zstd::libzstd_static)
     endif()
 endfunction(get_zstd)
diff --git a/extensions/libarchive/CMakeLists.txt b/extensions/libarchive/CMakeLists.txt
index bf7b2a7f5..eb6b71091 100644
--- a/extensions/libarchive/CMakeLists.txt
+++ b/extensions/libarchive/CMakeLists.txt
@@ -22,12 +22,10 @@ if (NOT ENABLE_LIBARCHIVE)
 endif()
 
 if (ENABLE_LZMA)
-    include(LibLZMA)
-    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/liblzma/dummy")
+    find_package(LibLZMA REQUIRED)
 endif()
 
-include(BundledLibArchive)
-use_bundled_libarchive(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
+find_package(LibArchive REQUIRED)
 
 include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt)
 
-- 
2.34.1

