Loading
+8 −33
Original line number Diff line number Diff line
From a29cffa646356228d6ec7bd7ce21fe3ab90fdd19 Mon Sep 17 00:00:00 2001
From: Someone Serge <sergei.kozlukov@aalto.fi>
Date: Wed, 7 Feb 2024 16:59:09 +0000
Subject: [PATCH] eigen: allow dependency injection

---
 cmake/external/eigen.cmake | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/cmake/external/eigen.cmake b/cmake/external/eigen.cmake
index c0f7ddc50e..996b83d18a 100644
index b123adb..aab2483 100644
--- a/cmake/external/eigen.cmake
+++ b/cmake/external/eigen.cmake
@@ -1,4 +1,3 @@
-
 if (onnxruntime_USE_PREINSTALLED_EIGEN)
     add_library(eigen INTERFACE)
     file(TO_CMAKE_PATH ${eigen_SOURCE_PATH} eigen_INCLUDE_DIRS)
@@ -10,14 +9,21 @@ else ()
             URL ${DEP_URL_eigen}
             URL_HASH SHA1=${DEP_SHA1_eigen}
             PATCH_COMMAND ${Patch_EXECUTABLE} --ignore-space-change --ignore-whitespace < ${PROJECT_SOURCE_DIR}/patches/eigen/Fix_Eigen_Build_Break.patch
+            FIND_PACKAGE_ARGS NAMES Eigen3
         )
     else()
         FetchContent_Declare(
@@ -7,8 +7,13 @@ else ()
         eigen
         URL ${DEP_URL_eigen}
         URL_HASH SHA1=${DEP_SHA1_eigen}
+	FIND_PACKAGE_ARGS NAMES Eigen3
     )
     endif()
 
-    FetchContent_Populate(eigen)
-    set(eigen_INCLUDE_DIRS  "${eigen_SOURCE_DIR}")
+    FetchContent_MakeAvailable(eigen)
+    add_library(eigen ALIAS Eigen3::Eigen)
+
+    # Onnxruntime doesn't always use `eigen` as a target in
+    # `target_link_libraries`, sometimes it just uses
+    # `target_include_directories`:
+    get_target_property(eigen_INCLUDE_DIRS Eigen3::Eigen INTERFACE_INCLUDE_DIRECTORIES)
 endif()
-- 
2.42.0
+44 −27
Original line number Diff line number Diff line
@@ -2,10 +2,15 @@
, stdenv
, lib
, fetchFromGitHub
, fetchpatch
, Foundation
, abseil-cpp
, cmake
, cpuinfo
, eigen
, flatbuffers
, gbenchmark
, glibcLocales
, gtest
, libpng
, nlohmann_json
@@ -24,7 +29,7 @@


let
  version = "1.16.3";
  version = "1.18.1";

  stdenv = throw "Use effectiveStdenv instead";
  effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else inputs.stdenv;
@@ -34,15 +39,15 @@ let
  howard-hinnant-date = fetchFromGitHub {
    owner = "HowardHinnant";
    repo = "date";
    rev = "v2.4.1";
    sha256 = "sha256-BYL7wxsYRI45l8C3VwxYIIocn5TzJnBtU0UZ9pHwwZw=";
    rev = "v3.0.1";
    sha256 = "sha256-ZSjeJKAcT7mPym/4ViDvIR9nFMQEBCSUtPEuMO27Z+I=";
  };

  mp11 = fetchFromGitHub {
    owner = "boostorg";
    repo = "mp11";
    rev = "boost-1.79.0";
    hash = "sha256-ZxgPDLvpISrjpEHKpLGBowRKGfSwTf6TBfJD18yw+LM=";
    rev = "boost-1.82.0";
    hash = "sha256-cLPvjkf2Au+B19PJNrUkTW/VPxybi1MpPxnIl4oo4/o=";
  };

  safeint = fetchFromGitHub {
@@ -52,33 +57,33 @@ let
    hash = "sha256-PK1ce4C0uCR4TzLFg+elZdSk5DdPCRhhwT3LvEwWnPU=";
  };

  pytorch_cpuinfo = fetchFromGitHub {
    owner = "pytorch";
    repo = "cpuinfo";
    # There are no tags in the repository
    rev = "5916273f79a21551890fd3d56fc5375a78d1598d";
    hash = "sha256-nXBnloVTuB+AVX59VDU/Wc+Dsx94o92YQuHp3jowx2A=";
  };
  pytorch_clog = effectiveStdenv.mkDerivation {
    pname = "clog";
    version = "3c8b153";
    src = "${cpuinfo.src}/deps/clog";

  flatbuffers = fetchFromGitHub {
    owner = "google";
    repo = "flatbuffers";
    rev = "v1.12.0";
    hash = "sha256-L1B5Y/c897Jg9fGwT2J3+vaXsZ+lfXnskp8Gto1p/Tg=";
    nativeBuildInputs = [ cmake gbenchmark gtest ];
    cmakeFlags = [
      "-DUSE_SYSTEM_GOOGLEBENCHMARK=ON"
      "-DUSE_SYSTEM_GOOGLETEST=ON"
      "-DUSE_SYSTEM_LIBS=ON"
      # 'clog' tests set 'CXX_STANDARD 11'; this conflicts with our 'gtest'.
      "-DCLOG_BUILD_TESTS=OFF"
    ];
  };

  onnx = fetchFromGitHub {
    owner = "onnx";
    repo = "onnx";
    rev = "refs/tags/v1.14.1";
    hash = "sha256-ZVSdk6LeAiZpQrrzLxphMbc1b3rNUMpcxcXPP8s/5tE=";
    rev = "refs/tags/v1.16.1";
    hash = "sha256-I1wwfn91hdH3jORIKny0Xc73qW2P04MjkVCgcaNnQUE=";
  };

   cutlass = fetchFromGitHub {
    owner = "NVIDIA";
    repo = "cutlass";
    rev = "v3.0.0";
    sha256 = "sha256-YPD5Sy6SvByjIcGtgeGH80TEKg2BtqJWSg46RvnJChY=";
    rev = "v3.1.0";
    hash = "sha256-mpaiCxiYR1WaSSkcEPTzvcREenJWklD+HRdTT5/pD54=";
 };
in
effectiveStdenv.mkDerivation rec {
@@ -89,7 +94,7 @@ effectiveStdenv.mkDerivation rec {
    owner = "microsoft";
    repo = "onnxruntime";
    rev = "refs/tags/v${version}";
    hash = "sha256-bTW9Pc3rvH+c8VIlDDEtAXyA3sajVyY5Aqr6+SxaMF4=";
    hash = "sha256-+zWtbLKekGhwdBU3bm1u2F7rYejQ62epE+HcHj05/8A=";
    fetchSubmodules = true;
  };

@@ -102,6 +107,13 @@ effectiveStdenv.mkDerivation rec {
    # - use MakeAvailable instead of the low-level Populate,
    # - use Eigen3::Eigen as the target name (as declared by libeigen/eigen).
    ./0001-eigen-allow-dependency-injection.patch
    # Incorporate a patch that has landed upstream which exposes new
    # 'abseil-cpp' libraries & modifies the 're2' CMakeLists to fix a
    # configuration error that around missing 'gmock' exports.
    #
    # TODO: Check if it can be dropped after 1.19.0
    # https://github.com/microsoft/onnxruntime/commit/b522df0ae477e59f60acbe6c92c8a64eda96cace
    ./update-re2.patch
  ] ++ lib.optionals cudaSupport [
    # We apply the referenced 1064.patch ourselves to our nix dependency.
    #  FIND_PACKAGE_ARGS for CUDA was added in https://github.com/microsoft/onnxruntime/commit/87744e5 so it might be possible to delete this patch after upgrading to 1.17.0
@@ -124,11 +136,14 @@ effectiveStdenv.mkDerivation rec {
  ];

  buildInputs = [
    cpuinfo
    eigen
    glibcLocales
    libpng
    zlib
    nlohmann_json
    microsoft-gsl
    pytorch_clog
    zlib
  ] ++ lib.optionals pythonSupport (with python3Packages; [
    numpy
    pybind11
@@ -168,11 +183,11 @@ effectiveStdenv.mkDerivation rec {
    "-DFETCHCONTENT_QUIET=OFF"
    "-DFETCHCONTENT_SOURCE_DIR_ABSEIL_CPP=${abseil-cpp.src}"
    "-DFETCHCONTENT_SOURCE_DIR_DATE=${howard-hinnant-date}"
    "-DFETCHCONTENT_SOURCE_DIR_FLATBUFFERS=${flatbuffers}"
    "-DFETCHCONTENT_SOURCE_DIR_FLATBUFFERS=${flatbuffers.src}"
    "-DFETCHCONTENT_SOURCE_DIR_GOOGLETEST=${gtest.src}"
    "-DFETCHCONTENT_SOURCE_DIR_GOOGLE_NSYNC=${nsync.src}"
    "-DFETCHCONTENT_SOURCE_DIR_MP11=${mp11}"
    "-DFETCHCONTENT_SOURCE_DIR_ONNX=${onnx}"
    "-DFETCHCONTENT_SOURCE_DIR_PYTORCH_CPUINFO=${pytorch_cpuinfo}"
    "-DFETCHCONTENT_SOURCE_DIR_RE2=${re2.src}"
    "-DFETCHCONTENT_SOURCE_DIR_SAFEINT=${safeint}"
    "-DFETCHCONTENT_TRY_FIND_PACKAGE_MODE=ALWAYS"
@@ -194,11 +209,13 @@ effectiveStdenv.mkDerivation rec {
  env = lib.optionalAttrs effectiveStdenv.cc.isClang {
    NIX_CFLAGS_COMPILE = toString [
      "-Wno-error=deprecated-declarations"
      "-Wno-error=deprecated-pragma"
      "-Wno-error=unused-but-set-variable"
    ];
  };

  doCheck = !cudaSupport;
  # aarch64-linux fails cpuinfo test, because /sys/devices/system/cpu/ does not exist in the sandbox
  doCheck = !(cudaSupport || effectiveStdenv.buildPlatform.system == "aarch64-linux");

  requiredSystemFeatures = lib.optionals cudaSupport [ "big-parallel" ];

+3 −2
Original line number Diff line number Diff line
diff --git a/cmake/external/onnxruntime_external_deps.cmake b/cmake/external/onnxruntime_external_deps.cmake
index 9effd1a2db..faff5e8de7 100644
index 775576a..ccea13c 100644
--- a/cmake/external/onnxruntime_external_deps.cmake
+++ b/cmake/external/onnxruntime_external_deps.cmake
@@ -280,21 +280,12 @@ if (NOT WIN32)
@@ -367,22 +367,12 @@ if (NOT WIN32)
   endif()
 endif()
 
@@ -12,6 +12,7 @@ index 9effd1a2db..faff5e8de7 100644
-    URL ${DEP_URL_microsoft_gsl}
-    URL_HASH SHA1=${DEP_SHA1_microsoft_gsl}
-    PATCH_COMMAND ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/gsl/1064.patch
-    FIND_PACKAGE_ARGS 4.0 NAMES Microsoft.GSL
-  )
-else()
-  FetchContent_Declare(
+132 −0
Original line number Diff line number Diff line
From 0d1e631c365944d54e87bdce39beb13b225ba8f8 Mon Sep 17 00:00:00 2001
From: Changming Sun <chasun@microsoft.com>
Date: Thu, 23 May 2024 14:30:15 -0700
Subject: [PATCH] Update RE2 to the latest (#20775)

Update RE2 to the latest.

To keep the components up to date.

(cherry picked from commit b522df0ae477e59f60acbe6c92c8a64eda96cace)
---
 cgmanifests/generated/cgmanifest.json |  2 +-
 cmake/deps.txt                        |  4 +--
 cmake/external/abseil-cpp.cmake       | 35 ++++++++++++++++++++++-----
 cmake/external/helper_functions.cmake |  6 +++++
 4 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/cgmanifests/generated/cgmanifest.json b/cgmanifests/generated/cgmanifest.json
index eb74178b3e..e3e9be67ae 100644
--- a/cgmanifests/generated/cgmanifest.json
+++ b/cgmanifests/generated/cgmanifest.json
@@ -276,7 +276,7 @@
       "component": {
         "type": "git",
         "git": {
-          "commitHash": "5723bb8950318135ed9cf4fc76bed988a087f536",
+          "commitHash": "2b354c6ad0d0479dcff68dab23fb0d1143a482c2",
           "repositoryUrl": "https://github.com/google/re2.git"
         },
         "comments": "re2"
diff --git a/cmake/deps.txt b/cmake/deps.txt
index d213b09034..d4d19dea08 100644
--- a/cmake/deps.txt
+++ b/cmake/deps.txt
@@ -50,11 +50,11 @@ psimd;https://github.com/Maratyszcza/psimd/archive/072586a71b55b7f8c584153d223e9
 pthreadpool;https://github.com/Maratyszcza/pthreadpool/archive/4fe0e1e183925bf8cfa6aae24237e724a96479b8.zip;07a0aa91dd9bf86f31b95497e00f31d8a261a4bd
 pybind11;https://github.com/pybind/pybind11/archive/refs/tags/v2.10.1.zip;769b6aa67a77f17a770960f604b727645b6f6a13
 pytorch_cpuinfo;https://github.com/pytorch/cpuinfo/archive/959002f82d7962a473d8bf301845f2af720e0aa4.zip;85da3caa60eb2b148613b443fbc2bfdc30689965
-re2;https://github.com/google/re2/archive/refs/tags/2022-06-01.zip;aa77313b76e91b531ee7f3e45f004c6a502a5374
+re2;https://github.com/google/re2/archive/refs/tags/2024-05-01.tar.gz;206cfee5ee0b4c6844680ba66275e9e8faa77405
 safeint;https://github.com/dcleblanc/SafeInt/archive/refs/tags/3.0.28.zip;23f252040ff6cb9f1fd18575b32fa8fb5928daac
 tensorboard;https://github.com/tensorflow/tensorboard/archive/373eb09e4c5d2b3cc2493f0949dc4be6b6a45e81.zip;67b833913605a4f3f499894ab11528a702c2b381
 cutlass;https://github.com/NVIDIA/cutlass/archive/refs/tags/v3.1.0.zip;757f90a795034a89d4f48a79d1f009f7a04c8dee
 utf8_range;https://github.com/protocolbuffers/utf8_range/archive/72c943dea2b9240cd09efde15191e144bc7c7d38.zip;9925739c9debc0efa2adcb194d371a35b6a03156
 extensions;https://github.com/microsoft/onnxruntime-extensions/archive/94142d8391c9791ec71c38336436319a2d4ac7a0.zip;4365ac5140338b4cb75a39944a4be276e3829b3c
 composable_kernel;https://github.com/ROCmSoftwarePlatform/composable_kernel/archive/5356c4a943a35e74d7cdc69486afcb8703b9a59a.zip;522382c2af437e09124287e5879ab64af5b2e299
-directx_headers;https://github.com/microsoft/DirectX-Headers/archive/refs/tags/v1.613.1.zip;47653509a3371eabb156360f42faf582f314bf2e
\ No newline at end of file
+directx_headers;https://github.com/microsoft/DirectX-Headers/archive/refs/tags/v1.613.1.zip;47653509a3371eabb156360f42faf582f314bf2e
diff --git a/cmake/external/abseil-cpp.cmake b/cmake/external/abseil-cpp.cmake
index 57cfbee464..c01195c99e 100644
--- a/cmake/external/abseil-cpp.cmake
+++ b/cmake/external/abseil-cpp.cmake
@@ -45,10 +45,8 @@ endif()
 
 # TODO: since multiple ORT's dependencies depend on Abseil, the list below would vary from version to version.
 # We'd better to not manually manage the list.
-set(ABSEIL_LIBS absl::base
+set(ABSEIL_LIBS
 absl::city
-absl::core_headers
-absl::fixed_array
 absl::flags
 absl::flat_hash_map
 absl::flat_hash_set
@@ -60,9 +58,34 @@ absl::node_hash_set
 absl::optional
 absl::raw_hash_set
 absl::raw_logging_internal
-absl::span
 absl::str_format
-absl::strings
+absl::str_format_internal
+absl::bits
+absl::fixed_array
+absl::numeric_representation
+absl::utility
+absl::type_traits
+absl::string_view
+absl::core_headers
+absl::nullability
+absl::span
+absl::config
 absl::synchronization
+absl::base
+absl::civil_time
+absl::debugging_internal
+absl::demangle_internal
+absl::graphcycles_internal
+absl::int128
+absl::kernel_timeout_internal
+absl::log_severity
+absl::malloc_internal
+absl::spinlock_wait
+absl::stacktrace
+absl::string_view
+absl::strings
+absl::strings_internal
+absl::symbolize
 absl::throw_delegate
-absl::time)
+absl::time
+absl::time_zone)
\ No newline at end of file
diff --git a/cmake/external/helper_functions.cmake b/cmake/external/helper_functions.cmake
index 768e807b40..eefb3ba2e8 100644
--- a/cmake/external/helper_functions.cmake
+++ b/cmake/external/helper_functions.cmake
@@ -159,7 +159,12 @@ macro(onnxruntime_fetchcontent_makeavailable)
       endif()
 
       if(EXISTS ${__cmake_srcdir}/CMakeLists.txt)
+        set(CMAKE_SKIP_INSTALL_RULES TRUE)
+        if (__cmake_arg_SYSTEM)
+          add_subdirectory(${__cmake_srcdir} ${${__cmake_contentNameLower}_BINARY_DIR} SYSTEM)
+        else()
           add_subdirectory(${__cmake_srcdir} ${${__cmake_contentNameLower}_BINARY_DIR} EXCLUDE_FROM_ALL)
+        endif()
           get_property(subdir_import_targets DIRECTORY "${__cmake_srcdir}" PROPERTY BUILDSYSTEM_TARGETS)
           foreach(subdir_target ${subdir_import_targets})
             if(TARGET ${subdir_target})
@@ -176,6 +181,7 @@ macro(onnxruntime_fetchcontent_makeavailable)
               set_target_properties(${subdir_target} PROPERTIES COMPILE_WARNING_AS_ERROR OFF)
             endif()
           endforeach()
+          set(CMAKE_SKIP_INSTALL_RULES FALSE)
       endif()
 
       unset(__cmake_srcdir)
-- 
2.45.2