From 638949a889c18fee6122d0609e548b9ceaae61ad Mon Sep 17 00:00:00 2001 From: Erica Mitchell Date: Mon, 2 Feb 2026 10:22:33 -0500 Subject: [PATCH 1/7] 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/7] 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/7] [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/7] [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() From 0121fced24ca000aaec52ebb5e4be48bb14db8b4 Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Mon, 2 Feb 2026 16:26:21 -0500 Subject: [PATCH 5/7] [cmake] int_checkboost supports in-tree (non-IMPORTED) TARGET, including modularized --- cmake/modules/int_checkboost.cmake | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/cmake/modules/int_checkboost.cmake b/cmake/modules/int_checkboost.cmake index 016a788c..a6558d0e 100644 --- a/cmake/modules/int_checkboost.cmake +++ b/cmake/modules/int_checkboost.cmake @@ -4,7 +4,31 @@ cmake_policy(SET CMP0075 NEW) # support CMAKE_REQUIRED_LIBRARIES include(CMakePushCheckState) cmake_push_check_state() -list(APPEND CMAKE_REQUIRED_LIBRARIES Boost::headers) +if (NOT TARGET Boost::headers) + message(FATAL_ERROR "int_boostcheck.cmake: can only invoke if Boost::headers is already available") +endif() +# can only link against system or IMPORTED target here +get_target_property(BOOST_HEADERS_IS_IMPORTED Boost::headers IMPORTED) +if (BOOST_HEADERS_IS_IMPORTED) + list(APPEND CMAKE_REQUIRED_LIBRARIES Boost::headers) +else() # if Boost::headers is not IMPORTED, it was built within this project, extract its properties + # Collect include directories from Boost::headers and Boost::preprocessor (for modularized Boost) + set(_boost_targets_to_check Boost::headers) + if (TARGET Boost::preprocessor) + list(APPEND _boost_targets_to_check Boost::preprocessor) + endif() + foreach(_boost_target IN LISTS _boost_targets_to_check) + get_target_property(_interface_include_dirs ${_boost_target} INTERFACE_INCLUDE_DIRECTORIES) + if (_interface_include_dirs) + # Extract paths from $ generator expressions + string(REGEX MATCHALL "\\$]+)>" _build_interface_matches "${_interface_include_dirs}") + foreach(_match IN LISTS _build_interface_matches) + string(REGEX REPLACE "\\$]+)>" "\\1" _include_dir "${_match}") + list(APPEND CMAKE_REQUIRED_INCLUDES "${_include_dir}") + endforeach() + endif() + endforeach() +endif() #list(APPEND CMAKE_REQUIRED_FLAGS "-std=c++11") # set CMAKE_CXX_STANDARD and 0067 NEW ? check_cxx_source_compiles(" From 075b28a4363982f650bcafede3486f5b5349cb2d Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Mon, 2 Feb 2026 16:47:19 -0500 Subject: [PATCH 6/7] Update cmake/modules/int_checkboost.cmake typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- cmake/modules/int_checkboost.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/int_checkboost.cmake b/cmake/modules/int_checkboost.cmake index a6558d0e..2101efe2 100644 --- a/cmake/modules/int_checkboost.cmake +++ b/cmake/modules/int_checkboost.cmake @@ -5,7 +5,7 @@ include(CMakePushCheckState) cmake_push_check_state() if (NOT TARGET Boost::headers) - message(FATAL_ERROR "int_boostcheck.cmake: can only invoke if Boost::headers is already available") + message(FATAL_ERROR "int_checkboost.cmake: can only invoke if Boost::headers is already available") endif() # can only link against system or IMPORTED target here get_target_property(BOOST_HEADERS_IS_IMPORTED Boost::headers IMPORTED) From 72792c123ce48cba1bdf4503c22d1be5880311d1 Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Mon, 2 Feb 2026 17:59:04 -0500 Subject: [PATCH 7/7] update wiki SHA --- doc/wiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/wiki b/doc/wiki index d0057dd3..6ce8b99e 160000 --- a/doc/wiki +++ b/doc/wiki @@ -1 +1 @@ -Subproject commit d0057dd3e920b01eb969e35656925d6d1cf8c80f +Subproject commit 6ce8b99e384658e973097ce1339b59d2acb64721