From b7daacd2c68dd798ec55ee861d5ab71f25077aba Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 20 May 2026 14:20:54 +0200 Subject: [PATCH 1/3] fix: update Eigen version to 5.0.1 and streamline CMake configuration --- CMakeLists.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e77040..2aaf32b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,13 +14,14 @@ find_package(pybind11 CONFIG REQUIRED) FetchContent_Declare( eigen GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git - GIT_TAG 3.4.0 + GIT_TAG 5.0.1 GIT_SHALLOW TRUE + SYSTEM ) -FetchContent_Populate(eigen) - -add_library(Eigen3::Eigen INTERFACE IMPORTED) -target_include_directories(Eigen3::Eigen INTERFACE "${eigen_SOURCE_DIR}") +set(EIGEN_BUILD_DOC OFF CACHE BOOL "" FORCE) +set(EIGEN_BUILD_TESTING OFF CACHE BOOL "" FORCE) +set(BUILD_TESTING OFF CACHE BOOL "" FORCE) +FetchContent_MakeAvailable(eigen) find_package(BLAS QUIET) From 4f89a0e0d58bfb92370a03f339cdd493aad5268f Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 20 May 2026 14:24:31 +0200 Subject: [PATCH 2/3] feat: upgrade Eigen from 3.4.0 to 5.0.1 - Use FetchContent_MakeAvailable instead of deprecated FetchContent_Populate - Add EXCLUDE_FROM_ALL to prevent Eigen headers from being installed into wheel - Disable Eigen doc/test builds --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 80411a8..0eb9021 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,7 @@ FetchContent_Declare( GIT_TAG 5.0.1 GIT_SHALLOW TRUE SYSTEM + EXCLUDE_FROM_ALL ) set(EIGEN_BUILD_DOC OFF CACHE BOOL "" FORCE) set(EIGEN_BUILD_TESTING OFF CACHE BOOL "" FORCE) From 20c8c7fcf6c1c696cb9379bae2917ded37a87342 Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 20 May 2026 14:32:59 +0200 Subject: [PATCH 3/3] fix: add _USE_MATH_DEFINES as compile definition for MSVC M_PI support The #define in hypergraph.h is insufficient because nanobind/Eigen headers included before hypergraph.h already pull in without the define. Adding it as a compile definition ensures it is set before any header. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0eb9021..eda39f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,7 @@ target_include_directories(hypergraph PRIVATE target_link_libraries(hypergraph PRIVATE Eigen3::Eigen) target_compile_definitions(hypergraph PRIVATE + _USE_MATH_DEFINES EIGEN_DEFAULT_TO_ROW_MAJOR HYPERGRAPH_VERSION="${SKBUILD_PROJECT_VERSION}" HYPERGRAPH_EXCEPTIONS