From 638949a889c18fee6122d0609e548b9ceaae61ad Mon Sep 17 00:00:00 2001 From: Erica Mitchell Date: Mon, 2 Feb 2026 10:22:33 -0500 Subject: [PATCH 1/4] Eigen 5.0.0 changes where version is located --- cmake/modules/FindEigen3.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/FindEigen3.cmake b/cmake/modules/FindEigen3.cmake index fe82bb9f..25cbf223 100644 --- a/cmake/modules/FindEigen3.cmake +++ b/cmake/modules/FindEigen3.cmake @@ -49,7 +49,7 @@ if(NOT Eigen3_FIND_VERSION) endif() macro(_eigen3_check_version) - file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) + file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/Version" _eigen3_version_header) string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}") From 4cccdb6d2878bdadef7d0976ac8b6ec579a9fded Mon Sep 17 00:00:00 2001 From: Erica Mitchell Date: Mon, 2 Feb 2026 10:35:54 -0500 Subject: [PATCH 2/4] Backwards compatible with previous Eigen --- cmake/modules/FindEigen3.cmake | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cmake/modules/FindEigen3.cmake b/cmake/modules/FindEigen3.cmake index 25cbf223..6ce6d4e0 100644 --- a/cmake/modules/FindEigen3.cmake +++ b/cmake/modules/FindEigen3.cmake @@ -49,7 +49,15 @@ if(NOT Eigen3_FIND_VERSION) endif() macro(_eigen3_check_version) - file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/Version" _eigen3_version_header) + # Try the Eigen 5.x location first + if(EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/Version") + file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/Version" _eigen3_version_header) + # Fall back to Eigen 3.x location + elseif(EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h") + file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) + else() + message(FATAL_ERROR "Could not find Eigen version header") + endif() string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}") From 45dc3a62d6ce60e2c327b2858878d1813eb5544d Mon Sep 17 00:00:00 2001 From: Erica Mitchell Date: Mon, 2 Feb 2026 12:04:50 -0500 Subject: [PATCH 3/4] [copilot] fail gracefully and spacing --- cmake/modules/FindEigen3.cmake | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cmake/modules/FindEigen3.cmake b/cmake/modules/FindEigen3.cmake index 6ce6d4e0..e33a2678 100644 --- a/cmake/modules/FindEigen3.cmake +++ b/cmake/modules/FindEigen3.cmake @@ -51,12 +51,15 @@ endif() macro(_eigen3_check_version) # Try the Eigen 5.x location first if(EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/Version") - file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/Version" _eigen3_version_header) + file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/Version" _eigen3_version_header) # Fall back to Eigen 3.x location elseif(EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h") - file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) + file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) else() - message(FATAL_ERROR "Could not find Eigen version header") + # Could not locate any known Eigen version header; mark version as not OK and return. + set(EIGEN3_VERSION_OK FALSE) + message(STATUS "Could not find Eigen version header under ${EIGEN3_INCLUDE_DIR}") + return() endif() string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") From a29302c1e7ea6090b9721e74f5ff4430795594b5 Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Mon, 2 Feb 2026 16:04:01 -0500 Subject: [PATCH 4/4] [cmake] error out early if Eigen is missing --- export/CMakeLists.txt.export | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export/CMakeLists.txt.export b/export/CMakeLists.txt.export index 3c28edb4..45fb1a78 100644 --- a/export/CMakeLists.txt.export +++ b/export/CMakeLists.txt.export @@ -172,7 +172,7 @@ find_package(Eigen3 MODULE) if (TARGET Eigen3::Eigen) set(LIBINT_HAS_EIGEN 1) endif() -if (LIBINT2_REQUIRE_CXX_API AND NOT ${LIBINT_HAS_EIGEN}) +if (LIBINT2_REQUIRE_CXX_API AND NOT LIBINT_HAS_EIGEN) message(FATAL_ERROR "C++ API cannot be built without Eigen3; configure (via CMake) and install Eigen3 and add the install prefix to CMAKE_PREFIX_PATH, or add -D LIBINT2_REQUIRE_CXX_API=OFF to the CMake command line if the C++ API is not required") endif()