aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/ceres/0001_cmakelists_fixes.patch
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/ceres/0001_cmakelists_fixes.patch
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/ceres/0001_cmakelists_fixes.patch')
-rw-r--r--vcpkg/ports/ceres/0001_cmakelists_fixes.patch116
1 files changed, 116 insertions, 0 deletions
diff --git a/vcpkg/ports/ceres/0001_cmakelists_fixes.patch b/vcpkg/ports/ceres/0001_cmakelists_fixes.patch
new file mode 100644
index 0000000..7e71e7f
--- /dev/null
+++ b/vcpkg/ports/ceres/0001_cmakelists_fixes.patch
@@ -0,0 +1,116 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8e49c19..4ea82bc 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -292,10 +292,23 @@ if (SUITESPARSE)
+ # built with SuiteSparse support.
+
+ # Check for SuiteSparse and dependencies.
+- find_package(SuiteSparse 4.5.6 COMPONENTS CHOLMOD SPQR
+- OPTIONAL_COMPONENTS Partition)
++ find_package(CHOLMOD REQUIRED)
++ include(CheckCSourceCompiles)
++ block(SCOPE_FOR VARIABLES)
++ set(CMAKE_REQUIRED_INCLUDES "")
++ set(CMAKE_REQUIRED_LIBRARIES SuiteSparse::CHOLMOD)
++ set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
++ check_c_source_compiles([[
++ #include <cholmod.h>
++ #ifndef CHOLMOD_HAS_PARTITION
++ #error "partition not enabled"
++ #endif
++ ]] SuiteSparse_Partition_FOUND)
++ endblock()
++ find_package(SPQR CONFIG REQUIRED)
++ find_package(SuiteSparse NAMES SuiteSparse_config REQUIRED)
+ if (SuiteSparse_FOUND)
+- set(SuiteSparse_DEPENDENCY "find_dependency(SuiteSparse ${SuiteSparse_VERSION})")
++ set(SuiteSparse_DEPENDENCY "find_dependency(CHOLMOD CONFIG)\nfind_dependency(SPQR CONFIG)")
+ # By default, if all of SuiteSparse's dependencies are found, Ceres is
+ # built with SuiteSparse support.
+ message("-- Found SuiteSparse ${SuiteSparse_VERSION}, "
+@@ -323,13 +336,14 @@ if (NOT SuiteSparse_Partition_FOUND)
+ endif (NOT SuiteSparse_Partition_FOUND)
+
+ if (EIGENMETIS)
+- find_package (METIS)
++ find_package (METIS NAMES metis REQUIRED)
++ add_library(METIS::METIS ALIAS metis)
+ if (METIS_FOUND)
+ # Since METIS is a private dependency of Ceres, it requires access to the
+ # link-only METIS::METIS target to avoid undefined linker errors in projects
+ # relying on Ceres. We do not actually need to propagate anything besides
+ # the link libraries (such as include directories.)
+- set(METIS_DEPENDENCY "find_dependency(METIS ${METIS_VERSION})")
++ set(METIS_DEPENDENCY "find_dependency(metis CONFIG)")
+ # METIS find module must be installed unless a package config is being used.
+ if (NOT METIS_DIR)
+ install(FILES ${Ceres_SOURCE_DIR}/cmake/FindMETIS.cmake
+@@ -433,7 +447,9 @@ else (MINIGLOG)
+ unset(MINIGLOG_MAX_LOG_LEVEL CACHE)
+ # Don't search with REQUIRED so that configuration continues if not found and
+ # we can output an error messages explaining MINIGLOG option.
+- find_package(Glog)
++ find_package(GLOG NAMES glog REQUIRED)
++ set(FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION TRUE)
++ set(GLOG_LIBRARIES glog::glog)
+ if (NOT GLOG_FOUND)
+ message(FATAL_ERROR "Can't find Google Log (glog). Please set either: "
+ "glog_DIR (newer CMake built versions of glog) or GLOG_INCLUDE_DIR & "
+diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in
+index ceb7e26..a5eb833 100644
+--- a/cmake/CeresConfig.cmake.in
++++ b/cmake/CeresConfig.cmake.in
+@@ -195,7 +195,7 @@ set(CERES_EIGEN_VERSION @Eigen3_VERSION@)
+ # Search quietly to control the timing of the error message if not found. The
+ # search should be for an exact match, but for usability reasons do a soft
+ # match and reject with an explanation below.
+-find_package(Eigen3 ${CERES_EIGEN_VERSION} QUIET)
++find_dependency(Eigen3 CONFIG ${CERES_EIGEN_VERSION})
+ if (Eigen3_FOUND)
+ if (NOT Eigen3_VERSION VERSION_EQUAL CERES_EIGEN_VERSION)
+ # CMake's VERSION check in FIND_PACKAGE() will accept any version >= the
+@@ -233,7 +233,7 @@ if (CERES_USES_MINIGLOG)
+ "for glog, beware this will likely cause problems if glog is later linked.")
+ else(CERES_USES_MINIGLOG)
+ if (CERES_GLOG_WAS_BUILT_WITH_CMAKE)
+- find_package(glog ${CERES_GLOG_VERSION} CONFIG QUIET)
++ find_dependency(glog)
+ set(GLOG_FOUND ${glog_FOUND})
+ else()
+ # Version of glog against which Ceres was built was not built with CMake,
+diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
+index f9fc241..9f6f25b 100644
+--- a/internal/ceres/CMakeLists.txt
++++ b/internal/ceres/CMakeLists.txt
+@@ -104,15 +104,14 @@ if (SUITESPARSE AND SuiteSparse_FOUND)
+ SuiteSparse::SPQR)
+
+ if (SuiteSparse_Partition_FOUND)
+- list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES SuiteSparse::Partition)
+ endif (SuiteSparse_Partition_FOUND)
+ endif (SUITESPARSE AND SuiteSparse_FOUND)
+
+-if (SuiteSparse_Partition_FOUND OR EIGENMETIS)
++if (EIGENMETIS)
+ # Define version information for use in Solver::FullReport.
+ add_definitions(-DCERES_METIS_VERSION="${METIS_VERSION}")
+ list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES METIS::METIS)
+-endif (SuiteSparse_Partition_FOUND OR EIGENMETIS)
++endif (EIGENMETIS)
+
+ if (ACCELERATESPARSE AND AccelerateSparse_FOUND)
+ list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ${AccelerateSparse_LIBRARIES})
+diff --git a/internal/ceres/solver_utils.cc b/internal/ceres/solver_utils.cc
+index 3356f3b..35a6109 100644
+--- a/internal/ceres/solver_utils.cc
++++ b/internal/ceres/solver_utils.cc
+@@ -62,7 +62,7 @@ constexpr char kVersion[] =
+ "-suitesparse-(" CERES_SUITESPARSE_VERSION ")"
+ #endif
+
+-#if !defined(CERES_NO_EIGEN_METIS) || !defined(CERES_NO_CHOLMOD_PARTITION)
++#if !defined(CERES_NO_EIGEN_METIS)
+ "-metis-(" CERES_METIS_VERSION ")"
+ #endif
+