aboutsummaryrefslogtreecommitdiff
path: root/ports/ceres
diff options
context:
space:
mode:
Diffstat (limited to 'ports/ceres')
-rw-r--r--ports/ceres/0001_cmakelists_fixes.patch13
-rw-r--r--ports/ceres/0004_blas_linux_fix.patch22
-rw-r--r--ports/ceres/0004_fix_find_eigen.patch122
-rw-r--r--ports/ceres/CONTROL2
-rw-r--r--ports/ceres/portfile.cmake19
5 files changed, 131 insertions, 47 deletions
diff --git a/ports/ceres/0001_cmakelists_fixes.patch b/ports/ceres/0001_cmakelists_fixes.patch
index f269f05ee..87a3785d5 100644
--- a/ports/ceres/0001_cmakelists_fixes.patch
+++ b/ports/ceres/0001_cmakelists_fixes.patch
@@ -31,19 +31,10 @@ index 02c72b5..62d8c59 100644
endif (MINIGLOG)
if (NOT SCHUR_SPECIALIZATIONS)
-@@ -582,7 +562,7 @@ include_directories(
- # Note that this is *not* propagated to clients, ie CERES_INCLUDE_DIRS
- # used by clients after find_package(Ceres) does not identify Eigen as
- # as system headers.
--include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS})
-+include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}/Eigen)
-
- if (SUITESPARSE)
- include_directories(${SUITESPARSE_INCLUDE_DIRS})
-@@ -917,8 +897,6 @@ install(FILES "${Ceres_BINARY_DIR}/CeresConfig-install.cmake"
+@@ -917,8 +897,5 @@ install(FILES "${Ceres_BINARY_DIR}/CeresConfig-install.cmake"
DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
install(FILES "${Ceres_BINARY_DIR}/CeresConfigVersion.cmake"
- "${Ceres_SOURCE_DIR}/cmake/FindEigen.cmake"
+- "${Ceres_SOURCE_DIR}/cmake/FindEigen.cmake"
- "${Ceres_SOURCE_DIR}/cmake/FindGlog.cmake"
- "${Ceres_SOURCE_DIR}/cmake/FindGflags.cmake"
DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
diff --git a/ports/ceres/0004_blas_linux_fix.patch b/ports/ceres/0004_blas_linux_fix.patch
deleted file mode 100644
index 5fffee5e2..000000000
--- a/ports/ceres/0004_blas_linux_fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/internal/ceres/blas.cc b/internal/ceres/blas.cc
-index 3ba63bb..071a26e 100644
---- a/internal/ceres/blas.cc
-+++ b/internal/ceres/blas.cc
-@@ -33,7 +33,7 @@
- #include "glog/logging.h"
-
- #ifndef CERES_NO_LAPACK
--extern "C" void dsyrk_(char* uplo,
-+extern "C" void dsyrk(char* uplo,
- char* trans,
- int* n,
- int* k,
-@@ -64,7 +64,7 @@ void BLAS::SymmetricRankKUpdate(int num_rows,
- int k = transpose ? num_rows : num_cols;
- int lda = k;
- int ldc = n;
-- dsyrk_(&uplo,
-+ dsyrk(&uplo,
- &trans,
- &n,
- &k,
diff --git a/ports/ceres/0004_fix_find_eigen.patch b/ports/ceres/0004_fix_find_eigen.patch
new file mode 100644
index 000000000..ad92228c0
--- /dev/null
+++ b/ports/ceres/0004_fix_find_eigen.patch
@@ -0,0 +1,122 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7033de0..5235baa 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -209,40 +209,40 @@ endif (IOS)
+ unset(CERES_COMPILE_OPTIONS)
+
+ # Eigen.
+-find_package(Eigen REQUIRED)
+-if (EIGEN_FOUND)
+- message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}")
+- if (EIGEN_VERSION VERSION_LESS 3.1.0)
++find_package(Eigen3 REQUIRED)
++if (EIGEN3_FOUND)
++ message(STATUS "Found Eigen version ${EIGEN3_VERSION_STRING}: ${EIGEN3_INCLUDE_DIRS}")
++ if (EIGEN3_VERSION_STRING VERSION_LESS 3.1.0)
+ message(FATAL_ERROR "-- Ceres requires Eigen version >= 3.1.0 in order "
+ "that Eigen/SparseCore be available, detected version of Eigen is: "
+- "${EIGEN_VERSION}")
+- endif (EIGEN_VERSION VERSION_LESS 3.1.0)
++ "${EIGEN3_VERSION_STRING}")
++ endif (EIGEN3_VERSION_STRING VERSION_LESS 3.1.0)
+
+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)" AND
+- EIGEN_VERSION VERSION_LESS 3.3.4)
++ EIGEN3_VERSION_STRING VERSION_LESS 3.3.4)
+ # As per issue #289: https://github.com/ceres-solver/ceres-solver/issues/289
+ # the bundle_adjustment_test will fail for Eigen < 3.3.4 on aarch64.
+ message(FATAL_ERROR "-- Ceres requires Eigen version >= 3.3.4 on aarch64. "
+- "Detected version of Eigen is: ${EIGEN_VERSION}.")
++ "Detected version of Eigen is: ${EIGEN3_VERSION_STRING}.")
+ endif()
+
+ if (EIGENSPARSE)
+- message("-- Enabling use of Eigen as a sparse linear algebra library.")
++ message(STATUS "Enabling use of Eigen as a sparse linear algebra library.")
+ list(APPEND CERES_COMPILE_OPTIONS CERES_USE_EIGEN_SPARSE)
+- if (EIGEN_VERSION VERSION_LESS 3.2.2)
++ if (EIGEN3_VERSION_STRING VERSION_LESS 3.2.2)
+ message(" WARNING:")
+ message("")
+- message(" Your version of Eigen (${EIGEN_VERSION}) is older than ")
++ message(" Your version of Eigen (${EIGEN3_VERSION_STRING}) is older than ")
+ message(" version 3.2.2. The performance of SPARSE_NORMAL_CHOLESKY ")
+ message(" and SPARSE_SCHUR linear solvers will suffer.")
+- endif (EIGEN_VERSION VERSION_LESS 3.2.2)
++ endif (EIGEN3_VERSION_STRING VERSION_LESS 3.2.2)
+ else (EIGENSPARSE)
+ message("-- Disabling use of Eigen as a sparse linear algebra library.")
+ message(" This does not affect the covariance estimation algorithm ")
+ message(" which can still use the EIGEN_SPARSE_QR algorithm.")
+ add_definitions(-DEIGEN_MPL2_ONLY)
+ endif (EIGENSPARSE)
+-endif (EIGEN_FOUND)
++endif (EIGEN3_FOUND)
+
+ if (LAPACK)
+ find_package(LAPACK QUIET)
+@@ -562,7 +562,7 @@ include_directories(
+ # Note that this is *not* propagated to clients, ie CERES_INCLUDE_DIRS
+ # used by clients after find_package(Ceres) does not identify Eigen as
+ # as system headers.
+-include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS})
++include_directories(${EIGEN3_INCLUDE_DIRS})
+
+ if (SUITESPARSE)
+ include_directories(${SUITESPARSE_INCLUDE_DIRS})
+diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in
+index c4ed71f..b3d6a17 100644
+--- a/cmake/CeresConfig.cmake.in
++++ b/cmake/CeresConfig.cmake.in
+@@ -202,39 +202,39 @@ set(CERES_VERSION @CERES_VERSION@ )
+
+ # Eigen.
+ # Flag set during configuration and build of Ceres.
+-set(CERES_EIGEN_VERSION @EIGEN_VERSION@)
++set(CERES_EIGEN_VERSION @EIGEN3_VERSION_STRING@)
+ set(EIGEN_WAS_BUILT_WITH_CMAKE @FOUND_INSTALLED_EIGEN_CMAKE_CONFIGURATION@)
+ # Append the locations of Eigen when Ceres was built to the search path hints.
+ if (EIGEN_WAS_BUILT_WITH_CMAKE)
+ set(Eigen3_DIR @Eigen3_DIR@)
+ set(EIGEN_PREFER_EXPORTED_EIGEN_CMAKE_CONFIGURATION TRUE)
+ else()
+- list(APPEND EIGEN_INCLUDE_DIR_HINTS @EIGEN_INCLUDE_DIR@)
++ list(APPEND EIGEN_INCLUDE_DIR_HINTS @EIGEN3_INCLUDE_DIR@)
+ endif()
+ # 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(Eigen ${CERES_EIGEN_VERSION} QUIET)
+-if (EIGEN_FOUND)
+- if (NOT EIGEN_VERSION VERSION_EQUAL CERES_EIGEN_VERSION)
++find_package(Eigen3 ${CERES_EIGEN_VERSION} QUIET)
++if (EIGEN3_FOUND)
++ if (NOT EIGEN3_VERSION_STRING VERSION_EQUAL CERES_EIGEN_VERSION)
+ # CMake's VERSION check in FIND_PACKAGE() will accept any version >= the
+ # specified version. However, only version = is supported. Improve
+ # usability by explaining why we don't accept non-exact version matching.
+ ceres_report_not_found("Found Eigen dependency, but the version of Eigen "
+- "found (${EIGEN_VERSION}) does not exactly match the version of Eigen "
++ "found (${EIGEN3_VERSION_STRING}) does not exactly match the version of Eigen "
+ "Ceres was compiled with (${CERES_EIGEN_VERSION}). This can cause subtle "
+ "bugs by triggering violations of the One Definition Rule. See the "
+ "Wikipedia article http://en.wikipedia.org/wiki/One_Definition_Rule "
+ "for more details")
+ endif ()
+ message(STATUS "Found required Ceres dependency: "
+- "Eigen version ${CERES_EIGEN_VERSION} in ${EIGEN_INCLUDE_DIRS}")
+-else (EIGEN_FOUND)
++ "Eigen version ${CERES_EIGEN_VERSION} in ${EIGEN3_INCLUDE_DIRS}")
++else (EIGEN3_FOUND)
+ ceres_report_not_found("Missing required Ceres "
+ "dependency: Eigen version ${CERES_EIGEN_VERSION}, please set "
+- "EIGEN_INCLUDE_DIR.")
+-endif (EIGEN_FOUND)
+-list(APPEND CERES_INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS})
++ "EIGEN3_INCLUDE_DIR.")
++endif (EIGEN3_FOUND)
++list(APPEND CERES_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIRS})
+
+ # Glog.
+ include (CMakeFindDependencyMacro)
diff --git a/ports/ceres/CONTROL b/ports/ceres/CONTROL
index ecd8f1de6..5870df378 100644
--- a/ports/ceres/CONTROL
+++ b/ports/ceres/CONTROL
@@ -1,6 +1,6 @@
Source: ceres
Version: 1.14.0
-Port-Version: 8
+Port-Version: 9
Build-Depends: glog, eigen3
Homepage: https://github.com/ceres-solver/ceres-solver
Description: non-linear optimization package
diff --git a/ports/ceres/portfile.cmake b/ports/ceres/portfile.cmake
index d2d781b59..e7c455c56 100644
--- a/ports/ceres/portfile.cmake
+++ b/ports/ceres/portfile.cmake
@@ -6,10 +6,6 @@ if(VCPKG_CRT_LINKAGE STREQUAL "static")
set(MSVC_USE_STATIC_CRT_VALUE ON)
endif()
-if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
- set(ADDITIONAL_PATCH "0004_blas_linux_fix.patch")
-endif()
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO ceres-solver/ceres-solver
@@ -20,15 +16,14 @@ vcpkg_from_github(
0001_cmakelists_fixes.patch
0002_use_glog_target.patch
0003_fix_exported_ceres_config.patch
- ${ADDITIONAL_PATCH}
+ 0004_fix_find_eigen.patch
)
+file(REMOVE ${SOURCE_PATH}/cmake/FindCXSparse.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindGflags.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindGlog.cmake)
-#file(REMOVE ${SOURCE_PATH}/cmake/FindEigen.cmake)
+file(REMOVE ${SOURCE_PATH}/cmake/FindEigen.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindSuiteSparse.cmake)
-#file(REMOVE ${SOURCE_PATH}/cmake/FindTBB.cmake)
-
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"suitesparse" SUITESPARSE
@@ -52,7 +47,7 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
-if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_fixup_cmake_targets(CONFIG_PATH CMake)
else()
vcpkg_fixup_cmake_targets(CONFIG_PATH lib${LIB_SUFFIX}/cmake/Ceres)
@@ -61,7 +56,7 @@ endif()
vcpkg_copy_pdbs()
# Changes target search path
-if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+if(VCPKG_TARGET_IS_WINDOWS)
file(READ ${CURRENT_PACKAGES_DIR}/share/ceres/CeresConfig.cmake CERES_TARGETS)
string(REPLACE "get_filename_component(CURRENT_ROOT_INSTALL_DIR\n \${CERES_CURRENT_CONFIG_DIR}/../"
"get_filename_component(CURRENT_ROOT_INSTALL_DIR\n \${CERES_CURRENT_CONFIG_DIR}/../../" CERES_TARGETS "${CERES_TARGETS}")
@@ -77,6 +72,4 @@ endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
-# Handle copyright of suitesparse and metis
-file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/ceres)
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/ceres/LICENSE ${CURRENT_PACKAGES_DIR}/share/ceres/copyright)
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)