From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Use system libraries

Everything, except for Eigen3.

Signed-off-by: Pavel Sobolev <contact@paveloom.dev>

diff -urN a/cmake/external/abseil-cpp.cmake b/cmake/external/abseil-cpp.cmake
--- a/cmake/external/abseil-cpp.cmake	2026-09-10 09:09:41.000000000 +0300
+++ b/cmake/external/abseil-cpp.cmake	2026-09-11 14:32:05.394426544 +0300
@@ -40,7 +40,7 @@
     URL_HASH SHA1=${DEP_SHA1_abseil_cpp}
     EXCLUDE_FROM_ALL
     PATCH_COMMAND ${ABSL_PATCH_COMMAND}
-    FIND_PACKAGE_ARGS 20250814 NAMES absl
+    FIND_PACKAGE_ARGS NAMES absl REQUIRED
 )
 
 onnxruntime_fetchcontent_makeavailable(abseil_cpp)
diff -urN a/cmake/external/onnxruntime_external_deps.cmake b/cmake/external/onnxruntime_external_deps.cmake
--- a/cmake/external/onnxruntime_external_deps.cmake	2026-09-10 09:09:41.000000000 +0300
+++ b/cmake/external/onnxruntime_external_deps.cmake	2026-09-11 14:32:05.397319574 +0300
@@ -44,7 +44,7 @@
     URL ${DEP_URL_re2}
     URL_HASH SHA1=${DEP_SHA1_re2}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS NAMES re2
+    FIND_PACKAGE_ARGS NAMES re2 REQUIRED
 )
 onnxruntime_fetchcontent_makeavailable(re2)
 
@@ -72,7 +72,7 @@
     URL ${DEP_URL_googletest}
     URL_HASH SHA1=${DEP_SHA1_googletest}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS 1.14.0...<2.0.0 NAMES GTest
+    FIND_PACKAGE_ARGS 1.14.0...<2.0.0 NAMES GTest REQUIRED
   )
   FetchContent_MakeAvailable(googletest)
 endif()
@@ -88,7 +88,7 @@
     URL ${DEP_URL_google_benchmark}
     URL_HASH SHA1=${DEP_SHA1_google_benchmark}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS NAMES benchmark
+    FIND_PACKAGE_ARGS NAMES benchmark REQUIRED
   )
   onnxruntime_fetchcontent_makeavailable(google_benchmark)
 endif()
@@ -106,7 +106,7 @@
     URL ${DEP_URL_mimalloc}
     URL_HASH SHA1=${DEP_SHA1_mimalloc}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS NAMES mimalloc
+    FIND_PACKAGE_ARGS NAMES mimalloc REQUIRED
   )
   FetchContent_MakeAvailable(mimalloc)
 endif()
@@ -201,7 +201,7 @@
   URL_HASH SHA1=${DEP_SHA1_protobuf}
   PATCH_COMMAND ${ONNXRUNTIME_PROTOBUF_PATCH_COMMAND}
   EXCLUDE_FROM_ALL
-  FIND_PACKAGE_ARGS NAMES Protobuf protobuf
+  FIND_PACKAGE_ARGS NAMES Protobuf protobuf REQUIRED
 )
 
 set(protobuf_BUILD_TESTS OFF CACHE BOOL "Build protobuf tests" FORCE)
@@ -278,7 +278,7 @@
   EXCLUDE_FROM_ALL
   PATCH_COMMAND
     ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/date/date.patch
-  FIND_PACKAGE_ARGS 3...<4 NAMES date
+  FIND_PACKAGE_ARGS 3...<4 NAMES date REQUIRED
 )
 onnxruntime_fetchcontent_makeavailable(date)
 
@@ -292,12 +292,11 @@
      mp11
      URL ${DEP_URL_mp11}
      EXCLUDE_FROM_ALL
-     FIND_PACKAGE_ARGS NAMES Boost
+     FIND_PACKAGE_ARGS NAMES Boost REQUIRED
     )
-    FetchContent_Populate(mp11)
+    onnxruntime_fetchcontent_makeavailable(mp11)
     if(NOT TARGET Boost::mp11)
-      add_library(Boost::mp11 IMPORTED INTERFACE)
-      target_include_directories(Boost::mp11 INTERFACE $<BUILD_INTERFACE:${mp11_SOURCE_DIR}/include>)
+      add_library(Boost::mp11 ALIAS Boost::headers)
     endif()
   endif()
 endif()
@@ -310,7 +309,7 @@
     URL ${DEP_URL_json}
     URL_HASH SHA1=${DEP_SHA1_json}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS 3.10 NAMES nlohmann_json
+    FIND_PACKAGE_ARGS 3.10 NAMES nlohmann_json REQUIRED
 )
 onnxruntime_fetchcontent_makeavailable(nlohmann_json)
 
@@ -380,6 +379,7 @@
           # https://github.com/pytorch/cpuinfo/pull/400
           ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 <
           ${PROJECT_SOURCE_DIR}/patches/cpuinfo/enable_deinit_refcounting.patch
+        FIND_PACKAGE_ARGS NAMES cpuinfo REQUIRED
       )
     elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
       message(STATUS "Applying sysfs fallback patch for cpuinfo on Linux")
@@ -394,6 +394,7 @@
           # https://github.com/pytorch/cpuinfo/pull/400
           ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 <
           ${PROJECT_SOURCE_DIR}/patches/cpuinfo/enable_deinit_refcounting.patch
+        FIND_PACKAGE_ARGS NAMES cpuinfo REQUIRED
       )
     else()
       onnxruntime_fetchcontent_declare(
@@ -405,6 +406,7 @@
           # https://github.com/pytorch/cpuinfo/pull/400
           ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 <
           ${PROJECT_SOURCE_DIR}/patches/cpuinfo/enable_deinit_refcounting.patch
+        FIND_PACKAGE_ARGS NAMES cpuinfo REQUIRED
       )
     endif()
     onnxruntime_fetchcontent_makeavailable(pytorch_cpuinfo)
@@ -423,7 +425,7 @@
   # containing microsoft/GSL#1213 (commit 543d0dd).
   PATCH_COMMAND ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/gsl/1213.patch
   EXCLUDE_FROM_ALL
-  FIND_PACKAGE_ARGS 4.0 NAMES Microsoft.GSL
+  FIND_PACKAGE_ARGS 4.0 NAMES Microsoft.GSL REQUIRED
 )
 set(GSL_TARGET "Microsoft.GSL::GSL")
 set(GSL_INCLUDE_DIR "$<TARGET_PROPERTY:${GSL_TARGET},INTERFACE_INCLUDE_DIRECTORIES>")
@@ -436,7 +438,7 @@
   RUNTIME  DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif()
 
-find_path(safeint_SOURCE_DIR NAMES "SafeInt.hpp")
+find_path(safeint_SOURCE_DIR NAMES "SafeInt.hpp" REQUIRED)
 if(NOT safeint_SOURCE_DIR)
   unset(safeint_SOURCE_DIR)
   onnxruntime_fetchcontent_declare(
@@ -478,10 +480,14 @@
     URL_HASH SHA1=${DEP_SHA1_flatbuffers}
     PATCH_COMMAND ${ONNXRUNTIME_FLATBUFFERS_PATCH_COMMAND}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS 23.5.9 NAMES Flatbuffers flatbuffers
+    FIND_PACKAGE_ARGS 23.5.9 NAMES Flatbuffers flatbuffers REQUIRED
 )
 
 onnxruntime_fetchcontent_makeavailable(flatbuffers)
+if(TARGET flatbuffers::flatbuffers_shared AND NOT TARGET flatbuffers::flatbuffers)
+  message(STATUS "Aliasing flatbuffers::flatbuffers to flatbuffers::flatbuffers_shared")
+  add_library(flatbuffers::flatbuffers ALIAS flatbuffers::flatbuffers_shared)
+endif()
 if(NOT flatbuffers_FOUND)
   if(NOT TARGET flatbuffers::flatbuffers)
     add_library(flatbuffers::flatbuffers ALIAS flatbuffers)
@@ -543,7 +549,7 @@
   URL_HASH SHA1=${DEP_SHA1_onnx}
   PATCH_COMMAND ${ONNXRUNTIME_ONNX_PATCH_COMMAND}
   EXCLUDE_FROM_ALL
-  FIND_PACKAGE_ARGS NAMES ONNX onnx
+  FIND_PACKAGE_ARGS NAMES ONNX onnx REQUIRED
 )
 
 onnxruntime_fetchcontent_makeavailable(onnx)
@@ -618,7 +624,7 @@
     URL ${DEP_URL_dlpack}
     URL_HASH SHA1=${DEP_SHA1_dlpack}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS NAMES dlpack
+    FIND_PACKAGE_ARGS NAMES dlpack REQUIRED
   )
   onnxruntime_fetchcontent_makeavailable(dlpack)
 endif()
@@ -638,7 +644,7 @@
     URL_HASH SHA1=${DEP_SHA1_cxxopts}
     PATCH_COMMAND ${ONNXRUNTIME_CXXOPTS_PATCH_COMMAND}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS NAMES cxxopts
+    FIND_PACKAGE_ARGS NAMES cxxopts REQUIRED
   )
   set(CXXOPTS_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
   set(CXXOPTS_BUILD_TESTS OFF CACHE BOOL "" FORCE)
diff -urN a/cmake/external/pybind11.cmake b/cmake/external/pybind11.cmake
--- a/cmake/external/pybind11.cmake	2026-09-10 09:09:41.000000000 +0300
+++ b/cmake/external/pybind11.cmake	2026-09-11 14:32:05.397394850 +0300
@@ -6,6 +6,6 @@
     URL ${DEP_URL_pybind11}
     URL_HASH SHA1=${DEP_SHA1_pybind11}
     EXCLUDE_FROM_ALL
-    FIND_PACKAGE_ARGS 3.0 NAMES pybind11
+    FIND_PACKAGE_ARGS 3.0 NAMES pybind11 REQUIRED
 )
 onnxruntime_fetchcontent_makeavailable(pybind11_project)
 diff -urN a/cmake/external/wil.cmake b/cmake/external/wil.cmake
--- a/cmake/external/wil.cmake	2026-09-10 09:09:41.000000000 +0300
+++ b/cmake/external/wil.cmake	2026-09-11 14:32:05.397477442 +0300
@@ -8,7 +8,7 @@
   URL ${DEP_URL_microsoft_wil}
   URL_HASH SHA1=${DEP_SHA1_microsoft_wil}
   EXCLUDE_FROM_ALL
-  FIND_PACKAGE_ARGS NAMES wil
+  FIND_PACKAGE_ARGS NAMES wil REQUIRED
 )
 
 if(WIN32)
diff -urN a/cmake/external/xnnpack.cmake b/cmake/external/xnnpack.cmake
--- a/cmake/external/xnnpack.cmake	2026-09-10 09:09:41.000000000 +0300
+++ b/cmake/external/xnnpack.cmake	2026-09-11 14:32:05.397505358 +0300
@@ -17,11 +17,11 @@
 endif()
 
 # pthreadpool depends on fxdiv
-onnxruntime_fetchcontent_declare(fxdiv URL ${DEP_URL_fxdiv} URL_HASH SHA1=${DEP_SHA1_fxdiv} EXCLUDE_FROM_ALL FIND_PACKAGE_ARGS NAMES fxdiv)
+onnxruntime_fetchcontent_declare(fxdiv URL ${DEP_URL_fxdiv} URL_HASH SHA1=${DEP_SHA1_fxdiv} EXCLUDE_FROM_ALL FIND_PACKAGE_ARGS NAMES fxdiv REQUIRED)
 onnxruntime_fetchcontent_makeavailable(fxdiv)
 set(FXDIV_SOURCE_DIR ${fxdiv_SOURCE_DIR})
 
-onnxruntime_fetchcontent_declare(pthreadpool URL ${DEP_URL_pthreadpool} URL_HASH SHA1=${DEP_SHA1_pthreadpool} EXCLUDE_FROM_ALL FIND_PACKAGE_ARGS NAMES unofficial-pthreadpool)
+onnxruntime_fetchcontent_declare(pthreadpool URL ${DEP_URL_pthreadpool} URL_HASH SHA1=${DEP_SHA1_pthreadpool} EXCLUDE_FROM_ALL FIND_PACKAGE_ARGS NAMES unofficial-pthreadpool REQUIRED)
 onnxruntime_fetchcontent_makeavailable(pthreadpool)
 
 # ---  Determine target processor
@@ -87,6 +87,7 @@
                      PATCH_COMMAND ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/xnnpack/AddEmscriptenAndIosSupport.patch &&
                                    ${Patch_EXECUTABLE} --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/xnnpack/release_cpuinfo_after_hardware_config.patch
 		     EXCLUDE_FROM_ALL
+		     FIND_PACKAGE_ARGS NAMES xnnpack REQUIRED
                     )
 onnxruntime_fetchcontent_makeavailable(googlexnnpack)
 set(XNNPACK_DIR ${googlexnnpack_SOURCE_DIR})
