diff --git a/ports/cartographer/fix-build-error.patch b/ports/cartographer/fix-build-error.patch deleted file mode 100644 index 9474c78dc1..0000000000 --- a/ports/cartographer/fix-build-error.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/cartographer/common/internal/testing/thread_pool_for_testing.cc b/cartographer/common/internal/testing/thread_pool_for_testing.cc -index f804e13..c987f68 100644 ---- a/cartographer/common/internal/testing/thread_pool_for_testing.cc -+++ b/cartographer/common/internal/testing/thread_pool_for_testing.cc -@@ -16,7 +16,7 @@ - - #include "cartographer/common/internal/testing/thread_pool_for_testing.h" - --#include -+//#include - #include - #include - #include -diff --git a/cartographer/mapping/pose_graph_interface.h b/cartographer/mapping/pose_graph_interface.h -index 6483ef4..6456720 100644 ---- a/cartographer/mapping/pose_graph_interface.h -+++ b/cartographer/mapping/pose_graph_interface.h -@@ -18,6 +18,7 @@ - #define CARTOGRAPHER_MAPPING_POSE_GRAPH_INTERFACE_H_ - - #include -+#include - - #include "cartographer/common/optional.h" - #include "cartographer/mapping/id.h" diff --git a/ports/cartographer/fix-cmake-location.patch b/ports/cartographer/fix-cmake-location.patch deleted file mode 100644 index b0eb12397f..0000000000 --- a/ports/cartographer/fix-cmake-location.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 2e3a686be..f2a0c5d8e 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -300,7 +300,7 @@ foreach(HDR ${INSTALL_GENERATED_HDRS}) - ) - endforeach() - --set(CARTOGRAPHER_CMAKE_DIR share/cartographer/cmake) -+set(CARTOGRAPHER_CMAKE_DIR share/cartographer) - include(CMakePackageConfigHelpers) - configure_package_config_file( - cartographer-config.cmake.in -@@ -311,7 +311,7 @@ configure_package_config_file( - - install( - EXPORT CartographerExport -- DESTINATION share/cartographer/cmake/ -+ DESTINATION share/cartographer/ - FILE CartographerTargets.cmake - ) - diff --git a/ports/cartographer/fix-find-packages.patch b/ports/cartographer/fix-find-packages.patch deleted file mode 100644 index a1336c8840..0000000000 --- a/ports/cartographer/fix-find-packages.patch +++ /dev/null @@ -1,175 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 2e3a686..ed161e4 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -25,27 +25,33 @@ option(BUILD_GRPC "build Cartographer gRPC support" false) - option(BUILD_PROMETHEUS "build Prometheus monitoring support" false) - - include("${PROJECT_SOURCE_DIR}/cmake/functions.cmake") --google_initialize_cartographer_project() --google_enable_testing() -+#google_initialize_cartographer_project() -+#google_enable_testing() - - find_package(Boost REQUIRED COMPONENTS iostreams) - find_package(Ceres REQUIRED COMPONENTS SuiteSparse) - find_package(Eigen3 REQUIRED) --find_package(LuaGoogle REQUIRED) --find_package(Protobuf 3.0.0 REQUIRED) -+find_package(Lua REQUIRED) -+find_package(Protobuf REQUIRED) -+find_package(glog REQUIRED) -+find_package(gflags REQUIRED) - - if (${BUILD_GRPC}) - find_package(async_grpc REQUIRED) - endif() - --include(FindPkgConfig) --PKG_SEARCH_MODULE(CAIRO REQUIRED cairo>=1.12.16) -+#include(FindPkgConfig) -+#PKG_SEARCH_MODULE(CAIRO REQUIRED cairo>=1.12.16) -+#if(CMAKE_BUILD_TYPE STREQUAL Debug) -+# set(CAIRO_LIB_SUFFIX d) -+#endif() -+find_library(CAIRO_LIBRARY cairo${CAIRO_LIB_SUFFIX}) - - # Only build the documentation if we can find Sphinx. --find_package(Sphinx) --if(SPHINX_FOUND) -- add_subdirectory("docs") --endif() -+#find_package(Sphinx) -+#if(SPHINX_FOUND) -+# add_subdirectory("docs") -+#endif() - - # Install catkin package.xml - install(FILES package.xml DESTINATION share/cartographer) -@@ -169,20 +175,20 @@ configure_file( - ${PROJECT_SOURCE_DIR}/cartographer/common/config.h.cmake - ${PROJECT_BINARY_DIR}/cartographer/common/config.h) - --google_binary(cartographer_autogenerate_ground_truth -- SRCS -- cartographer/ground_truth/autogenerate_ground_truth_main.cc --) -- --google_binary(cartographer_compute_relations_metrics -- SRCS -- cartographer/ground_truth/compute_relations_metrics_main.cc --) -- --google_binary(cartographer_migrate_serialization_format -- SRCS -- cartographer/io/migrate_serialization_format_main.cc --) -+#google_binary(cartographer_autogenerate_ground_truth -+# SRCS -+# cartographer/ground_truth/autogenerate_ground_truth_main.cc -+#) -+# -+#google_binary(cartographer_compute_relations_metrics -+# SRCS -+# cartographer/ground_truth/compute_relations_metrics_main.cc -+#) -+# -+#google_binary(cartographer_migrate_serialization_format -+# SRCS -+# cartographer/io/migrate_serialization_format_main.cc -+#) - - if(${BUILD_GRPC}) - google_binary(cartographer_grpc_server -@@ -213,18 +219,16 @@ target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - target_link_libraries(${PROJECT_NAME} PUBLIC ${Boost_LIBRARIES}) - - # We expect find_package(Ceres) to have located these for us. --target_link_libraries(${PROJECT_NAME} PUBLIC glog) --target_link_libraries(${PROJECT_NAME} PUBLIC gflags) -+#target_link_libraries(${PROJECT_NAME} PUBLIC glog) -+#target_link_libraries(${PROJECT_NAME} PUBLIC gflags) -+#target_link_libraries(${PROJECT_NAME} PUBLIC ${CAIRO_LIBRARY}) - --target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC -- "${CAIRO_INCLUDE_DIRS}") - target_link_libraries(${PROJECT_NAME} PUBLIC ${CAIRO_LIBRARIES}) - --target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC -- ${PROTOBUF_INCLUDE_DIR}) - # TODO(hrapp): This should not explicitly list pthread and use - # PROTOBUF_LIBRARIES, but that failed on first try. --target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY} pthread) -+#target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY} pthread) -+target_link_libraries(${PROJECT_NAME} PUBLIC protobuf::libprotobuf) - if(${BUILD_GRPC}) - target_link_libraries(${PROJECT_NAME} PUBLIC grpc++) - target_link_libraries(${PROJECT_NAME} PUBLIC async_grpc) -@@ -237,7 +241,7 @@ endif() - set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}") - set_target_properties(${PROJECT_NAME} PROPERTIES - COMPILE_FLAGS ${TARGET_COMPILE_FLAGS}) -- -+if(0) - set(TEST_LIB - cartographer_test_library - ) -@@ -265,7 +269,7 @@ foreach(ABS_FIL ${ALL_TESTS}) - endif() - target_link_libraries("${TEST_TARGET_NAME}" PUBLIC ${TEST_LIB}) - endforeach() -- -+endif() - # Add the binary directory first, so that port.h is included after it has - # been generated. - target_include_directories(${PROJECT_NAME} PUBLIC -diff --git a/cartographer/common/math.h b/cartographer/common/math.h -index c4a77ef..0248f66 100644 ---- a/cartographer/common/math.h -+++ b/cartographer/common/math.h -@@ -17,6 +17,10 @@ - #ifndef CARTOGRAPHER_COMMON_MATH_H_ - #define CARTOGRAPHER_COMMON_MATH_H_ - -+#ifndef M_PI -+#define M_PI 3.14159265358979323846 -+#endif -+ - #include - #include - -diff --git a/cartographer/common/thread_pool.cc b/cartographer/common/thread_pool.cc -index bc3c743..db424d1 100644 ---- a/cartographer/common/thread_pool.cc -+++ b/cartographer/common/thread_pool.cc -@@ -16,7 +16,7 @@ - - #include "cartographer/common/thread_pool.h" - --#include -+//#include - #include - #include - #include -diff --git a/cmake/functions.cmake b/cmake/functions.cmake -index 3bfd343..3d961b0 100644 ---- a/cmake/functions.cmake -+++ b/cmake/functions.cmake -@@ -118,12 +118,12 @@ macro(google_initialize_cartographer_project) - set(LIST_FILES_CMD "find ${PROJECT_SOURCE_DIR}/ -not -iwholename '*.git*' | sort | sed 's/^/#/'") - set(FILES_LIST_PATH "${PROJECT_BINARY_DIR}/AllFiles.cmake") - set(DETECT_CHANGES_CMD "bash" "-c" "${LIST_FILES_CMD} | diff -N -q ${FILES_LIST_PATH} - || ${LIST_FILES_CMD} > ${FILES_LIST_PATH}") -- add_custom_target(${PROJECT_NAME}_detect_changes ALL -- COMMAND ${DETECT_CHANGES_CMD} -- VERBATIM -- ) -+ #add_custom_target(${PROJECT_NAME}_detect_changes ALL -+ # COMMAND ${DETECT_CHANGES_CMD} -+ # VERBATIM -+ #) - if(NOT EXISTS ${FILES_LIST_PATH}) -- execute_process(COMMAND ${DETECT_CHANGES_CMD}) -+ #execute_process(COMMAND ${DETECT_CHANGES_CMD}) - endif() - include(${FILES_LIST_PATH}) - endmacro() diff --git a/ports/cartographer/portfile.cmake b/ports/cartographer/portfile.cmake deleted file mode 100644 index 50cab69d0a..0000000000 --- a/ports/cartographer/portfile.cmake +++ /dev/null @@ -1,30 +0,0 @@ -vcpkg_check_linkage(ONLY_STATIC_LIBRARY) - -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO googlecartographer/cartographer - REF ${VERSION} - SHA512 4e3b38ee40d9758cbd51f087578b82efb7d1199b4b7696d31f45938ac06250caaea2b4d85ccb0a848c958ba187a0101ee95c87323ca236c613995b23b215041c - HEAD_REF master - PATCHES - fix-find-packages.patch - fix-build-error.patch - fix-cmake-location.patch -) - -vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - OPTIONS_DEBUG - -DFORCE_DEBUG_BUILD=True -) - -vcpkg_cmake_install() -vcpkg_cmake_config_fixup() -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/cartographer/CartographerTargets.cmake" "${SOURCE_PATH}/;" "") -vcpkg_copy_pdbs() - -# Clean -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/ports/cartographer/vcpkg.json b/ports/cartographer/vcpkg.json deleted file mode 100644 index bfd1ce508c..0000000000 --- a/ports/cartographer/vcpkg.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "cartographer", - "version": "1.0.0", - "port-version": 6, - "description": "Google 2D & 3D SLAM package", - "homepage": "https://github.com/googlecartographer/cartographer", - "dependencies": [ - "boost-iostreams", - "cairo", - { - "name": "ceres", - "features": [ - "suitesparse" - ] - }, - "gflags", - "glog", - "gtest", - "lua", - "protobuf", - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - } - ] -} diff --git a/ports/ceres/0001_cmakelists_fixes.patch b/ports/ceres/0001_cmakelists_fixes.patch index bb59427237..e57308a737 100644 --- a/ports/ceres/0001_cmakelists_fixes.patch +++ b/ports/ceres/0001_cmakelists_fixes.patch @@ -1,11 +1,68 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 33e98b1..f275d68 100644 +index 8e49c19e..f8c61d92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -426,27 +426,7 @@ if (MINIGLOG) +@@ -292,27 +292,28 @@ if (SUITESPARSE) + # built with SuiteSparse support. + + # Check for SuiteSparse and dependencies. +- find_package(SuiteSparse 4.5.6 COMPONENTS CHOLMOD SPQR +- OPTIONAL_COMPONENTS Partition) +- if (SuiteSparse_FOUND) +- set(SuiteSparse_DEPENDENCY "find_dependency(SuiteSparse ${SuiteSparse_VERSION})") ++ find_package(SuiteSparse REQUIRED CONFIG) ++ if (SUITESPARSE_FOUND) ++ set(SuiteSparse_DEPENDENCY "find_dependency(SuiteSparse ${SuiteSparse_VERSION} CONFIG)") + # By default, if all of SuiteSparse's dependencies are found, Ceres is + # built with SuiteSparse support. + message("-- Found SuiteSparse ${SuiteSparse_VERSION}, " + "building with SuiteSparse.") +- +- if (SuiteSparse_NO_CMAKE OR NOT SuiteSparse_DIR) +- install(FILES ${Ceres_SOURCE_DIR}/cmake/FindSuiteSparse.cmake +- ${Ceres_SOURCE_DIR}/cmake/FindMETIS.cmake +- DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR}) +- endif (SuiteSparse_NO_CMAKE OR NOT SuiteSparse_DIR) +- else (SuiteSparse_FOUND) ++ add_library(SuiteSparse::CONFIG ALIAS SuiteSparse::suitesparseconfig) ++ add_library(SuiteSparse::AMD ALIAS SuiteSparse::amd) ++ add_library(SuiteSparse::CAMD ALIAS SuiteSparse::camd) ++ add_library(SuiteSparse::CCOLAMD ALIAS SuiteSparse::ccolamd) ++ add_library(SuiteSparse::COLAMD ALIAS SuiteSparse::colamd) ++ add_library(SuiteSparse::CHOLMOD ALIAS SuiteSparse::cholmod) ++ add_library(SuiteSparse::SPQR ALIAS SuiteSparse::spqr) ++ add_library(METIS::METIS ALIAS metis) ++ else (SUITESPARSE_FOUND) + # Disable use of SuiteSparse if it cannot be found and continue. + message("-- Did not find all SuiteSparse dependencies, disabling " + "SuiteSparse support.") + update_cache_variable(SUITESPARSE OFF) + list(APPEND CERES_COMPILE_OPTIONS CERES_NO_SUITESPARSE) +- endif (SuiteSparse_FOUND) ++ endif (SUITESPARSE_FOUND) + else (SUITESPARSE) + message("-- Building without SuiteSparse.") + list(APPEND CERES_COMPILE_OPTIONS CERES_NO_SUITESPARSE) +@@ -395,9 +396,12 @@ endif() + # GFlags. + if (GFLAGS) + # Don't search with REQUIRED as we can continue without gflags. +- find_package(gflags 2.2.0) ++ find_package(gflags CONFIG REQUIRED) + if (gflags_FOUND) +- if (TARGET gflags) ++ if (TARGET gflags::gflags) ++ if(NOT TARGET gflags) ++ add_library(gflags ALIAS gflags::gflags) ++ endif() + message("-- Found Google Flags (gflags) version ${gflags_VERSION}: ${gflags_DIR}") + else() + message("-- Detected version of gflags: ${gflags_VERSION} does not define " +@@ -430,28 +434,7 @@ if (MINIGLOG) + mark_as_advanced(FORCE GLOG_INCLUDE_DIR GLOG_LIBRARY) else (MINIGLOG) - unset(MINIGLOG_MAX_LOG_LEVEL CACHE) +- 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) @@ -29,9 +86,18 @@ index 33e98b1..f275d68 100644 - message("-- Found Google Log (glog)." ${GLOG_GFLAGS_DEPENDENCY_MESSAGE}) + find_package(Glog REQUIRED) endif (MINIGLOG) - + if (NOT SCHUR_SPECIALIZATIONS) -@@ -760,12 +740,6 @@ install(FILES "${Ceres_BINARY_DIR}/CeresConfig-install.cmake" +@@ -466,7 +449,7 @@ endif (NOT CUSTOM_BLAS) + + if (BUILD_BENCHMARKS) + # Version 1.3 was first to provide import targets +- find_package(benchmark 1.3 QUIET) ++ find_package(benchmark CONFIG REQUIRED) + if (benchmark_FOUND) + message("-- Found Google benchmark library. Building Ceres benchmarks.") + else() +@@ -722,12 +705,6 @@ install(FILES "${Ceres_BINARY_DIR}/CeresConfig-install.cmake" DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR}) install(FILES "${Ceres_BINARY_DIR}/CeresConfigVersion.cmake" DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR}) @@ -41,6 +107,6 @@ index 33e98b1..f275d68 100644 - install(FILES "${Ceres_SOURCE_DIR}/cmake/FindGlog.cmake" - DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR}) -endif() - + if (PROVIDE_UNINSTALL_TARGET) # Create an uninstall target to remove all installed files. diff --git a/ports/ceres/0002_use_glog_target.patch b/ports/ceres/0002_use_glog_target.patch index 01ac27d4aa..806025c270 100644 --- a/ports/ceres/0002_use_glog_target.patch +++ b/ports/ceres/0002_use_glog_target.patch @@ -1,10 +1,10 @@ diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt -index 0e33263..299b373 100644 +index f9fc2415..0aaabe4d 100644 --- a/internal/ceres/CMakeLists.txt +++ b/internal/ceres/CMakeLists.txt -@@ -101,17 +101,9 @@ endif() - find_package(Threads QUIET) - list(APPEND CERES_LIBRARY_PUBLIC_DEPENDENCIES Threads::Threads) +@@ -85,17 +85,9 @@ endif (SCHUR_SPECIALIZATIONS) + set_source_files_properties(${CERES_INTERNAL_SCHUR_FILES} PROPERTIES + SKIP_UNITY_BUILD_INCLUSION ON) -if (NOT MINIGLOG AND GLOG_FOUND) - list(APPEND CERES_LIBRARY_PUBLIC_DEPENDENCIES ${GLOG_LIBRARIES}) diff --git a/ports/ceres/0003_fix_exported_ceres_config.patch b/ports/ceres/0003_fix_exported_ceres_config.patch index 9505707da1..008d798baf 100644 --- a/ports/ceres/0003_fix_exported_ceres_config.patch +++ b/ports/ceres/0003_fix_exported_ceres_config.patch @@ -1,8 +1,17 @@ diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in -index 4745483..b55462d 100644 +index ceb7e269..5dee7e3c 100644 --- a/cmake/CeresConfig.cmake.in +++ b/cmake/CeresConfig.cmake.in -@@ -217,55 +217,14 @@ else (Eigen3_FOUND) +@@ -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_package(Eigen3 CONFIG ${CERES_EIGEN_VERSION} QUIET) + if (Eigen3_FOUND) + if (NOT Eigen3_VERSION VERSION_EQUAL CERES_EIGEN_VERSION) + # CMake's VERSION check in FIND_PACKAGE() will accept any version >= the +@@ -217,55 +217,8 @@ else (Eigen3_FOUND) endif (Eigen3_FOUND) # glog (and maybe gflags). @@ -35,15 +44,13 @@ index 4745483..b55462d 100644 - # Search quietly s/t we control the timing of the error message if not found. - find_package(Glog QUIET) - endif() - +- - if (GLOG_FOUND) - ceres_message(STATUS "Found required Ceres dependency: glog") - else() - ceres_report_not_found("Missing required Ceres dependency: glog.") - endif() -+include (CMakeFindDependencyMacro) -+find_dependency (glog NO_MODULE) - +- - # gflags is only a public dependency of Ceres via glog, thus is not required - # if Ceres was built with MINIGLOG. - if (CERES_USES_GFLAGS) @@ -57,10 +64,8 @@ index 4745483..b55462d 100644 - endif() - endif() -endif(CERES_USES_MINIGLOG) -+# SuiteSparse -+if (@SUITESPARSE@) -+ find_dependency(SuiteSparse CONFIG) -+endif() ++include(CMakeFindDependencyMacro) ++find_dependency(glog NO_MODULE) # Import exported Ceres targets, if they have not already been imported. if (NOT TARGET ceres AND NOT Ceres_BINARY_DIR) diff --git a/ports/ceres/0004_remove_broken_fake_ba_jac.patch b/ports/ceres/0004_remove_broken_fake_ba_jac.patch new file mode 100644 index 0000000000..3862869d7a --- /dev/null +++ b/ports/ceres/0004_remove_broken_fake_ba_jac.patch @@ -0,0 +1,67 @@ +diff --git a/internal/ceres/fake_bundle_adjustment_jacobian.cc b/internal/ceres/fake_bundle_adjustment_jacobian.cc +index efe4d8d7..22f34059 100644 +--- a/internal/ceres/fake_bundle_adjustment_jacobian.cc ++++ b/internal/ceres/fake_bundle_adjustment_jacobian.cc +@@ -96,25 +96,4 @@ std::unique_ptr CreateFakeBundleAdjustmentJacobian( + return jacobian; + } + +-std::pair< +- std::unique_ptr>, +- std::unique_ptr> +-CreateFakeBundleAdjustmentPartitionedJacobian(int num_cameras, +- int num_points, +- int camera_size, +- int landmark_size, +- double visibility, +- std::mt19937& rng) { +- using PartitionedView = +- PartitionedMatrixView<2, Eigen::Dynamic, Eigen::Dynamic>; +- auto block_sparse_matrix = CreateFakeBundleAdjustmentJacobian( +- num_cameras, num_points, camera_size, landmark_size, visibility, rng); +- LinearSolver::Options options; +- options.elimination_groups.push_back(num_points); +- auto partitioned_view = +- std::make_unique(options, *block_sparse_matrix); +- return std::make_pair(std::move(partitioned_view), +- std::move(block_sparse_matrix)); +-} +- + } // namespace ceres::internal +diff --git a/internal/ceres/fake_bundle_adjustment_jacobian.h b/internal/ceres/fake_bundle_adjustment_jacobian.h +index ced1b161..0448dbf3 100644 +--- a/internal/ceres/fake_bundle_adjustment_jacobian.h ++++ b/internal/ceres/fake_bundle_adjustment_jacobian.h +@@ -47,32 +47,6 @@ std::unique_ptr CreateFakeBundleAdjustmentJacobian( + double visibility, + std::mt19937& prng); + +-template +-std::pair>, +- std::unique_ptr> +-CreateFakeBundleAdjustmentPartitionedJacobian(int num_cameras, +- int num_points, +- double visibility, +- std::mt19937& rng) { +- using PartitionedView = PartitionedMatrixView<2, kEBlockSize, kFBlockSize>; +- auto block_sparse_matrix = CreateFakeBundleAdjustmentJacobian( +- num_cameras, num_points, kFBlockSize, kEBlockSize, visibility, rng); +- auto partitioned_view = +- std::make_unique(*block_sparse_matrix, num_points); +- return std::make_pair(std::move(partitioned_view), +- std::move(block_sparse_matrix)); +-} +- +-std::pair< +- std::unique_ptr>, +- std::unique_ptr> +-CreateFakeBundleAdjustmentPartitionedJacobian(int num_cameras, +- int num_points, +- int camera_size, +- int landmark_size, +- double visibility, +- std::mt19937& rng); +- + } // namespace ceres::internal + + #endif // CERES_INTERNAL_FAKE_BUNDLE_ADJUSTMENT_JACOBIAN diff --git a/ports/ceres/find-package-required.patch b/ports/ceres/find-package-required.patch deleted file mode 100644 index 07785dd137..0000000000 --- a/ports/ceres/find-package-required.patch +++ /dev/null @@ -1,112 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 2d241fe..b79454d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -244,7 +244,7 @@ else (CUDA) - endif (CUDA) - - if (LAPACK) -- find_package(LAPACK QUIET) -+ find_package(LAPACK REQUIRED) - if (LAPACK_FOUND) - message("-- Found LAPACK library: ${LAPACK_LIBRARIES}") - else (LAPACK_FOUND) -@@ -266,7 +266,8 @@ if (SUITESPARSE) - # built with SuiteSparse support. - - # Check for SuiteSparse and dependencies. -- find_package(SuiteSparse 4.0 COMPONENTS CHOLMOD SPQR) -+ find_package(suitesparse CONFIG REQUIRED) -+ set(SuiteSparse_FOUND 1) - if (SuiteSparse_FOUND) - set(SuiteSparse_DEPENDENCY "find_dependency(SuiteSparse ${SuiteSparse_VERSION})") - # By default, if all of SuiteSparse's dependencies are found, Ceres is -@@ -274,11 +275,11 @@ if (SUITESPARSE) - message("-- Found SuiteSparse ${SuiteSparse_VERSION}, " - "building with SuiteSparse.") - -- if (SuiteSparse_NO_CMAKE OR NOT SuiteSparse_DIR) -+ if (0) - install(FILES ${Ceres_SOURCE_DIR}/cmake/FindSuiteSparse.cmake - ${Ceres_SOURCE_DIR}/cmake/FindMETIS.cmake - DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR}) -- endif (SuiteSparse_NO_CMAKE OR NOT SuiteSparse_DIR) -+ endif () - else (SuiteSparse_FOUND) - # Disable use of SuiteSparse if it cannot be found and continue. - message("-- Did not find all SuiteSparse dependencies, disabling " -@@ -294,7 +295,7 @@ endif (SUITESPARSE) - # CXSparse. - if (CXSPARSE) - # Don't search with REQUIRED as we can continue without CXSparse. -- find_package(CXSparse) -+ find_package(CXSparse REQUIRED) - if (CXSparse_FOUND) - set(CXSparse_DEPENDENCY "find_dependency(CXSparse ${CXSparse_VERSION})") - # By default, if CXSparse and all dependencies are found, Ceres is -@@ -302,10 +303,10 @@ if (CXSPARSE) - message("-- Found CXSparse version: ${CXSparse_VERSION}, " - "building with CXSparse.") - -- if (CXSparse_NO_CMAKE OR NOT CXSparse_DIR) -+ if (0) - install(FILES ${Ceres_SOURCE_DIR}/cmake/FindCXSparse.cmake - DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR}) -- endif (CXSparse_NO_CMAKE OR NOT CXSparse_DIR) -+ endif () - else (CXSparse_FOUND) - # Disable use of CXSparse if it cannot be found and continue. - message("-- Did not find CXSparse, Building without CXSparse.") -@@ -367,9 +368,10 @@ endif() - # GFlags. - if (GFLAGS) - # Don't search with REQUIRED as we can continue without gflags. -- find_package(gflags 2.2.0) -+ find_package(gflags CONFIG REQUIRED) - if (gflags_FOUND) -- if (TARGET gflags) -+ if (TARGET gflags::gflags) -+ add_library(gflags ALIAS gflags::gflags) - message("-- Found Google Flags (gflags) version ${gflags_VERSION}: ${gflags_DIR}") - else() - message("-- Detected version of gflags: ${gflags_VERSION} does not define " -@@ -420,7 +422,7 @@ set_ceres_threading_model("${CERES_THREADING_MODEL}") - - if (BUILD_BENCHMARKS) - # Version 1.3 was first to provide import targets -- find_package(benchmark 1.3 QUIET) -+ find_package(benchmark CONFIG REQUIRED) - if (benchmark_FOUND) - message("-- Found Google benchmark library. Building Ceres benchmarks.") - else() -@@ -611,7 +613,7 @@ create_ceres_config("${CERES_COMPILE_OPTIONS}" - add_subdirectory(internal/ceres) - - if (BUILD_DOCUMENTATION) -- find_package(Sphinx) -+ find_package(Sphinx REQUIRED) - if (NOT SPHINX_FOUND) - message("-- Failed to find Sphinx and/or its dependencies, disabling build of documentation.") - update_cache_variable(BUILD_DOCUMENTATION OFF) -diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt -index 299b373..33d41d8 100644 ---- a/internal/ceres/CMakeLists.txt -+++ b/internal/ceres/CMakeLists.txt -@@ -108,14 +108,14 @@ endif (NOT MINIGLOG) - if (SUITESPARSE AND SuiteSparse_FOUND) - # Define version information for use in Solver::FullReport. - add_definitions(-DCERES_SUITESPARSE_VERSION="${SuiteSparse_VERSION}") -- list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES SuiteSparse::CHOLMOD -- SuiteSparse::SPQR) -+ list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES SuiteSparse::cholmod -+ SuiteSparse::spqr) - endif (SUITESPARSE AND SuiteSparse_FOUND) - - if (CXSPARSE AND CXSparse_FOUND) - # Define version information for use in Solver::FullReport. - add_definitions(-DCERES_CXSPARSE_VERSION="${CXSparse_VERSION}") -- list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES CXSparse::CXSparse) -+ list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ${CXSparse_LIBRARIES}) - endif (CXSPARSE AND CXSparse_FOUND) - - if (ACCELERATESPARSE AND AccelerateSparse_FOUND) diff --git a/ports/ceres/portfile.cmake b/ports/ceres/portfile.cmake index 6f856bed4b..f6363592f6 100644 --- a/ports/ceres/portfile.cmake +++ b/ports/ceres/portfile.cmake @@ -9,17 +9,16 @@ endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO ceres-solver/ceres-solver - REF f68321e7de8929fbcdb95dd42877531e64f72f66 #2.1.0 - SHA512 67bbd8a9385a40fe69d118fbc84da0fcc9aa1fbe14dd52f5403ed09686504213a1d931e95a1a0148d293b27ab5ce7c1d618fbf2e8fed95f2bbafab851a1ef449 + REF 85331393dc0dff09f6fb9903ab0c4bfa3e134b01 #2.2.0 + SHA512 16d3f4f3524b7532f666c0a626f1c678170698119eff3d914ade2e7cc65f25e644c2eabb618cd5805cba0fd4e08d3f64658a9f480934d8aace4089ec42b3d691 HEAD_REF master PATCHES 0001_cmakelists_fixes.patch 0002_use_glog_target.patch 0003_fix_exported_ceres_config.patch - find-package-required.patch + 0004_remove_broken_fake_ba_jac.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") @@ -30,7 +29,6 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS FEATURES "schur" SCHUR_SPECIALIZATIONS "suitesparse" SUITESPARSE - "cxsparse" CXSPARSE "lapack" LAPACK "eigensparse" EIGENSPARSE "tools" GFLAGS @@ -44,6 +42,11 @@ foreach (FEATURE ${FEATURE_OPTIONS}) message(STATUS "${FEATURE}") endforeach() +set(USE_CUDA OFF) +if("cuda" IN_LIST FEATURES) + set(USE_CUDA ON) +endif() + set(TARGET_OPTIONS ) if(VCPKG_TARGET_IS_IOS) # Note: CMake uses "OSX" not just for macOS, but also iOS, watchOS and tvOS. @@ -60,9 +63,12 @@ vcpkg_cmake_configure( -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DBUILD_BENCHMARKS=OFF + -DUSE_CUDA=${USE_CUDA} -DPROVIDE_UNINSTALL_TARGET=OFF -DMSVC_USE_STATIC_CRT=${MSVC_USE_STATIC_CRT_VALUE} - -DLIB_SUFFIX=${LIB_SUFFIX} + MAYBE_UNUSED_VARIABLES + CUDA + MSVC_USE_STATIC_CRT ) vcpkg_cmake_install() diff --git a/ports/ceres/vcpkg.json b/ports/ceres/vcpkg.json index d7471df4d4..45492e32e8 100644 --- a/ports/ceres/vcpkg.json +++ b/ports/ceres/vcpkg.json @@ -1,7 +1,6 @@ { "name": "ceres", - "version": "2.1.0", - "port-version": 5, + "version": "2.2.0", "description": "non-linear optimization package", "homepage": "https://github.com/ceres-solver/ceres-solver", "license": "Apache-2.0", @@ -28,17 +27,6 @@ "cuda" ] }, - "cxsparse": { - "description": "CXSparse support for Ceres", - "dependencies": [ - { - "name": "ceres", - "features": [ - "suitesparse" - ] - } - ] - }, "eigensparse": { "description": "Use of Eigen as a sparse linear algebra library in Ceres" }, diff --git a/ports/openmvg/0002-eigen-3.4.patch b/ports/openmvg/0002-eigen-3.4.patch deleted file mode 100644 index 19098d2ae2..0000000000 --- a/ports/openmvg/0002-eigen-3.4.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/src/openMVG/multiview/CMakeLists.txt -+++ b/src/openMVG/multiview/CMakeLists.txt -@@ -38,6 +38,9 @@ target_include_directories(openMVG_multiview - $ - ) - set_target_properties(openMVG_multiview PROPERTIES SOVERSION ${OPENMVG_VERSION_MAJOR} VERSION "${OPENMVG_VERSION_MAJOR}.${OPENMVG_VERSION_MINOR}") -+if (MSVC) -+ set_target_properties(openMVG_multiview PROPERTIES COMPILE_FLAGS "/bigobj") -+endif (MSVC) - - add_library(openMVG_multiview_test_data ${MULTIVIEWTESTDATA}) - target_link_libraries(openMVG_multiview_test_data PRIVATE openMVG_numeric openMVG_multiview) - \ No newline at end of file diff --git a/ports/openmvg/build_fixes.patch b/ports/openmvg/build_fixes.patch index 66cc004f3e..ae06b0aa20 100644 --- a/ports/openmvg/build_fixes.patch +++ b/ports/openmvg/build_fixes.patch @@ -1,32 +1,32 @@ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 5d909ec..ab7eb6f 100644 +index 6879c4c6..edf4e5b2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt -@@ -20,6 +20,7 @@ if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) - message(FATAL_ERROR "In-source builds not allowed.") - endif() +@@ -24,6 +24,7 @@ endif() + + set(CMAKE_FIND_FRAMEWORK LAST) +if(0) # ============================================================================== # OpenMVG build options # ============================================================================== -@@ -37,6 +38,7 @@ option(OpenMVG_USE_OPENMP "Enable OpenMP parallelization" ON) - # and openMVG simultaneously +@@ -59,6 +60,7 @@ option(OpenMVG_USE_OCVSIFT "Add or not OpenCV SIFT in available features" OFF) + # Enable this to be able to use LiGT in main_SfM. # ============================================================================== - option(OpenMVG_USE_OPENCV "Build or not opencv+openMVG samples programs" OFF) + option(OpenMVG_USE_LIGT "Add or not LiGT in available" ON) +endif() # ============================================================================== - # Since OpenCV 3, SIFT is no longer in the default modules. See -@@ -95,6 +97,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - register_definitions(-DOPENMVG_STD_UNORDERED_MAP) + # OpenMVG version +@@ -104,6 +106,7 @@ else (OpenMVG_BUILD_SHARED) + set(BUILD_SHARED_LIBS OFF) endif() +if(0) # ============================================================================== # Check that submodule have been initialized and updated # ============================================================================== -@@ -103,6 +106,7 @@ if (NOT EXISTS ${PROJECT_SOURCE_DIR}/dependencies/cereal/include) +@@ -112,6 +115,7 @@ if (NOT EXISTS ${PROJECT_SOURCE_DIR}/dependencies/cereal/include) "\n submodule(s) are missing, please update your repository:\n" " > git submodule update -i\n") endif() @@ -34,27 +34,7 @@ index 5d909ec..ab7eb6f 100644 # ============================================================================== # Additional cmake find modules -@@ -138,7 +142,6 @@ if (OpenMVG_USE_OPENMP) - find_package(OpenMP) - if (OPENMP_FOUND) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") -- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" ON) - register_definitions(-DOPENMVG_USE_OPENMP) - if (NOT MSVC) - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") -@@ -149,11 +152,6 @@ if (OpenMVG_USE_OPENMP) - endif() - endif (NOT MSVC) - endif (OPENMP_FOUND) --else (OpenMVG_USE_OPENMP) -- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" OFF) -- include(UpdateCacheVariable) -- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENMP OFF) -- remove_definitions(-DOPENMVG_USE_OPENMP) - endif (OpenMVG_USE_OPENMP) - - # ============================================================================== -@@ -170,9 +168,10 @@ endif() +@@ -191,9 +195,10 @@ endif() # ============================================================================== # IMAGE IO detection # ============================================================================== @@ -68,43 +48,7 @@ index 5d909ec..ab7eb6f 100644 # Folders set_property(GLOBAL PROPERTY USE_FOLDERS ON) -@@ -192,6 +191,7 @@ if (OpenMVG_BUILD_OPENGL_EXAMPLES) - set_property(TARGET glfw PROPERTY FOLDER OpenMVG/3rdParty/glfw) - endif (OpenMVG_BUILD_OPENGL_EXAMPLES) - -+if(0) - # Dependencies install rules - install( - DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/ -@@ -199,6 +199,7 @@ install( - COMPONENT headers - FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" - ) -+endif() - - # ============================================================================== - # --END-- SUBMODULE CONFIGURATION -@@ -235,6 +236,7 @@ ENDMACRO(UNIT_TEST) - # - external by default - # - internal if cereal not found - # ============================================================================== -+if(0) - find_package(cereal QUIET CONFIG) - if (NOT TARGET cereal) - add_library(cereal INTERFACE) -@@ -247,7 +249,11 @@ if (NOT TARGET cereal) - - set(OpenMVG_USE_INTERNAL_CEREAL ON) - endif() -+endif() - -+find_package(cereal REQUIRED CONFIG) -+get_target_property(CEREAL_INCLUDE_DIRS cereal::cereal INTERFACE_INCLUDE_DIRECTORIES) -+ - # ============================================================================== - # Eigen - # ============================================================================== -@@ -255,6 +261,7 @@ endif() +@@ -281,6 +286,7 @@ endif() # - external if EIGEN_INCLUDE_DIR_HINTS is defined # - internal if Eigen not found # ============================================================================== @@ -112,18 +56,19 @@ index 5d909ec..ab7eb6f 100644 find_package(Eigen3 QUIET) if (NOT Eigen3_FOUND) set(EIGEN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/eigen) -@@ -263,6 +270,10 @@ if (NOT Eigen3_FOUND) +@@ -289,7 +295,11 @@ if (NOT Eigen3_FOUND) else() set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) endif() +endif() -+ ++ + add_definitions(-DEIGEN_MPL2_ONLY) +find_package(Eigen3 REQUIRED) +set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) # ============================================================================== # Ceres -@@ -270,6 +281,7 @@ endif() +@@ -297,6 +307,7 @@ add_definitions(-DEIGEN_MPL2_ONLY) # - external by default if CERES_DIR_HINTS or find_package found a valid Ceres # - internal if ceres not found (ceres-solver+cxsparse+miniglog) # ============================================================================== @@ -131,17 +76,17 @@ index 5d909ec..ab7eb6f 100644 find_package(Ceres QUIET HINTS ${CERES_DIR_HINTS}) if (NOT Ceres_FOUND) set(OpenMVG_USE_INTERNAL_CERES ON) -@@ -281,6 +293,9 @@ if (NOT Ceres_FOUND) +@@ -308,6 +319,9 @@ if (NOT Ceres_FOUND) STRING(REGEX REPLACE "version ([0-9.]+).*" "\\1" CERES_VERSION ${CERES_CONFIG}) set(CERES_LIBRARIES openMVG_ceres) endif() +endif() -+ ++ +find_package(Ceres REQUIRED) # ============================================================================== # Flann -@@ -288,6 +303,7 @@ endif() +@@ -315,6 +329,7 @@ endif() # - internal by default (flann), # - external if FLANN_INCLUDE_DIR_HINTS and a valid Flann setup is found # ============================================================================== @@ -149,17 +94,33 @@ index 5d909ec..ab7eb6f 100644 if (NOT DEFINED FLANN_INCLUDE_DIR_HINTS) set(FLANN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp) set(OpenMVG_USE_INTERNAL_FLANN ON) -@@ -296,6 +312,9 @@ find_package(Flann QUIET) +@@ -330,6 +345,9 @@ endif() if (NOT FLANN_FOUND OR OpenMVG_USE_INTERNAL_FLANN) set(FLANN_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp) endif() +endif() -+ ++ +find_package(flann REQUIRED) - + # ============================================================================== # CoinUtils -@@ -364,6 +395,7 @@ endif() +@@ -356,13 +374,13 @@ endif() + if (NOT DEFINED CLP_INCLUDE_DIR_HINTS) + set(CLP_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/) + set(OpenMVG_USE_INTERNAL_CLP ON) +- find_package(Clp QUIET) ++ find_package(Clp REQUIRED) + set(CLP_INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/ + ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/OsiClp/) + set(CLP_LIBRARIES lib_clp lib_OsiClpSolver) + else() +- find_package(Clp QUIET) ++ find_package(Clp REQUIRED) + endif() + + # ============================================================================== +@@ -398,6 +416,7 @@ endif() # - internal by default (Lemon), # - external if LEMON_INCLUDE_DIR_HINTS and a valid Lemon setup is found # ============================================================================== @@ -167,7 +128,7 @@ index 5d909ec..ab7eb6f 100644 if (NOT DEFINED LEMON_INCLUDE_DIR_HINTS) set(LEMON_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/lemon) set(OpenMVG_USE_INTERNAL_LEMON ON) -@@ -374,6 +406,9 @@ if (NOT LEMON_FOUND OR OpenMVG_USE_INTERNAL_LEMON) +@@ -408,13 +427,16 @@ if (NOT LEMON_FOUND OR OpenMVG_USE_INTERNAL_LEMON) ${CMAKE_CURRENT_SOURCE_DIR}/third_party/lemon ${PROJECT_BINARY_DIR}/third_party/lemon) endif() @@ -177,21 +138,24 @@ index 5d909ec..ab7eb6f 100644 # ============================================================================== # OpenCV -@@ -381,12 +416,7 @@ endif() + # ============================================================================== # - only external and enabled only if OpenMVG_USE_OPENCV is set to ON # ============================================================================== - if (OpenMVG_USE_OPENCV) -- find_package( OpenCV QUIET ) -- if (NOT OpenCV_FOUND OR OpenCV_VERSION VERSION_LESS "3.0.0") -- message(STATUS "OpenCV was not found (note that OpenCV version >= 3.0.0 is required). -> Disabling OpenCV support.") -- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENCV OFF) -- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OCVSIFT OFF) -- endif() -+ find_package( OpenCV REQUIRED ) +-if (OpenMVG_USE_OPENCV) ++if (0) + find_package( OpenCV QUIET ) + if (NOT OpenCV_FOUND OR OpenCV_VERSION VERSION_LESS "3.0.0") + message(STATUS "OpenCV was not found (note that OpenCV version >= 3.0.0 is required). -> Disabling OpenCV support.") +@@ -429,7 +451,7 @@ endif() + # ============================================================================== + # - enabled only if OpenMVG_USE_LIGT is set to ON + # ============================================================================== +-if (OpenMVG_USE_LIGT) ++if (0) + add_definitions(-DUSE_PATENTED_LIGT) endif() - -@@ -394,7 +424,6 @@ endif() +@@ -438,7 +460,6 @@ endif() # Third-party libraries: # ============================================================================== add_subdirectory(third_party) @@ -199,7 +163,28 @@ index 5d909ec..ab7eb6f 100644 # ============================================================================== # openMVG modules -@@ -481,67 +510,67 @@ message("** Use OpenCV SIFT features: " ${OpenMVG_USE_OCVSIFT}) +@@ -447,9 +468,9 @@ add_subdirectory(testing) + add_subdirectory(openMVG) + + # openMVG tutorial examples +-if (OpenMVG_BUILD_EXAMPLES) ++if (0) + add_subdirectory(openMVG_Samples) +-endif (OpenMVG_BUILD_EXAMPLES) ++endif () + + # Complete software(s) build on openMVG libraries + if (OpenMVG_BUILD_SOFTWARES) +@@ -464,7 +485,7 @@ add_subdirectory(nonFree) + # -------------------------- + # Sphinx detection + # ============================================================================== +-if (OpenMVG_BUILD_DOC) ++if (0) + find_package(Sphinx) + if (EXISTS ${SPHINX_EXECUTABLE}) + set(SPHINX_HTML_DIR "${CMAKE_CURRENT_BINARY_DIR}/htmlDoc") +@@ -526,67 +547,67 @@ message("** Use LiGT for global translation estimation: " ${OpenMVG_USE_LIGT}) message("\n") @@ -278,356 +263,8 @@ index 5d909ec..ab7eb6f 100644 message(STATUS "LEMON: " ${LEMON_VERSION} " (internal)") else() message(STATUS "LEMON: " ${LEMON_VERSION} " (external)") -diff --git a/src/cmakeFindModules/OpenMVGConfig.cmake.in b/src/cmakeFindModules/OpenMVGConfig.cmake.in -index e7dfbfd..65224c4 100644 ---- a/src/cmakeFindModules/OpenMVGConfig.cmake.in -+++ b/src/cmakeFindModules/OpenMVGConfig.cmake.in -@@ -19,7 +19,7 @@ - # OPENMVG_VERSION: Version of OpenMVG found. - # - --# Called if we failed to find OpenMVG or any of it's required dependencies, -+# Called if we failed to find OpenMVG or any of its required dependencies, - # unsets all public (designed to be used externally) variables and reports - # error message at priority depending upon [REQUIRED/QUIET/] argument. - macro(OPENMVG_REPORT_NOT_FOUND REASON_MSG) -@@ -58,10 +58,17 @@ set(CALLERS_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) - # Reset CMake module path to the installation directory of this - # script. - set(CMAKE_MODULE_PATH ${CURRENT_CONFIG_INSTALL_DIR}) -+include(CMakeFindDependencyMacro) -+ -+find_dependency(flann) -+find_dependency(Threads) -+find_dependency(cereal) -+find_dependency(Ceres) -+find_dependency(vlfeat) - - # Build the absolute root install directory as a relative path - get_filename_component(CURRENT_ROOT_INSTALL_DIR -- ${CMAKE_MODULE_PATH}/../../../ ABSOLUTE) -+ ${CMAKE_MODULE_PATH}/../../ ABSOLUTE) - if (NOT EXISTS ${CURRENT_ROOT_INSTALL_DIR}) - OPENMVG_REPORT_NOT_FOUND( - "OpenMVG install root: ${CURRENT_ROOT_INSTALL_DIR}, " -diff --git a/src/nonFree/sift/CMakeLists.txt b/src/nonFree/sift/CMakeLists.txt -index 402a2d8..60ddc11 100644 ---- a/src/nonFree/sift/CMakeLists.txt -+++ b/src/nonFree/sift/CMakeLists.txt -@@ -1,36 +1,36 @@ - --# libs should be static --set(BUILD_SHARED_LIBS OFF) -- --# use PIC code for link into shared lib --if(UNIX) -- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") --endif(UNIX) -- --if(NOT USE_SSE2) -- add_definitions(-DVL_DISABLE_SSE2) --endif() -- --add_definitions(-DVL_DISABLE_THREADS) -- --include_directories(./vl) --set(FEATS -- vl/generic.c -- vl/imopv_sse2.c -- vl/sift.c -- vl/imopv.c -- vl/mathop_sse2.c -- vl/sift.c -- vl/host.c -- vl/mathop.c -- vl/random.c) --set_source_files_properties(${FEATS} PROPERTIES LANGUAGE C) --add_library(vlsift ${FEATS}) --install(TARGETS vlsift DESTINATION lib EXPORT openMVG-targets) --set_property(TARGET vlsift PROPERTY FOLDER OpenMVG/nonFree) -+## libs should be static -+#set(BUILD_SHARED_LIBS OFF) -+# -+## use PIC code for link into shared lib -+#if(UNIX) -+# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") -+#endif(UNIX) -+# -+#if(NOT USE_SSE2) -+# add_definitions(-DVL_DISABLE_SSE2) -+#endif() -+# -+#add_definitions(-DVL_DISABLE_THREADS) -+# -+#include_directories(./vl) -+#set(FEATS -+# vl/generic.c -+# vl/imopv_sse2.c -+# vl/sift.c -+# vl/imopv.c -+# vl/mathop_sse2.c -+# vl/sift.c -+# vl/host.c -+# vl/mathop.c -+# vl/random.c) -+#set_source_files_properties(${FEATS} PROPERTIES LANGUAGE C) -+#add_library(vlsift ${FEATS}) -+#install(TARGETS vlsift DESTINATION lib EXPORT openMVG-targets) -+#set_property(TARGET vlsift PROPERTY FOLDER OpenMVG/nonFree) - install( - DIRECTORY . - DESTINATION include/openMVG_dependencies/nonFree/sift - COMPONENT headers -- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" -+ FILES_MATCHING PATTERN "*.hpp" - ) -diff --git a/src/nonFree/sift/SIFT_describer.hpp b/src/nonFree/sift/SIFT_describer.hpp -index cd800b0..20e9c8e 100644 ---- a/src/nonFree/sift/SIFT_describer.hpp -+++ b/src/nonFree/sift/SIFT_describer.hpp -@@ -17,9 +17,7 @@ - #include - #include - --extern "C" { --#include "nonFree/sift/vl/sift.h" --} -+#include - - namespace openMVG { - namespace features { -@@ -174,7 +172,7 @@ public: - const int nkeys = vl_sift_get_nkeypoints(filt); - - // Update gradient before launching parallel extraction -- vl_sift_update_gradient(filt); -+ update_gradient(filt); - - #ifdef OPENMVG_USE_OPENMP - #pragma omp parallel for private(descr, descriptor) -diff --git a/src/openMVG/matching/CMakeLists.txt b/src/openMVG/matching/CMakeLists.txt -index 2e0eafd7..d54d1e88 100644 ---- a/src/openMVG/matching/CMakeLists.txt -+++ b/src/openMVG/matching/CMakeLists.txt -@@ -16,6 +16,7 @@ list(REMOVE_ITEM matching_files_cpp ${REMOVEFILESUNITTEST}) - - set(THREADS_PREFER_PTHREAD_FLAG ON) - find_package(Threads REQUIRED) -+find_package(flann CONFIG REQUIRED) - - set_source_files_properties(${matching_files_cpp} PROPERTIES LANGUAGE CXX) - add_library(openMVG_matching -@@ -35,12 +36,12 @@ target_link_libraries(openMVG_matching - PUBLIC - openMVG_features - Threads::Threads -- cereal -+ cereal::cereal - ) --if (NOT DEFINED OpenMVG_USE_INTERNAL_FLANN) -+if (NOT OpenMVG_USE_INTERNAL_FLANN) - target_link_libraries(openMVG_matching - PUBLIC -- ${FLANN_LIBRARIES} -+ $,flann::flann_s,flann::flann> - ) - endif() - set_target_properties(openMVG_matching PROPERTIES SOVERSION ${OPENMVG_VERSION_MAJOR} VERSION "${OPENMVG_VERSION_MAJOR}.${OPENMVG_VERSION_MINOR}") -diff --git a/src/openMVG/numeric/CMakeLists.txt b/src/openMVG/numeric/CMakeLists.txt -index 1f3fc30..4097320 100644 ---- a/src/openMVG/numeric/CMakeLists.txt -+++ b/src/openMVG/numeric/CMakeLists.txt -@@ -26,7 +26,7 @@ target_include_directories(openMVG_numeric - $ - $ - ) --if (DEFINED OpenMVG_USE_INTERNAL_EIGEN) -+if (OpenMVG_USE_INTERNAL_EIGEN) - target_include_directories(openMVG_numeric PUBLIC - $) - else() -diff --git a/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt b/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt -index 862ffc7..62508af 100644 ---- a/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt -+++ b/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt -@@ -18,8 +18,7 @@ if (OpenMVG_BUILD_GUI_SOFTWARES) - add_executable( openMVG_sample_describe_and_match_GUI WIN32 ${FEATURES_PAIR_DEMO_SRCS} ${FEATURES_PAIR_DEMO_HDRS} ) - endif( APPLE ) - -- target_link_libraries( openMVG_sample_describe_and_match_GUI Qt5::Widgets openMVG_features openMVG_image openMVG_matching vlsift ) -- -+ target_link_libraries( openMVG_sample_describe_and_match_GUI Qt5::Widgets openMVG_features openMVG_image openMVG_matching unofficial::vlfeat::vl ) - set_target_properties( openMVG_sample_describe_and_match_GUI PROPERTIES CXX_STANDARD 11) - - set_property(TARGET openMVG_sample_describe_and_match_GUI PROPERTY FOLDER OpenMVG/Samples) -diff --git a/src/openMVG_Samples/features_image_matching/CMakeLists.txt b/src/openMVG_Samples/features_image_matching/CMakeLists.txt -index 18fb385..d44ffce 100644 ---- a/src/openMVG_Samples/features_image_matching/CMakeLists.txt -+++ b/src/openMVG_Samples/features_image_matching/CMakeLists.txt -@@ -5,7 +5,7 @@ target_link_libraries(openMVG_sample_image_matching - openMVG_features - openMVG_matching - ${STLPLUS_LIBRARY} -- vlsift) -+ unofficial::vlfeat::vl) - target_compile_definitions(openMVG_sample_image_matching - PRIVATE -DTHIS_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}") - -diff --git a/src/openMVG_Samples/features_repeatability/CMakeLists.txt b/src/openMVG_Samples/features_repeatability/CMakeLists.txt -index fd2b7c6..91f2766 100644 ---- a/src/openMVG_Samples/features_repeatability/CMakeLists.txt -+++ b/src/openMVG_Samples/features_repeatability/CMakeLists.txt -@@ -6,7 +6,7 @@ target_link_libraries(openMVG_sample_main_features_repeatability_dataset - openMVG_matching - openMVG_system - openMVG_multiview -- vlsift -+ unofficial::vlfeat::vl - ${STLPLUS_LIBRARY}) - - set_property(TARGET openMVG_sample_main_features_repeatability_dataset PROPERTY FOLDER OpenMVG/Samples) -diff --git a/src/software/Localization/CMakeLists.txt b/src/software/Localization/CMakeLists.txt -index 2f60393..0d57d0a 100644 ---- a/src/software/Localization/CMakeLists.txt -+++ b/src/software/Localization/CMakeLists.txt -@@ -11,7 +11,7 @@ target_link_libraries(openMVG_main_SfM_Localization - openMVG_sfm - openMVG_exif - ${STLPLUS_LIBRARY} -- vlsift -+ unofficial::vlfeat::vl - ) - - # Installation rules -diff --git a/src/software/SfM/CMakeLists.txt b/src/software/SfM/CMakeLists.txt -index 6db7e83..51e06f5 100644 ---- a/src/software/SfM/CMakeLists.txt -+++ b/src/software/SfM/CMakeLists.txt -@@ -44,7 +44,7 @@ target_link_libraries(openMVG_main_ComputeFeatures - openMVG_multiview - openMVG_sfm - ${STLPLUS_LIBRARY} -- vlsift -+ unofficial::vlfeat::vl - ) - if (MSVC) - set_target_properties(openMVG_main_ComputeFeatures PROPERTIES COMPILE_FLAGS "/bigobj") -@@ -275,7 +275,7 @@ if(OpenMVG_USE_OPENCV) - openMVG_multiview - openMVG_sfm - ${STLPLUS_LIBRARY} -- vlsift -+ unofficial::vlfeat::vl - ${OpenCV_LIBS}) - target_include_directories(openMVG_main_ComputeFeatures_OpenCV PRIVATE ${OpenCV_INCLUDE_DIRS}) - -diff --git a/src/software/VO/Tracker_opencv_klt.hpp b/src/software/VO/Tracker_opencv_klt.hpp -index aa7dffe..2c4d237 100644 ---- a/src/software/VO/Tracker_opencv_klt.hpp -+++ b/src/software/VO/Tracker_opencv_klt.hpp -@@ -80,7 +80,7 @@ struct Tracker_opencv_KLT : public Abstract_Tracker - std::vector m_nextKeypoints; - - cv::Ptr m_detector = cv::GFTTDetector::create(count); -- if (m_detector == NULL) -+ if (m_detector == nullptr) - return false; - - m_detector->detect(current_img, m_nextKeypoints); -diff --git a/src/third_party/CMakeLists.txt b/src/third_party/CMakeLists.txt -index 0d61c9f..05c8b29 100644 ---- a/src/third_party/CMakeLists.txt -+++ b/src/third_party/CMakeLists.txt -@@ -18,7 +18,7 @@ add_subdirectory(stlplus3) - set(STLPLUS_LIBRARY openMVG_stlplus PARENT_SCOPE) - - # Add graph library --if(DEFINED OpenMVG_USE_INTERNAL_LEMON) -+if(OpenMVG_USE_INTERNAL_LEMON) - add_subdirectory(lemon) - set(LEMON_LIBRARY openMVG_lemon PARENT_SCOPE) - endif() -@@ -67,7 +67,7 @@ endif (NOT TIFF_FOUND) - add_subdirectory(vectorGraphics) - - # Add ceres-solver (A Nonlinear Least Squares Minimizer) --if (DEFINED OpenMVG_USE_INTERNAL_CERES) -+if (OpenMVG_USE_INTERNAL_CERES) - add_subdirectory(cxsparse) - add_subdirectory(ceres-solver) - set_property(TARGET openMVG_cxsparse PROPERTY FOLDER OpenMVG/3rdParty/ceres) -@@ -75,7 +75,7 @@ if (DEFINED OpenMVG_USE_INTERNAL_CERES) - endif() - - # Add an Approximate Nearest Neighbor library --if (DEFINED OpenMVG_USE_INTERNAL_FLANN) -+if (OpenMVG_USE_INTERNAL_FLANN) - set(FLANN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/flann/src/cpp) - add_subdirectory(flann) - endif() -@@ -89,7 +89,7 @@ add_subdirectory(fast) - ## - # Install Header only libraries if necessary - ## --if (DEFINED OpenMVG_USE_INTERNAL_EIGEN) -+if (OpenMVG_USE_INTERNAL_EIGEN) - #Configure Eigen install - set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen) - add_subdirectory(eigen) -diff --git a/src/openMVG/cameras/CMakeLists.txt b/src/openMVG/cameras/CMakeLists.txt -index 333ab729..50c8f572 100644 ---- a/src/openMVG/cameras/CMakeLists.txt -+++ b/src/openMVG/cameras/CMakeLists.txt -@@ -4,7 +4,7 @@ set_property(TARGET openMVG_camera APPEND PROPERTY - INTERFACE_INCLUDE_DIRECTORIES "$") - - target_compile_features(openMVG_camera INTERFACE ${CXX11_FEATURES}) --target_link_libraries(openMVG_camera INTERFACE openMVG_numeric cereal ${OPENMVG_LIBRARY_DEPENDENCIES}) -+target_link_libraries(openMVG_camera INTERFACE openMVG_numeric cereal::cereal ${OPENMVG_LIBRARY_DEPENDENCIES}) - install(TARGETS openMVG_camera DESTINATION lib EXPORT openMVG-targets) - - UNIT_TEST(openMVG Camera_Pinhole openMVG_camera) -diff --git a/src/openMVG/features/CMakeLists.txt b/src/openMVG/features/CMakeLists.txt -index 2e49701d..0b5e1c3d 100644 ---- a/src/openMVG/features/CMakeLists.txt -+++ b/src/openMVG/features/CMakeLists.txt -@@ -31,7 +31,7 @@ target_include_directories(openMVG_features - ) - target_link_libraries(openMVG_features - PRIVATE openMVG_fast ${STLPLUS_LIBRARY} -- PUBLIC ${OPENMVG_LIBRARY_DEPENDENCIES} cereal) -+ PUBLIC ${OPENMVG_LIBRARY_DEPENDENCIES} cereal::cereal) - if (MSVC) - set_target_properties(openMVG_features PROPERTIES COMPILE_FLAGS "/bigobj") - target_compile_options(openMVG_features PUBLIC "-D_USE_MATH_DEFINES") -diff --git a/src/openMVG/geometry/CMakeLists.txt b/src/openMVG/geometry/CMakeLists.txt -index 0a6a016a..e509a4d5 100644 ---- a/src/openMVG/geometry/CMakeLists.txt -+++ b/src/openMVG/geometry/CMakeLists.txt -@@ -21,7 +21,7 @@ set_property(TARGET openMVG_geometry PROPERTY FOLDER OpenMVG/OpenMVG) - target_link_libraries(openMVG_geometry - PUBLIC - openMVG_numeric -- cereal -+ cereal::cereal - PRIVATE - openMVG_linearProgramming - ) -diff --git a/src/openMVG/sfm/CMakeLists.txt b/src/openMVG/sfm/CMakeLists.txt -index b8928083..1d10f939 100644 ---- a/src/openMVG/sfm/CMakeLists.txt -+++ b/src/openMVG/sfm/CMakeLists.txt -@@ -25,7 +25,7 @@ target_link_libraries(openMVG_sfm - openMVG_graph - openMVG_matching - openMVG_multiview -- cereal -+ cereal::cereal - ${OPENMVG_LIBRARY_DEPENDENCIES} - ) - diff --git a/src/cmakeFindModules/FindClp.cmake b/src/cmakeFindModules/FindClp.cmake -index 8a69c2344..1ed9a21fe 100644 +index 8a69c234..1ed9a21f 100644 --- a/src/cmakeFindModules/FindClp.cmake +++ b/src/cmakeFindModules/FindClp.cmake @@ -51,7 +51,7 @@ IF(EXISTS "${CLP_DIR}" AND NOT "${CLP_DIR}" STREQUAL "") @@ -639,18 +276,130 @@ index 8a69c2344..1ed9a21fe 100644 FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp) # locate Clp libraries - -diff --git a/src/openMVG/matching/metric_simd.hpp b/src/openMVG/matching/metric_simd.hpp -index 7e09f6ed..916c84e0 100644 ---- a/src/openMVG/matching/metric_simd.hpp -+++ b/src/openMVG/matching/metric_simd.hpp -@@ -17,7 +17,9 @@ - #include - - #include -+#if defined(__amd64__) || defined(__i386__) - #include -+#endif - - namespace openMVG { - namespace matching { +diff --git a/src/cmakeFindModules/FindCoinUtils.cmake b/src/cmakeFindModules/FindCoinUtils.cmake +index 5b64ce14..595fb7dc 100644 +--- a/src/cmakeFindModules/FindCoinUtils.cmake ++++ b/src/cmakeFindModules/FindCoinUtils.cmake +@@ -57,6 +57,12 @@ IF(EXISTS "${COINUTILS_DIR}" AND NOT "${COINUTILS_DIR}" STREQUAL "") + SET(COINUTILS_LIBRARIES ${COINUTILS_LIBRARY}) + ENDIF() + ++ if(NOT WIN32) ++ find_package(PkgConfig) ++ pkg_check_modules(CoinUtils coinutils IMPORTED_TARGET) ++ list(APPEND COINUTILS_LIBRARIES PkgConfig::CoinUtils) ++ endif() ++ + MESSAGE(STATUS "CoinUtils ${COINUTILS_VERSION} found (include: ${COINUTILS_INCLUDE_DIRS})") + ELSE() + MESSAGE(STATUS "You are attempting to build without CoinUtils. " +diff --git a/src/cmakeFindModules/OpenMVGConfig.cmake.in b/src/cmakeFindModules/OpenMVGConfig.cmake.in +index 5a788b56..ba3b4b3c 100644 +--- a/src/cmakeFindModules/OpenMVGConfig.cmake.in ++++ b/src/cmakeFindModules/OpenMVGConfig.cmake.in +@@ -51,6 +51,18 @@ set(OPENMVG_VERSION @OPENMVG_VERSION@) + get_filename_component(CURRENT_CONFIG_INSTALL_DIR + "${CMAKE_CURRENT_LIST_FILE}" PATH) + ++include(CMakeFindDependencyMacro) ++ ++find_dependency(flann) ++find_dependency(Threads) ++find_dependency(cereal) ++find_dependency(Ceres) ++find_dependency(vlfeat) ++if(NOT WIN32) ++ find_dependency(PkgConfig) ++ pkg_check_modules(CoinUtils coinutils IMPORTED_TARGET) ++endif() ++ + # Record the state of the CMake module path when this script was + # called so that we can ensure that we leave it in the same state on + # exit as it was on entry, but modify it locally. +@@ -61,7 +73,7 @@ set(CMAKE_MODULE_PATH ${CURRENT_CONFIG_INSTALL_DIR}) + + # Build the absolute root install directory as a relative path + get_filename_component(CURRENT_ROOT_INSTALL_DIR +- ${CMAKE_MODULE_PATH}/../../../ ABSOLUTE) ++ ${CMAKE_MODULE_PATH}/../../ ABSOLUTE) + if (NOT EXISTS ${CURRENT_ROOT_INSTALL_DIR}) + OPENMVG_REPORT_NOT_FOUND( + "OpenMVG install root: ${CURRENT_ROOT_INSTALL_DIR}, " +diff --git a/src/openMVG/linearProgramming/CMakeLists.txt b/src/openMVG/linearProgramming/CMakeLists.txt +index 4532161d..e3ddedc6 100644 +--- a/src/openMVG/linearProgramming/CMakeLists.txt ++++ b/src/openMVG/linearProgramming/CMakeLists.txt +@@ -16,8 +16,8 @@ target_link_libraries(openMVG_linearProgramming + openMVG_numeric + PRIVATE + ${CLP_LIBRARIES} # clp + solver wrapper +- ${COINUTILS_LIBRARY} # container tools +- ${OSI_LIBRARY} # generic LP ++ ${COINUTILS_LIBRARIES} # container tools ++ ${OSI_LIBRARIES} # generic LP + ) + + target_include_directories(openMVG_linearProgramming +diff --git a/src/openMVG/matching/CMakeLists.txt b/src/openMVG/matching/CMakeLists.txt +index b92a49b7..6fa26493 100644 +--- a/src/openMVG/matching/CMakeLists.txt ++++ b/src/openMVG/matching/CMakeLists.txt +@@ -16,6 +16,7 @@ list(REMOVE_ITEM matching_files_cpp ${REMOVEFILESUNITTEST}) + + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) ++find_package(flann CONFIG REQUIRED) + + set_source_files_properties(${matching_files_cpp} PROPERTIES LANGUAGE CXX) + add_library(openMVG_matching +@@ -37,10 +38,10 @@ target_link_libraries(openMVG_matching + Threads::Threads + ${cereal_TARGET} + ) +-if (NOT DEFINED OpenMVG_USE_INTERNAL_FLANN) ++if (NOT OpenMVG_USE_INTERNAL_FLANN) + target_link_libraries(openMVG_matching + PUBLIC +- ${FLANN_LIBRARIES} ++ $,flann::flann_s,flann::flann> + ) + endif() + set_target_properties(openMVG_matching PROPERTIES SOVERSION ${OPENMVG_VERSION_MAJOR} VERSION "${OPENMVG_VERSION_MAJOR}.${OPENMVG_VERSION_MINOR}") +diff --git a/src/third_party/CMakeLists.txt b/src/third_party/CMakeLists.txt +index 1e025dc6..4a06dfcc 100644 +--- a/src/third_party/CMakeLists.txt ++++ b/src/third_party/CMakeLists.txt +@@ -18,7 +18,7 @@ add_subdirectory(stlplus3) + set(STLPLUS_LIBRARY openMVG_stlplus PARENT_SCOPE) + + # Add graph library +-if(DEFINED OpenMVG_USE_INTERNAL_LEMON) ++if(0) + add_subdirectory(lemon) + set(LEMON_LIBRARY openMVG_lemon PARENT_SCOPE) + endif() +@@ -64,13 +64,13 @@ endif (NOT TIFF_FOUND) + ## + + # Add ceres-solver (A Nonlinear Least Squares Minimizer) +-if (DEFINED OpenMVG_USE_INTERNAL_CERES) ++if (0) + add_subdirectory(ceres-solver) + set_property(TARGET openMVG_ceres PROPERTY FOLDER OpenMVG/3rdParty/ceres) + endif() + + # Add an Approximate Nearest Neighbor library +-if (DEFINED OpenMVG_USE_INTERNAL_FLANN) ++if (0) + set(FLANN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/flann/src/cpp) + add_subdirectory(flann) + endif() +@@ -84,7 +84,7 @@ add_subdirectory(fast) + ## + # Install Header only libraries if necessary + ## +-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN) ++if (0) + #Configure Eigen install + set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen) + add_subdirectory(eigen) diff --git a/ports/openmvg/fix-coinutils.patch b/ports/openmvg/fix-coinutils.patch deleted file mode 100644 index 903c84a006..0000000000 --- a/ports/openmvg/fix-coinutils.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff --git a/src/openMVG/linearProgramming/CMakeLists.txt b/src/openMVG/linearProgramming/CMakeLists.txt -index cc5212fda..0fb59c44c 100644 ---- a/src/openMVG/linearProgramming/CMakeLists.txt -+++ b/src/openMVG/linearProgramming/CMakeLists.txt -@@ -16,8 +16,8 @@ target_link_libraries(openMVG_linearProgramming - openMVG_numeric - PRIVATE - ${CLP_LIBRARIES} # clp + solver wrapper -- ${COINUTILS_LIBRARY} # container tools -- ${OSI_LIBRARY} # generic LP -+ ${COINUTILS_LIBRARIES} # container tools -+ ${OSI_LIBRARIES} # generic LP - ) - - target_include_directories(openMVG_linearProgramming -diff --git a/src/cmakeFindModules/FindCoinUtils.cmake b/src/cmakeFindModules/FindCoinUtils.cmake -index 5b64ce14c..595fb7dc8 100644 ---- a/src/cmakeFindModules/FindCoinUtils.cmake -+++ b/src/cmakeFindModules/FindCoinUtils.cmake -@@ -57,6 +57,12 @@ IF(EXISTS "${COINUTILS_DIR}" AND NOT "${COINUTILS_DIR}" STREQUAL "") - SET(COINUTILS_LIBRARIES ${COINUTILS_LIBRARY}) - ENDIF() - -+ if(NOT WIN32) -+ find_package(PkgConfig) -+ pkg_check_modules(CoinUtils coinutils IMPORTED_TARGET) -+ list(APPEND COINUTILS_LIBRARIES PkgConfig::CoinUtils) -+ endif() -+ - MESSAGE(STATUS "CoinUtils ${COINUTILS_VERSION} found (include: ${COINUTILS_INCLUDE_DIRS})") - ELSE() - MESSAGE(STATUS "You are attempting to build without CoinUtils. " -diff --git a/src/cmakeFindModules/OpenMVGConfig.cmake.in b/src/cmakeFindModules/OpenMVGConfig.cmake.in -index d4ae73d1a..87f71cd7d 100644 ---- a/src/cmakeFindModules/OpenMVGConfig.cmake.in -+++ b/src/cmakeFindModules/OpenMVGConfig.cmake.in -@@ -65,6 +65,10 @@ find_dependency(Threads) - find_dependency(cereal) - find_dependency(Ceres) - find_dependency(vlfeat) -+if(NOT WIN32) -+ find_dependency(PkgConfig) -+ pkg_check_modules(CoinUtils coinutils IMPORTED_TARGET) -+endif() - - # Build the absolute root install directory as a relative path - get_filename_component(CURRENT_ROOT_INSTALL_DIR diff --git a/ports/openmvg/portfile.cmake b/ports/openmvg/portfile.cmake index 369e947278..e1067ff4fa 100644 --- a/ports/openmvg/portfile.cmake +++ b/ports/openmvg/portfile.cmake @@ -10,14 +10,12 @@ endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO openMVG/openMVG - REF d0fe73dd426ae4001631a51272cff71047522df9 # v2.0 - SHA512 1d5c68971ad63ced46d8b9070bdacc1065b4ba950fe919e11f952a004def87d4d83a474d48aee714c21b12106d7d81187d3670d8a2e6daf2d3c5fceb008a5de3 + REF 01193a245ee3c36458e650b1cf4402caad8983ef # v2.1 + SHA512 ee98ca26426e7129917c920cd59817cb5d4faf1f5aa12f4085f9ac431875e9ec23ffee7792d65286bad4b922c474c56d5c2f2008b38fddf1ede096644f13ad47 PATCHES build_fixes.patch 0001-eigen_3.4.0.patch - 0002-eigen-3.4.patch no-absolute-paths.patch - fix-coinutils.patch ) set(OpenMVG_USE_OPENMP OFF) @@ -77,17 +75,22 @@ vcpkg_cmake_configure( ) vcpkg_cmake_install() -vcpkg_cmake_config_fixup(CONFIG_PATH share/openMVG/cmake) -if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share") - file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/lib/openMVG-targets.cmake" "${CURRENT_PACKAGES_DIR}/debug/lib/openMVG-targets-debug.cmake") -endif() -file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/openMVG-targets.cmake" "${CURRENT_PACKAGES_DIR}/lib/openMVG-targets-release.cmake") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/openMVG/") +file(RENAME "${CURRENT_PACKAGES_DIR}/lib/openMVG/cmake" "${CURRENT_PACKAGES_DIR}/share/openMVG/cmake") +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/share/openMVG/") +file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/openMVG/cmake" "${CURRENT_PACKAGES_DIR}/debug/share/openMVG/cmake") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/openMVG/image/image_test" - "${CURRENT_PACKAGES_DIR}/include/openMVG/exif/image_data" - "${CURRENT_PACKAGES_DIR}/include/openMVG_dependencies/nonFree/sift/vl") +vcpkg_cmake_config_fixup() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/include/openMVG_dependencies/cereal" + "${CURRENT_PACKAGES_DIR}/include/openMVG_dependencies/glfw" + "${CURRENT_PACKAGES_DIR}/include/openMVG_dependencies/osi_clp" + "${CURRENT_PACKAGES_DIR}/include/openMVG/image/image_test" + "${CURRENT_PACKAGES_DIR}/include/openMVG/exif/image_data" + "${CURRENT_PACKAGES_DIR}/include/openMVG_dependencies/nonFree/sift/vl") if(OpenMVG_BUILD_SHARED) if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") @@ -129,6 +132,7 @@ if("software" IN_LIST FEATURES) openMVG_main_ComputeMatches openMVG_main_ComputeSfM_DataColor openMVG_main_ComputeStructureFromKnownPoses + openMVG_main_ComputeVLAD openMVG_main_ConvertList openMVG_main_ConvertSfM_DataFormat openMVG_main_evalQuality diff --git a/ports/openmvg/vcpkg.json b/ports/openmvg/vcpkg.json index 65be709b66..ce69a4cd4b 100644 --- a/ports/openmvg/vcpkg.json +++ b/ports/openmvg/vcpkg.json @@ -1,7 +1,6 @@ { "name": "openmvg", - "version": "2.0", - "port-version": 11, + "version": "2.1", "description": "open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.", "license": "MPL-2.0-no-copyleft-exception", "supports": "(x86 | x64 | arm64) & !xbox", @@ -10,7 +9,6 @@ { "name": "ceres", "features": [ - "cxsparse", "suitesparse" ] }, diff --git a/ports/openturns/fix-dep.patch b/ports/openturns/fix-dep.patch index 125d3e127c..633987d383 100644 --- a/ports/openturns/fix-dep.patch +++ b/ports/openturns/fix-dep.patch @@ -1,9 +1,9 @@ diff --git a/lib/OpenTURNSConfig.cmake.in b/lib/OpenTURNSConfig.cmake.in -index 1247591893..c12e423892 100644 +index 74f17eafd..e08d121dc 100644 --- a/lib/OpenTURNSConfig.cmake.in +++ b/lib/OpenTURNSConfig.cmake.in -@@ -74,6 +74,17 @@ if ("1" STREQUAL "@HMAT_FOUND@") - find_package (HMAT REQUIRED NO_MODULE PATHS ${HMAT_DIR} NO_DEFAULT_PATH) +@@ -107,6 +107,18 @@ if (NOT @BUILD_SHARED_LIBS@) + endif () endif () +include(CMakeFindDependencyMacro) @@ -16,8 +16,8 @@ index 1247591893..c12e423892 100644 +find_dependency(Ceres CONFIG) +find_dependency(Pagmo CONFIG) +find_dependency(CMinpack CONFIG) ++find_dependency(nanoflann CONFIG) + # Our library dependencies (contains definitions for IMPORTED targets) include("${CMAKE_CURRENT_LIST_DIR}/OpenTURNS-Targets.cmake") - diff --git a/ports/openturns/link-gmp.patch b/ports/openturns/link-gmp.patch index c8a6954f13..bc0916a95e 100644 --- a/ports/openturns/link-gmp.patch +++ b/ports/openturns/link-gmp.patch @@ -1,15 +1,42 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index e13414978..77ecf3e9e 100644 +index 81f0f30d1..db08c345c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -303,6 +303,10 @@ if (USE_BOOST) - list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${MPC_LIBRARIES}) +@@ -272,15 +272,6 @@ if (USE_BOOST) + set (Boost_VERSION "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") + endif () + set (OPENTURNS_HAVE_BOOST TRUE) +- if (USE_MPFR) +- find_package (MPFR) +- if (MPFR_FOUND) +- set (OPENTURNS_HAVE_MPFR TRUE) +- list (APPEND OPENTURNS_PRIVATE_INCLUDE_DIRS ${MPFR_INCLUDE_DIRS}) +- list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${MPFR_LIBRARIES}) +- list (APPEND OPENTURNS_ENABLED_FEATURES "mpfr") +- endif () +- endif () + if (USE_MPC AND NOT Boost_VERSION VERSION_LESS 1.68) + find_package (MPC) + if (MPC_FOUND) +@@ -290,8 +281,19 @@ if (USE_BOOST) + list (APPEND OPENTURNS_ENABLED_FEATURES "mpc") endif () endif () +- list (APPEND OPENTURNS_PRIVATE_LIBRARIES Boost::boost) +- list (APPEND OPENTURNS_ENABLED_FEATURES "boost") ++ if (USE_MPFR) ++ find_package (MPFR) ++ if (MPFR_FOUND) ++ set (OPENTURNS_HAVE_MPFR TRUE) ++ list (APPEND OPENTURNS_PRIVATE_INCLUDE_DIRS ${MPFR_INCLUDE_DIRS}) ++ list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${MPFR_LIBRARIES}) ++ list (APPEND OPENTURNS_ENABLED_FEATURES "mpfr") ++ endif () ++ endif () + if((USE_MPC OR USE_MPFR) AND NOT BUILD_SHARED_LIBS) + find_library(GMP_LIBRARY NAMES gmp) + list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${GMP_LIBRARY}) + endif() - list (APPEND OPENTURNS_PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS}) endif () endif () + diff --git a/ports/openturns/portfile.cmake b/ports/openturns/portfile.cmake index 9f87094cfb..3a319eecef 100644 --- a/ports/openturns/portfile.cmake +++ b/ports/openturns/portfile.cmake @@ -1,12 +1,11 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO openturns/openturns - REF ad8482ece23d98802edc6258683e8353f9ff8b08 - SHA512 b0bc88bcf54945b5e786b480e640ee182926c75f1d871f70690d9609c98745b1907b3d9184c07586591fa45238c837da5a893a00d9c576a9e10232bcc9adc593 + REF b62fb487266949ffdad036712cec604cf70d6e34 + SHA512 de14a872bb2c3cd871d7f98e6a0d62f9f3c23386200f0c63d11fec0877d69639e45f004f3f18217bad68fc52d02d285ac3f5d70dcc89a8c23edaea9fe365b527 HEAD_REF master PATCHES link-gmp.patch - reorder-mpc.patch fix-dep.patch ) @@ -25,6 +24,7 @@ vcpkg_cmake_configure( -DUSE_BOOST:BOOL=ON # Required to make the distributions cross platform -DUSE_DOXYGEN:BOOL=OFF -DUSE_OPENMP:BOOL=OFF + -DUSE_CUBA:BOOL=OFF -DCMAKE_REQUIRE_FIND_PACKAGE_Spectra:BOOL=ON -DCMAKE_REQUIRE_FIND_PACKAGE_Eigen3:BOOL=ON -DCMAKE_DISABLE_FIND_PACKAGE_primesieve:BOOL=ON @@ -32,7 +32,6 @@ vcpkg_cmake_configure( -DCMAKE_REQUIRE_FIND_PACKAGE_FLEX:BOOL=ON -DCMAKE_REQUIRE_FIND_PACKAGE_TBB:BOOL=ON -DCMAKE_REQUIRE_FIND_PACKAGE_muParser:BOOL=ON - -DCMAKE_DISABLE_FIND_PACKAGE_HMAT:BOOL=ON -DCMAKE_REQUIRE_FIND_PACKAGE_LibXml2:BOOL=ON -DCMAKE_REQUIRE_FIND_PACKAGE_HDF5:BOOL=ON -DCMAKE_REQUIRE_FIND_PACKAGE_MPFR:BOOL=ON @@ -49,8 +48,8 @@ vcpkg_cmake_configure( vcpkg_cmake_install() vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/${PORT}") -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/OpenTURNSConfig.cmake" "/lib/cmake/" "/share/") -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/OpenTURNSConfig.cmake" "/lib" "$<$:/debug>/lib") +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/OpenTURNSConfig.cmake" "/lib/cmake/" "/share/" IGNORE_UNCHANGED) +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/OpenTURNSConfig.cmake" "/lib" "$<$:/debug>/lib" IGNORE_UNCHANGED) if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/openturns/OTdebug.h" "#ifndef OT_STATIC" "#if 0") diff --git a/ports/openturns/reorder-mpc.patch b/ports/openturns/reorder-mpc.patch deleted file mode 100644 index 1d1d4672ed..0000000000 --- a/ports/openturns/reorder-mpc.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 77ecf3e9e..b78ebcbec 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -287,14 +287,6 @@ if (USE_BOOST) - set (Boost_VERSION "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") - endif () - set (OPENTURNS_HAVE_BOOST TRUE) -- if (USE_MPFR) -- find_package (MPFR) -- if (MPFR_FOUND) -- set (OPENTURNS_HAVE_MPFR TRUE) -- list (APPEND OPENTURNS_PRIVATE_INCLUDE_DIRS ${MPFR_INCLUDE_DIRS}) -- list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${MPFR_LIBRARIES}) -- endif () -- endif () - if (USE_MPC AND NOT Boost_VERSION VERSION_LESS 1.68) - find_package (MPC) - if (MPC_FOUND) -@@ -303,6 +295,14 @@ if (USE_BOOST) - list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${MPC_LIBRARIES}) - endif () - endif () -+ if (USE_MPFR) -+ find_package (MPFR) -+ if (MPFR_FOUND) -+ set (OPENTURNS_HAVE_MPFR TRUE) -+ list (APPEND OPENTURNS_PRIVATE_INCLUDE_DIRS ${MPFR_INCLUDE_DIRS}) -+ list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${MPFR_LIBRARIES}) -+ endif () -+ endif () - if((USE_MPC OR USE_MPFR) AND NOT BUILD_SHARED_LIBS) - find_library(GMP_LIBRARY NAMES gmp) - list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${GMP_LIBRARY}) diff --git a/ports/openturns/vcpkg.json b/ports/openturns/vcpkg.json index 73c5de2ebf..f8414d735c 100644 --- a/ports/openturns/vcpkg.json +++ b/ports/openturns/vcpkg.json @@ -1,12 +1,13 @@ { "name": "openturns", - "version": "1.20", - "port-version": 2, + "version": "1.24", "description": "OpenTURNS is a scientific C++ and Python library featuring an internal data model and algorithms dedicated to the treatment of uncertainties.", "homepage": "http://www.openturns.org", "license": null, "dependencies": [ "blas", + "boost-geometry", + "boost-math", "boost-multiprecision", "boost-random", "ceres", @@ -25,6 +26,7 @@ "mpc", "mpfr", "muparser", + "nanoflann", "nlopt", "pagmo2", "pthread", diff --git a/ports/rtabmap/ceres-manifold.patch b/ports/rtabmap/ceres-manifold.patch new file mode 100644 index 0000000000..e84d463e84 --- /dev/null +++ b/ports/rtabmap/ceres-manifold.patch @@ -0,0 +1,114 @@ +diff --git a/corelib/src/optimizer/OptimizerCeres.cpp b/corelib/src/optimizer/OptimizerCeres.cpp +index 5a62283a..7d216b47 100644 +--- a/corelib/src/optimizer/OptimizerCeres.cpp ++++ b/corelib/src/optimizer/OptimizerCeres.cpp +@@ -37,7 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifdef RTABMAP_CERES + #include +-#include ++#include + #include "ceres/pose_graph_2d/types.h" + #include "ceres/pose_graph_2d/pose_graph_2d_error_term.h" + #include "ceres/pose_graph_2d/angle_local_parameterization.h" +@@ -118,8 +118,8 @@ std::map OptimizerCeres::optimize( + } + + ceres::LossFunction* loss_function = NULL; +- ceres::LocalParameterization* angle_local_parameterization = NULL; +- ceres::LocalParameterization* quaternion_local_parameterization = NULL; ++ ceres::Manifold* angle_local_parameterization = NULL; ++ ceres::Manifold* quaternion_local_parameterization = NULL; + + for(std::multimap::const_iterator iter=edgeConstraints.begin(); iter!=edgeConstraints.end(); ++iter) + { +@@ -168,8 +168,8 @@ std::map OptimizerCeres::optimize( + { + angle_local_parameterization = ceres::examples::AngleLocalParameterization::Create(); + } +- problem.SetParameterization(&pose_begin_iter->second.yaw_radians, angle_local_parameterization); +- problem.SetParameterization(&pose_end_iter->second.yaw_radians, angle_local_parameterization); ++ problem.SetManifold(&pose_begin_iter->second.yaw_radians, angle_local_parameterization); ++ problem.SetManifold(&pose_end_iter->second.yaw_radians, angle_local_parameterization); + } + else + { +@@ -196,10 +196,10 @@ std::map OptimizerCeres::optimize( + pose_end_iter->second.p.data(), pose_end_iter->second.q.coeffs().data()); + if(quaternion_local_parameterization == NULL) + { +- quaternion_local_parameterization = new ceres::EigenQuaternionParameterization; ++ quaternion_local_parameterization = new ceres::EigenQuaternionManifold; + } +- problem.SetParameterization(pose_begin_iter->second.q.coeffs().data(), quaternion_local_parameterization); +- problem.SetParameterization(pose_end_iter->second.q.coeffs().data(), quaternion_local_parameterization); ++ problem.SetManifold(pose_begin_iter->second.q.coeffs().data(), quaternion_local_parameterization); ++ problem.SetManifold(pose_end_iter->second.q.coeffs().data(), quaternion_local_parameterization); + } + } + //else // not supporting pose prior and landmarks +diff --git a/corelib/src/optimizer/ceres/pose_graph_2d/angle_local_parameterization.h b/corelib/src/optimizer/ceres/pose_graph_2d/angle_local_parameterization.h +index 428ccccd..d5bf1dcd 100644 +--- a/corelib/src/optimizer/ceres/pose_graph_2d/angle_local_parameterization.h ++++ b/corelib/src/optimizer/ceres/pose_graph_2d/angle_local_parameterization.h +@@ -31,7 +31,8 @@ + #ifndef CERES_EXAMPLES_POSE_GRAPH_2D_ANGLE_LOCAL_PARAMETERIZATION_H_ + #define CERES_EXAMPLES_POSE_GRAPH_2D_ANGLE_LOCAL_PARAMETERIZATION_H_ + +-#include "ceres/local_parameterization.h" ++#include "ceres/autodiff_manifold.h" ++#include "ceres/manifold.h" + #include "normalize_angle.h" + + namespace ceres { +@@ -41,19 +42,20 @@ namespace examples { + // [-pi to pi). + class AngleLocalParameterization { + public: +- + template +- bool operator()(const T* theta_radians, const T* delta_theta_radians, +- T* theta_radians_plus_delta) const { +- *theta_radians_plus_delta = +- NormalizeAngle(*theta_radians + *delta_theta_radians); ++ bool Plus(const T* x, const T* delta, T* x_plus_delta) const { ++ *x_plus_delta = NormalizeAngle(*x + *delta); ++ return true; ++ } + ++ template ++ bool Minus(const T* y, const T* x, T* y_minus_x) const { ++ *y_minus_x = NormalizeAngle(*y - *x); + return true; + } + +- static ceres::LocalParameterization* Create() { +- return (new ceres::AutoDiffLocalParameterization); ++ static ceres::Manifold* Create() { ++ return (new ceres::AutoDiffManifold); + } + }; + +diff --git a/corelib/src/optimizer/ceres/pose_graph_3d/eigen_quaternion_parameterization.h b/corelib/src/optimizer/ceres/pose_graph_3d/eigen_quaternion_parameterization.h +index ae03ebda..ffab3042 100644 +--- a/corelib/src/optimizer/ceres/pose_graph_3d/eigen_quaternion_parameterization.h ++++ b/corelib/src/optimizer/ceres/pose_graph_3d/eigen_quaternion_parameterization.h +@@ -31,7 +31,7 @@ + #ifndef CERES_EXAMPLES_POSE_GRAPH_3D_EIGEN_QUATERNION_PARAMETERIZATION_H_ + #define CERES_EXAMPLES_POSE_GRAPH_3D_EIGEN_QUATERNION_PARAMETERIZATION_H_ + +-#include "ceres/local_parameterization.h" ++#include "ceres/manifold.h" + + namespace ceres { + +@@ -46,7 +46,7 @@ namespace ceres { + // + // Plus(x, delta) = [sin(|delta|) delta / |delta|, cos(|delta|)] * x + // with * being the quaternion multiplication operator. +-class EigenQuaternionParameterization : public ceres::LocalParameterization { ++class EigenQuaternionParameterization : public ceres::Manifold { + public: + virtual ~EigenQuaternionParameterization() {} + virtual bool Plus(const double* x_ptr, diff --git a/ports/rtabmap/portfile.cmake b/ports/rtabmap/portfile.cmake index 9fa285a3a4..a0ddc75b17 100644 --- a/ports/rtabmap/portfile.cmake +++ b/ports/rtabmap/portfile.cmake @@ -11,6 +11,7 @@ vcpkg_from_github( multi-definition.patch rtabmap-res-tool.patch gklib.patch + ceres-manifold.patch fix-find-g2o.patch ) diff --git a/ports/rtabmap/vcpkg.json b/ports/rtabmap/vcpkg.json index 928ed827a9..172663a521 100644 --- a/ports/rtabmap/vcpkg.json +++ b/ports/rtabmap/vcpkg.json @@ -1,7 +1,7 @@ { "name": "rtabmap", "version": "0.21.4.1", - "port-version": 3, + "port-version": 4, "description": "Real-Time Appearance-Based Mapping", "homepage": "https://introlab.github.io/rtabmap/", "license": null, diff --git a/ports/theia/266.diff b/ports/theia/266.diff deleted file mode 100644 index febcd8c31a..0000000000 --- a/ports/theia/266.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/libraries/vlfeat/CMakeLists.txt b/libraries/vlfeat/CMakeLists.txt -index 7f4ffc796..9535d0c22 100644 ---- a/libraries/vlfeat/CMakeLists.txt -+++ b/libraries/vlfeat/CMakeLists.txt -@@ -1,6 +1,6 @@ - project(vlfeat) - --include("${CMAKE_MODULE_PATH}/OptimizeTheiaCompilerFlags.cmake") -+include(OptimizeTheiaCompilerFlags) - optimizetheiacompilerflags() - - include_directories(./vl) diff --git a/ports/theia/eigen-3.4.patch b/ports/theia/eigen-3.4.patch deleted file mode 100644 index 9bbd5e24b0..0000000000 --- a/ports/theia/eigen-3.4.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- a/libraries/akaze/src/nldiffusion_functions.cpp -+++ b/libraries/akaze/src/nldiffusion_functions.cpp -@@ -222,8 +222,8 @@ void halfsample_image(const RowMatrixXf& src, RowMatrixXf& dst) { - - // Do the whole resampling in one pass by using neighboring values. First, we - // compute the borders. -- const double x_kernel_size = static_cast(src.cols()) / dst.cols(); -- const double y_kernel_size = static_cast(src.rows()) / dst.rows(); -+ const int x_kernel_size = static_cast(src.cols()) / dst.cols(); -+ const int y_kernel_size = static_cast(src.rows()) / dst.rows(); - - // Do simple linear interpolation. - if (x_kernel_size == 2 && y_kernel_size == 2) { -@@ -237,8 +237,8 @@ void halfsample_image(const RowMatrixXf& src, RowMatrixXf& dst) { - return; - } - -- const double x_kernel_clamped_size = static_cast(ceil(x_kernel_size)); -- const double y_kernel_clamped_size = static_cast(ceil(y_kernel_size)); -+ const int x_kernel_clamped_size = static_cast(ceil(static_cast(src.cols()) / dst.cols())); -+ const int y_kernel_clamped_size = static_cast(ceil(static_cast(src.rows()) / dst.rows())); - - // Set up precomputed factor matrices. - Eigen::RowVectorXf x_kernel_mul(static_cast(x_kernel_clamped_size)), diff --git a/ports/theia/fix-external-dependencies.patch b/ports/theia/fix-external-dependencies.patch deleted file mode 100644 index 812aad4319..0000000000 --- a/ports/theia/fix-external-dependencies.patch +++ /dev/null @@ -1,457 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9c1b150..1adbfed 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -105,10 +105,10 @@ add_definitions(-DTHEIA_DATA_DIR="${CMAKE_SOURCE_DIR}/data") - - # Eigen - set(MIN_EIGEN_VERSION 3.2.0) --find_package(Eigen ${MIN_EIGEN_VERSION} REQUIRED) --if (EIGEN_FOUND) -- message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}") --endif (EIGEN_FOUND) -+find_package(Eigen3 ${MIN_EIGEN_VERSION} REQUIRED) -+if (EIGEN3_FOUND) -+ message("-- Found Eigen version ${EIGEN3_VERSION}: ${EIGEN3_INCLUDE_DIRS}") -+endif (EIGEN3_FOUND) - - # Use a larger inlining threshold for Clang, since it hobbles Eigen, - # resulting in an unreasonably slow version of the blas routines. The -@@ -129,70 +129,27 @@ endif () - - # GFlags. The namespace patch is borrow from Ceres Solver (see license in - # FindGflags.cmake) -+message("-- Check for Google Flags") - find_package(Gflags REQUIRED) --if (GFLAGS_FOUND) -- message("-- Found Google Flags: ${GFLAGS_INCLUDE_DIRS} in namespace: ${GFLAGS_NAMESPACE}") -- add_definitions(-DTHEIA_GFLAGS_NAMESPACE=${GFLAGS_NAMESPACE}) --else (GFLAGS_FOUND) -- message(FATAL_ERROR "Can't find Google FLAGS.") --endif (GFLAGS_FOUND) - - # Google Logging - message("-- Check for Google Log") - find_package(Glog REQUIRED) --if (GLOG_FOUND) -- message("-- Found Google Logging: ${GLOG_INCLUDE_DIRS}") --else (GLOG_FOUND) -- message(FATAL_ERROR "Can't find Google Logging. Please set GLOG_INCLUDE_DIR & " -- "GLOG_LIBRARY") --endif (GLOG_FOUND) -+ -+# Flann -+message("-- Check for Flann") -+find_package(Flann REQUIRED) - - # Ceres - message("-- Check for Ceres") - find_package(Ceres REQUIRED SuiteSparse) --if (CERES_FOUND) -- message("-- Found Ceres: ${CERES_INCLUDE_DIRS}") --else (CERES_FOUND) -- message(FATAL_ERROR "Can't find Ceres. Please set CERES_INCLUDE_DIR & " -- "CERES_LIBRARY") --endif (CERES_FOUND) - - # OpenImageIO - message("-- Check for OpenImageIO") - find_package(OpenImageIO REQUIRED) --if (OPENIMAGEIO_FOUND) -- message("-- Found OpenImageIO: ${OPENIMAGEIO_INCLUDE_DIRS}") --else (OPENIMAGEIO_FOUND) -- message(FATAL_ERROR "Can't find OpenImageIO. Please set OPENIMAGEIO_INCLUDE_DIR & " -- "OPENIMAGEIO_LIBRARY") --endif (OPENIMAGEIO_FOUND) - - # Suitesparse - find_package(SuiteSparse REQUIRED) --if (SUITESPARSE_FOUND) -- # On Ubuntu the system install of SuiteSparse (v3.4.0) up to at least -- # Ubuntu 13.10 cannot be used to link shared libraries. -- if (BUILD_SHARED_LIBS AND -- SUITESPARSE_IS_BROKEN_SHARED_LINKING_UBUNTU_SYSTEM_VERSION) -- message(FATAL_ERROR "You are attempting to build Theia as a shared " -- "library on Ubuntu using a system package install of SuiteSparse " -- "3.4.0. This package is broken and does not support the " -- "construction of shared libraries (you can still build Theia as " -- "a static library). If you wish to build a shared version of Theia " -- "you should uninstall the system install of SuiteSparse " -- "(libsuitesparse-dev) and perform a source install of SuiteSparse " -- "(we recommend that you use the latest version), " -- "see http://theia-solver.org/building.html for more information.") -- endif (BUILD_SHARED_LIBS AND -- SUITESPARSE_IS_BROKEN_SHARED_LINKING_UBUNTU_SYSTEM_VERSION) -- message("-- Found SuiteSparse ${SUITESPARSE_VERSION}") -- add_definitions(-DTHEIA_SUITESPARSE_VERSION="${SUITESPARSE_VERSION}") --else (SUITESPARSE_FOUND) -- # Disable use of SuiteSparse if it cannot be found and continue. -- message(FATAL ERROR "Can't find SuiteSparse. This library is required " -- "for bundle adjustment and for solving convex optimization problems. " -- "Please set SUITESPARSE_INCLUDE_DIR & SUITESPARSE_LIBRARY") --endif (SUITESPARSE_FOUND) - - include_directories( - include -@@ -225,24 +182,19 @@ include_directories( - libraries/spectra - ${akaze_SOURCE_DIR} - ${akaze_INCLUDE_DIR} -- ${cereal_SOURCE_DIR} -- ${cereal_SOURCE_DIR}/include -- ${flann_SOURCE_DIR} -- ${flann_SOURCE_DIR}/src/cpp -- ${gtest_SOURCE_DIR}/include -- ${gtest_SOURCE_DIR} - ${optimo_SOURCE_DIR} - ${statx_SOURCE_DIR} - ${stlplus3_SOURCE_DIR} - ${vlfeat_SOURCE_DIR} -- ${visual_sfm_SOURCE_DIR}) -+ ${visual_sfm_SOURCE_DIR} -+) - - list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") - include(OptimizeTheiaCompilerFlags) - optimizetheiacompilerflags() - - add_subdirectory(src/theia) --add_subdirectory(applications) -+#add_subdirectory(applications) - - if (BUILD_DOCUMENTATION) - message("-- Documentation building is enabled") -@@ -260,7 +212,13 @@ install(FILES ${THEIA_HDRS} DESTINATION include/theia) - file(GLOB_RECURSE THEIA_INTERNAL_HDRS ${CMAKE_SOURCE_DIR}/src/theia/*.h) - install(DIRECTORY src/theia/ DESTINATION include/theia FILES_MATCHING PATTERN "*.h") - --install(DIRECTORY libraries/ DESTINATION include/theia/libraries FILES_MATCHING PATTERN "*.h*") -+install(DIRECTORY libraries/akaze/ DESTINATION include/theia/libraries/akaze FILES_MATCHING PATTERN "*.h*") -+install(DIRECTORY libraries/optimo/ DESTINATION include/theia/libraries/optimo FILES_MATCHING PATTERN "*.h*") -+install(DIRECTORY libraries/spectra/ DESTINATION include/theia/libraries/spectra FILES_MATCHING PATTERN "*.h*") -+install(DIRECTORY libraries/statx/ DESTINATION include/theia/libraries/statx FILES_MATCHING PATTERN "*.h*") -+install(DIRECTORY libraries/stlplus3/ DESTINATION include/theia/libraries/stlplus3 FILES_MATCHING PATTERN "*.h*") -+install(DIRECTORY libraries/visual_sfm/ DESTINATION include/theia/libraries/visual_sfm FILES_MATCHING PATTERN "*.h*") -+install(DIRECTORY libraries/vlfeat/ DESTINATION include/theia/libraries/vlfeat FILES_MATCHING PATTERN "*.h*") - - # Add an uninstall target to remove all installed files. - configure_file("${CMAKE_SOURCE_DIR}/cmake/uninstall.cmake.in" -@@ -272,17 +230,10 @@ add_custom_target(uninstall - - # Set up install directories. INCLUDE_INSTALL_DIR, LIB_INSTALL_DIR and - # CMAKECONFIG_INSTALL_DIR must not be absolute paths. --if (WIN32) -- set(INCLUDE_INSTALL_DIR Include) -- set(LIB_INSTALL_DIR Lib) -- set(CMAKECONFIG_INSTALL_DIR CMake) -- set(RELATIVE_CMAKECONFIG_INSTALL_DIR CMake) --else () -- set(INCLUDE_INSTALL_DIR include) -- set(LIB_INSTALL_DIR lib) -- set(CMAKECONFIG_INSTALL_DIR share/Theia) -- set(RELATIVE_CMAKECONFIG_INSTALL_DIR share/Theia) --endif () -+set(INCLUDE_INSTALL_DIR include) -+set(LIB_INSTALL_DIR lib) -+set(CMAKECONFIG_INSTALL_DIR share/theia) -+set(RELATIVE_CMAKECONFIG_INSTALL_DIR share/theia) - - # This "exports" all targets which have been put into the export set - # "TheiaExport". This means that CMake generates a file with the given -@@ -319,9 +270,4 @@ configure_file("${CMAKE_SOURCE_DIR}/cmake/TheiaConfigVersion.cmake.in" - # in the public API of Theia and should thus be present in THEIA_INCLUDE_DIRS. - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/TheiaConfig.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/TheiaConfigVersion.cmake" -- "${CMAKE_SOURCE_DIR}/cmake/FindEigen.cmake" -- "${CMAKE_SOURCE_DIR}/cmake/FindGlog.cmake" -- "${CMAKE_SOURCE_DIR}/cmake/FindGflags.cmake" -- "${CMAKE_SOURCE_DIR}/cmake/FindOpenImageIO.cmake" -- "${CMAKE_SOURCE_DIR}/cmake/FindSuiteSparse.cmake" - DESTINATION ${CMAKECONFIG_INSTALL_DIR}) -diff --git a/cmake/TheiaConfig.cmake.in b/cmake/TheiaConfig.cmake.in -index a3ea187..7e9d912 100644 ---- a/cmake/TheiaConfig.cmake.in -+++ b/cmake/TheiaConfig.cmake.in -@@ -124,14 +124,7 @@ list(APPEND CERES_INCLUDE_DIR_HINTS @CERES_INCLUDE_DIR@) - get_filename_component(THEIA_BUILD_CERES_LIBRARY_DIR @CERES_LIBRARIES@ PATH) - list(APPEND CERES_LIBRARY_DIR_HINTS ${THEIA_BUILD_CERES_LIBRARY_DIR}) - # Search quietly s/t we control the timing of the error message if not found. --find_package(Ceres QUIET) --if (CERES_FOUND) -- message(STATUS "Found required Theia dependency: " -- "Ceres in ${CERES_INCLUDE_DIRS}") --else (CERES_FOUND) -- theia_report_not_found("Missing required Theia " -- "dependency: Ceres, please set CERES_INCLUDE_DIR.") --endif (CERES_FOUND) -+find_package(Ceres REQUIRED) - list(APPEND THEIA_INCLUDE_DIRS ${CERES_INCLUDE_DIRS}) - - # Glog. -@@ -140,64 +133,19 @@ list(APPEND GLOG_INCLUDE_DIR_HINTS @GLOG_INCLUDE_DIR@) - get_filename_component(THEIA_BUILD_GLOG_LIBRARY_DIR @GLOG_LIBRARY@ PATH) - list(APPEND GLOG_LIBRARY_DIR_HINTS ${THEIA_BUILD_GLOG_LIBRARY_DIR}) - # Search quietly s/t we control the timing of the error message if not found. --find_package(Glog QUIET) --if (GLOG_FOUND) -- message(STATUS "Found required Theia dependency: " -- "Glog in ${GLOG_INCLUDE_DIRS}") --else (GLOG_FOUND) -- theia_report_not_found("Missing required Theia " -- "dependency: Glog, please set GLOG_INCLUDE_DIR.") --endif (GLOG_FOUND) -+find_package(Glog REQUIRED) - list(APPEND THEIA_INCLUDE_DIRS ${GLOG_INCLUDE_DIRS}) - - # GFlags. The namespace patch is borrow from Ceres Solver (see license in - # FindGflags.cmake) --find_package(Gflags QUIET) --if (GFLAGS_FOUND) -- message(STATUS "Found required Theia dependency: Google Flags in " -- "${GFLAGS_INCLUDE_DIRS} in namespace: ${GFLAGS_NAMESPACE}") -- add_definitions(-DTHEIA_GFLAGS_NAMESPACE=${GFLAGS_NAMESPACE}) --else (GFLAGS_FOUND) -- theia_report_not_found("Missing required Theia dependency: Google Flags, please set " -- "GFLAGS_INCLUDE_DIR.") --endif (GFLAGS_FOUND) -+find_package(Gflags REQUIRED) - list(APPEND THEIA_INCLUDE_DIRS ${GFLAGS_INCLUDE_DIRS}) - - # OpenImageIO --find_package(OpenImageIO QUIET) --if (OPENIMAGEIO_FOUND) -- message(STATUS "Found Theia dependency: OpenImageIO in ${OPENIMAGEIO_INCLUDE_DIRS}") --else (OPENIMAGEIO_FOUND) -- theia_report_not_found("Missing required Theia dependency: OpenImageIO. Please set " -- "OPENIMAGEIO_INCLUDE_DIR & OPENIMAGEIO_LIBRARY") --endif (OPENIMAGEIO_FOUND) -+find_package(OpenImageIO REQUIRED) - list(APPEND THEIA_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIRS}) - --find_package(SuiteSparse QUIET) --if (SUITESPARSE_FOUND) -- # On Ubuntu the system install of SuiteSparse (v3.4.0) up to at least -- # Ubuntu 13.10 cannot be used to link shared libraries. -- if (BUILD_SHARED_LIBS AND -- SUITESPARSE_IS_BROKEN_SHARED_LINKING_UBUNTU_SYSTEM_VERSION) -- theia_report_not_found("You are attempting to build Theia as a shared " -- "library on Ubuntu using a system package install of SuiteSparse " -- "3.4.0. This package is broken and does not support the " -- "construction of shared libraries (you can still build Theia as " -- "a static library). If you wish to build a shared version of Theia " -- "you should uninstall the system install of SuiteSparse " -- "(libsuitesparse-dev) and perform a source install of SuiteSparse " -- "(we recommend that you use the latest version), " -- "see http://theia-solver.org/building.html for more information.") -- endif (BUILD_SHARED_LIBS AND -- SUITESPARSE_IS_BROKEN_SHARED_LINKING_UBUNTU_SYSTEM_VERSION) -- message("-- Found SuiteSparse ${SUITESPARSE_VERSION}") -- add_definitions(-DTHEIA_SUITESPARSE_VERSION="${SUITESPARSE_VERSION}") --else (SUITESPARSE_FOUND) -- # Disable use of SuiteSparse if it cannot be found and continue. -- theia_report_not_found("Can't find SuiteSparse. This library is required " -- "for bundle adjustment and for solving convex optimization problems. " -- "Please set SUITESPARSE_INCLUDE_DIR & SUITESPARSE_LIBRARY") --endif (SUITESPARSE_FOUND) -+find_package(SuiteSparse REQUIRED) - list(APPEND THEIA_INCLUDE_DIRS ${SUITESPARSE_INCLUDE_DIRS}) - - # Import exported Theia targets. -@@ -207,22 +155,24 @@ endif (NOT TARGET theia AND NOT Theia_BINARY_DIR) - # Set the expected XX_LIBRARIES variable for FindPackage(). - set(THEIA_LIBRARIES theia) - -+find_package(cereal REQUIRED) -+list(APPEND THEIA_LIBRARIES cereal) -+ -+find_package(Flann REQUIRED) -+list(APPEND THEIA_INCLUDE_DIRS ${FLANN_INCLUDE_DIR}) -+list(APPEND THEIA_LIBRARIES ${FLANN_LIBRARY}) -+ - # Add the libraries included with the distribution. - set(THEIA_INTERNAL_LIB_PREFIX ${THEIA_INCLUDE_DIR}/theia/libraries) - set(THEIA_INTERNAL_LIBS_INCLUDES - ${THEIA_INTERNAL_LIB_PREFIX} - ${THEIA_INTERNAL_LIB_PREFIX}/akaze -- ${THEIA_INTERNAL_LIB_PREFIX}/cereal -- ${THEIA_INTERNAL_LIB_PREFIX}/cereal/include -- ${THEIA_INTERNAL_LIB_PREFIX}/flann -- ${THEIA_INTERNAL_LIB_PREFIX}/gtest -- ${THEIA_INTERNAL_LIB_PREFIX}/gtest/include - ${THEIA_INTERNAL_LIB_PREFIX}/optimo - ${THEIA_INTERNAL_LIB_PREFIX}/spectra - ${THEIA_INTERNAL_LIB_PREFIX}/statx - ${THEIA_INTERNAL_LIB_PREFIX}/stlplus3 -- ${THEIA_INTERNAL_LIB_PREFIX}/vlfeat -- ${THEIA_INTERNAL_LIB_PREFIX}/visual_sfm) -+ ${THEIA_INTERNAL_LIB_PREFIX}/visual_sfm -+ ${THEIA_INTERNAL_LIB_PREFIX}/vlfeat) - - list(APPEND THEIA_INCLUDE_DIRS ${THEIA_INTERNAL_LIBS_INCLUDES}) - -diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt -index 84f3829..f88d75a 100644 ---- a/libraries/CMakeLists.txt -+++ b/libraries/CMakeLists.txt -@@ -5,12 +5,6 @@ endif (${BUILD_TESTING}) - # AKAZE feature extractor. - add_subdirectory(akaze) - --# Cereal for portable IO. --add_subdirectory(cereal) -- --# Flann for fast approximate nearest neighbor searches. --add_subdirectory(flann) -- - # Add Optimo. - add_subdirectory(optimo) - -@@ -24,4 +18,4 @@ add_subdirectory(stlplus3) - add_subdirectory(vlfeat) - - # Add VisualSfM files. --add_subdirectory(visual_sfm) -\ No newline at end of file -+add_subdirectory(visual_sfm) -diff --git a/libraries/optimo/CMakeLists.txt b/libraries/optimo/CMakeLists.txt -index 80f5e5f..ea57f1b 100644 ---- a/libraries/optimo/CMakeLists.txt -+++ b/libraries/optimo/CMakeLists.txt -@@ -67,11 +67,11 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - - # Locations to search for Eigen - # Eigen --find_package(Eigen REQUIRED) --if (EIGEN_FOUND) -- message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}") --endif (EIGEN_FOUND) --include_directories(${EIGEN_INCLUDE_DIRS}) -+find_package(Eigen3 REQUIRED) -+if (EIGEN3_FOUND) -+ message("-- Found Eigen version ${EIGEN3_VERSION_STRING}: ${EIGEN3_INCLUDE_DIRS}") -+endif (EIGEN3_FOUND) -+include_directories(${EIGEN3_INCLUDE_DIRS}) - - # Setting CXX FLAGS appropriately. The code below was inspired from - # Google CERES and modified for this library. -diff --git a/libraries/statx/CMakeLists.txt b/libraries/statx/CMakeLists.txt -index 23b9e49..c58a550 100644 ---- a/libraries/statx/CMakeLists.txt -+++ b/libraries/statx/CMakeLists.txt -@@ -72,11 +72,11 @@ message("-- Default Install prefix: ${CMAKE_INSTALL_PREFIX}") - option(STATX_WITH_CERES "Enables GEV parameter estimation using Ceres" ON) - - # Eigen --find_package(Eigen REQUIRED) --if (EIGEN_FOUND) -- message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}") --endif (EIGEN_FOUND) --include_directories(${EIGEN_INCLUDE_DIRS}) -+find_package(Eigen3 REQUIRED) -+if (EIGEN3_FOUND) -+ message("-- Found Eigen version ${EIGEN3_VERSION_STRING}: ${EIGEN3_INCLUDE_DIRS}") -+endif (EIGEN3_FOUND) -+include_directories(${EIGEN3_INCLUDE_DIRS}) - - # Google Flags - find_package(Gflags REQUIRED) -@@ -103,7 +103,11 @@ if(STATX_WITH_CERES) - endif(CERES_FOUND) - - # BLAS -- find_package(BLAS REQUIRED) -+ if(UNIX AND NOT APPLE) -+ find_package(OpenBLAS REQUIRED) -+ else() -+ find_package(BLAS REQUIRED) -+ endif() - - # LAPACK - find_package(LAPACK REQUIRED) -@@ -129,7 +133,6 @@ set(XGAMMA_FILES ${XGAMMA_FUNCS}/asa121.cpp ${XGAMMA_FUNCS}/asa103.cpp) - - # Setting CXX FLAGS appropriately. The code below was inspired from - # Google CERES and modified for this library. --set (CMAKE_BUILD_TYPE Release) - set (STATX_CXX_FLAGS) - - if (CMAKE_BUILD_TYPE STREQUAL "Release") -diff --git a/libraries/vlfeat/CMakeLists.txt b/libraries/vlfeat/CMakeLists.txt -index 7f4ffc7..15bca12 100644 ---- a/libraries/vlfeat/CMakeLists.txt -+++ b/libraries/vlfeat/CMakeLists.txt -@@ -18,14 +18,19 @@ set(vl_sources - vl/random.c - vl/sift.c - vl/vlad.c) -+ - set_source_files_properties(${vl_sources} PROPERTIES LANGUAGE C) - -+add_library(vlfeat ${vl_sources}) -+ - if (MSVC) -- add_definitions(-DVL_BUILD_DLL) -- add_definitions(-DVL_DISABLE_SSE2) -+ if(BUILD_SHARED_LIBS) -+ target_compile_definitions(vlfeat PRIVATE VL_BUILD_DLL) -+ target_compile_definitions(vlfeat INTERFACE BUILD_DLL) -+ endif() -+ target_compile_definitions(vlfeat PUBLIC VL_DISABLE_SSE2) - endif (MSVC) - --add_library(vlfeat SHARED ${vl_sources}) - install(TARGETS vlfeat - EXPORT TheiaExport - RUNTIME DESTINATION bin -diff --git a/libraries/vlfeat/vl/host.h b/libraries/vlfeat/vl/host.h -index 293fe1f..0ea3d42 100644 ---- a/libraries/vlfeat/vl/host.h -+++ b/libraries/vlfeat/vl/host.h -@@ -312,27 +312,31 @@ defined(__DOXYGEN__) - #if defined(VL_COMPILER_MSC) & ! defined(__DOXYGEN__) - # define VL_UNUSED - # define VL_INLINE static __inline --# define snprintf _snprintf - # define isnan _isnan --# ifdef VL_BUILD_DLL -+# if defined(VL_BUILD_DLL) - # ifdef __cplusplus - # define VL_EXPORT extern "C" __declspec(dllexport) - # else - # define VL_EXPORT extern __declspec(dllexport) - # endif --# else -+# elif defined(VL_DLL) - # ifdef __cplusplus - # define VL_EXPORT extern "C" __declspec(dllimport) - # else - # define VL_EXPORT extern __declspec(dllimport) - # endif -+# else -+# ifdef __cplusplus -+# define VL_EXPORT extern "C" -+# else -+# define VL_EXPORT extern -+# endif - # endif - #endif - - #if defined(VL_COMPILER_LCC) & ! defined(__DOXYGEN__) - # define VL_UNUSED - # define VL_INLINE static __inline --# define snprintf _snprintf - # define isnan _isnan - VL_INLINE float fabsf(float x) { return (float) fabs((double) x) ; } - # ifdef VL_BUILD_DLL -diff --git a/src/theia/CMakeLists.txt b/src/theia/CMakeLists.txt -index 6830f71..768586d 100644 ---- a/src/theia/CMakeLists.txt -+++ b/src/theia/CMakeLists.txt -@@ -209,7 +209,6 @@ set(THEIA_LIBRARY_DEPENDENCIES - ${SUITESPARSE_LIBRARIES} - ${OPENIMAGEIO_LIBRARIES} - akaze -- flann_cpp - statx - stlplus3 - vlfeat diff --git a/ports/theia/fix-external-dependencies2.patch b/ports/theia/fix-external-dependencies2.patch deleted file mode 100644 index f7026ba1aa..0000000000 --- a/ports/theia/fix-external-dependencies2.patch +++ /dev/null @@ -1,76 +0,0 @@ -diff --git a/cmake/TheiaConfig.cmake.in b/cmake/TheiaConfig.cmake.in -index 7e9d912..2a98124 100644 ---- a/cmake/TheiaConfig.cmake.in -+++ b/cmake/TheiaConfig.cmake.in -@@ -43,7 +43,7 @@ macro(THEIA_REPORT_NOT_FOUND REASON_MSG) - # use the camelcase library name, not uppercase. - if (Theia_FIND_QUIETLY) - message(STATUS "Failed to find Theia - " ${REASON_MSG} ${ARGN}) -- else (Theia_FIND_REQUIRED) -+ elseif (Theia_FIND_REQUIRED) - message(FATAL_ERROR "Failed to find Theia - " ${REASON_MSG} ${ARGN}) - else() - # Neither QUIETLY nor REQUIRED, use SEND_ERROR which emits an error -@@ -103,35 +103,35 @@ set(THEIA_INCLUDE_DIRS ${THEIA_INCLUDE_DIR}) - - # Eigen. - # Flag set during configuration and build of Theia. --set(THEIA_EIGEN_VERSION @EIGEN_VERSION@) -+set(THEIA_EIGEN_VERSION @EIGEN3_VERSION@) - # Append the locations of Eigen when Theia was built to the search path hints. --list(APPEND EIGEN_INCLUDE_DIR_HINTS @EIGEN_INCLUDE_DIR@) -+list(APPEND EIGEN_INCLUDE_DIR_HINTS @EIGEN3_INCLUDE_DIR@) - # Search quietly s/t we control the timing of the error message if not found. --find_package(Eigen ${THEIA_EIGEN_VERSION} EXACT QUIET) --if (EIGEN_FOUND) -+find_package(Eigen3 ${THEIA_EIGEN_VERSION} REQUIRED) -+if (EIGEN3_FOUND) - message(STATUS "Found required Theia dependency: " -- "Eigen version ${THEIA_EIGEN_VERSION} in ${EIGEN_INCLUDE_DIRS}") --else (EIGEN_FOUND) -+ "Eigen version ${THEIA_EIGEN_VERSION} in ${EIGEN3_INCLUDE_DIRS}") -+else (EIGEN3_FOUND) - theia_report_not_found("Missing required Theia " - "dependency: Eigen version ${THEIA_EIGEN_VERSION}, please set " - "EIGEN_INCLUDE_DIR.") --endif (EIGEN_FOUND) --list(APPEND THEIA_INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS}) -+endif (EIGEN3_FOUND) -+list(APPEND THEIA_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIRS}) - - # Ceres. - # Append the locations of ceres when Theia was built to the search path hints. --list(APPEND CERES_INCLUDE_DIR_HINTS @CERES_INCLUDE_DIR@) --get_filename_component(THEIA_BUILD_CERES_LIBRARY_DIR @CERES_LIBRARIES@ PATH) --list(APPEND CERES_LIBRARY_DIR_HINTS ${THEIA_BUILD_CERES_LIBRARY_DIR}) -+#list(APPEND CERES_INCLUDE_DIR_HINTS @CERES_INCLUDE_DIR@) -+#get_filename_component(THEIA_BUILD_CERES_LIBRARY_DIR @CERES_LIBRARIES@ PATH) -+#list(APPEND CERES_LIBRARY_DIR_HINTS ${THEIA_BUILD_CERES_LIBRARY_DIR}) - # Search quietly s/t we control the timing of the error message if not found. - find_package(Ceres REQUIRED) - list(APPEND THEIA_INCLUDE_DIRS ${CERES_INCLUDE_DIRS}) - - # Glog. - # Append the locations of glog when Theia was built to the search path hints. --list(APPEND GLOG_INCLUDE_DIR_HINTS @GLOG_INCLUDE_DIR@) --get_filename_component(THEIA_BUILD_GLOG_LIBRARY_DIR @GLOG_LIBRARY@ PATH) --list(APPEND GLOG_LIBRARY_DIR_HINTS ${THEIA_BUILD_GLOG_LIBRARY_DIR}) -+#list(APPEND GLOG_INCLUDE_DIR_HINTS @GLOG_INCLUDE_DIR@) -+#get_filename_component(THEIA_BUILD_GLOG_LIBRARY_DIR @GLOG_LIBRARY@ PATH) -+#list(APPEND GLOG_LIBRARY_DIR_HINTS ${THEIA_BUILD_GLOG_LIBRARY_DIR}) - # Search quietly s/t we control the timing of the error message if not found. - find_package(Glog REQUIRED) - list(APPEND THEIA_INCLUDE_DIRS ${GLOG_INCLUDE_DIRS}) -diff --git a/src/theia/CMakeLists.txt b/src/theia/CMakeLists.txt -index 768586d..c1f6593 100644 ---- a/src/theia/CMakeLists.txt -+++ b/src/theia/CMakeLists.txt -@@ -207,7 +207,7 @@ set(THEIA_LIBRARY_DEPENDENCIES - ${GFLAGS_LIBRARIES} - ${GLOG_LIBRARIES} - ${SUITESPARSE_LIBRARIES} -- ${OPENIMAGEIO_LIBRARIES} -+ OpenImageIO::OpenImageIO - akaze - statx - stlplus3 diff --git a/ports/theia/fix-last-openimageio.patch b/ports/theia/fix-last-openimageio.patch deleted file mode 100644 index 21c596fa72..0000000000 --- a/ports/theia/fix-last-openimageio.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/src/theia/image/image.cc b/src/theia/image/image.cc -index 6175a1f..18cb59b 100644 ---- a/src/theia/image/image.cc -+++ b/src/theia/image/image.cc -@@ -296,7 +296,7 @@ FloatImage FloatImage::ComputeGradient() const { - - void FloatImage::ApproximateGaussianBlur(const int kernel_size) { - oiio::ImageBuf kernel; -- oiio::ImageBufAlgo::make_kernel(kernel, "gaussian", -+ oiio::ImageBufAlgo::make_kernel("gaussian", - static_cast(kernel_size), - static_cast(kernel_size)); - oiio::ImageBufAlgo::convolve(image_, image_, kernel); -diff --git a/src/theia/sfm/exif_reader.cc b/src/theia/sfm/exif_reader.cc -index c63465a..6b0e702 100644 ---- a/src/theia/sfm/exif_reader.cc -+++ b/src/theia/sfm/exif_reader.cc -@@ -150,7 +150,7 @@ bool ExifReader::ExtractEXIFMetadata( - camera_intrinsics_prior->focal_length.is_set = true; - - // Set GPS latitude. -- const oiio::ImageIOParameter* latitude = -+ const OIIO::ParamValue* latitude = - image_spec.find_attribute("GPS:Latitude"); - if (latitude != nullptr) { - camera_intrinsics_prior->latitude.is_set = true; -@@ -169,7 +169,7 @@ bool ExifReader::ExtractEXIFMetadata( - } - - // Set GPS longitude. -- const oiio::ImageIOParameter* longitude = -+ const OIIO::ParamValue* longitude = - image_spec.find_attribute("GPS:Longitude"); - if (longitude != nullptr) { - camera_intrinsics_prior->longitude.is_set = true; -@@ -189,7 +189,7 @@ bool ExifReader::ExtractEXIFMetadata( - - - // Set GSP altitude. -- const oiio::ImageIOParameter* altitude = -+ const OIIO::ParamValue* altitude = - image_spec.find_attribute("GPS:Altitude"); - if (altitude != nullptr) { - camera_intrinsics_prior->altitude.is_set = true; diff --git a/ports/theia/portfile.cmake b/ports/theia/portfile.cmake deleted file mode 100644 index a16ee7c460..0000000000 --- a/ports/theia/portfile.cmake +++ /dev/null @@ -1,56 +0,0 @@ -vcpkg_check_linkage(ONLY_STATIC_LIBRARY) - -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO sweeneychris/TheiaSfM - REF v0.8 - SHA512 2f620389c415badec36f4b44be0378fc62761dd6b2ee4cd7033b13573c372f098e248553575fb2cceb757b1ca00e86a11c67e03b6077e0a4b0f8797065746312 - HEAD_REF master - PATCHES - fix-external-dependencies.patch - fix-external-dependencies2.patch - eigen-3.4.patch - 266.diff - fix-last-openimageio.patch -) - -file(REMOVE "${SOURCE_PATH}/cmake/FindSuiteSparse.cmake") -file(REMOVE "${SOURCE_PATH}/cmake/FindOpenImageIO.cmake") -file(REMOVE "${SOURCE_PATH}/cmake/FindGflags.cmake") -file(REMOVE "${SOURCE_PATH}/cmake/FindGlog.cmake") -file(REMOVE "${SOURCE_PATH}/cmake/FindEigen.cmake") - -vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - OPTIONS - -DCMAKE_CXX_STANDARD=14 - -DCMAKE_CXX_EXTENSIONS=OFF - -DCMAKE_CXX_STANDARD_REQUIRED=ON - -DBUILD_TESTING=OFF - -DTHEIA_USE_EXTERNAL_CEREAL=ON - -DTHEIA_USE_EXTERNAL_FLANN=ON - -DCMAKE_POLICY_DEFAULT_CMP0012=NEW - -DCMAKE_POLICY_DEFAULT_CMP0057=NEW - MAYBE_UNUSED_VARIABLES - CMAKE_POLICY_DEFAULT_CMP0012 - THEIA_USE_EXTERNAL_CEREAL - THEIA_USE_EXTERNAL_FLANN -) - -vcpkg_cmake_install() -vcpkg_cmake_config_fixup() -vcpkg_copy_pdbs() - -# Clean -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/optimo") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/optimo") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/theia/libraries/akaze/cimg/cmake-modules") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/theia/libraries/akaze/cmake") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/theia/libraries/akaze/datasets") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/theia/libraries/spectra/doxygen") - -# Handle copyright -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/license.txt") -file(COPY "${SOURCE_PATH}/data/camera_sensor_database_license.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") diff --git a/ports/theia/vcpkg.json b/ports/theia/vcpkg.json deleted file mode 100644 index 448ffaab3d..0000000000 --- a/ports/theia/vcpkg.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "theia", - "version": "0.8", - "port-version": 12, - "description": "An open source library for multiview geometry and structure from motion", - "homepage": "https://github.com/sweeneychris/TheiaSfM", - "license": "BSD-3-Clause", - "supports": "!uwp & !arm & !(windows & x86)", - "dependencies": [ - "cereal", - { - "name": "ceres", - "features": [ - "suitesparse" - ] - }, - "flann", - { - "name": "freeglut", - "platform": "!osx" - }, - "glew", - { - "name": "openimageio", - "features": [ - "viewer" - ] - }, - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - } - ] -} diff --git a/versions/baseline.json b/versions/baseline.json index 341cf97cfc..c13dd052fe 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -1516,10 +1516,6 @@ "baseline": "1.2.0", "port-version": 0 }, - "cartographer": { - "baseline": "1.0.0", - "port-version": 6 - }, "casadi": { "baseline": "3.6.7", "port-version": 0 @@ -1585,8 +1581,8 @@ "port-version": 1 }, "ceres": { - "baseline": "2.1.0", - "port-version": 5 + "baseline": "2.2.0", + "port-version": 0 }, "cfitsio": { "baseline": "3.49", @@ -6733,8 +6729,8 @@ "port-version": 1 }, "openmvg": { - "baseline": "2.0", - "port-version": 11 + "baseline": "2.1", + "port-version": 0 }, "openmvs": { "baseline": "2.1.0", @@ -6773,8 +6769,8 @@ "port-version": 4 }, "openturns": { - "baseline": "1.20", - "port-version": 2 + "baseline": "1.24", + "port-version": 0 }, "openvdb": { "baseline": "12.0.0", @@ -8050,7 +8046,7 @@ }, "rtabmap": { "baseline": "0.21.4.1", - "port-version": 3 + "port-version": 4 }, "rtabmap-res-tool": { "baseline": "0.21.4.1", @@ -8912,10 +8908,6 @@ "baseline": "1.6.1", "port-version": 0 }, - "theia": { - "baseline": "0.8", - "port-version": 12 - }, "think-cell-range": { "baseline": "2023.1", "port-version": 1 diff --git a/versions/c-/ceres.json b/versions/c-/ceres.json index eefdfc508f..2875185a80 100644 --- a/versions/c-/ceres.json +++ b/versions/c-/ceres.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "ae2ddb638679c4955ec12f60c33eb43493786535", + "version": "2.2.0", + "port-version": 0 + }, { "git-tree": "213619bf4451443bd69f784f9a7fa32fc2436e07", "version": "2.1.0", diff --git a/versions/o-/openmvg.json b/versions/o-/openmvg.json index cc9941057f..a2a3d17848 100644 --- a/versions/o-/openmvg.json +++ b/versions/o-/openmvg.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "897ab1ecaccba02608f2a36ebc8072548aa6c395", + "version": "2.1", + "port-version": 0 + }, { "git-tree": "e08aec4337f9a281817b2c84d04fee5a079551d8", "version": "2.0", diff --git a/versions/o-/openturns.json b/versions/o-/openturns.json index 8c67d882ee..f0423a38f4 100644 --- a/versions/o-/openturns.json +++ b/versions/o-/openturns.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "a7fd1d7b26b1383de54594cbf65327ec8db97ea9", + "version": "1.24", + "port-version": 0 + }, { "git-tree": "55e0a233063acabd3fe365687fda3f99d6e79f4c", "version": "1.20", diff --git a/versions/r-/rtabmap.json b/versions/r-/rtabmap.json index d71504e721..22a77095a8 100644 --- a/versions/r-/rtabmap.json +++ b/versions/r-/rtabmap.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "8095952b0fbd2d24600e3314c345184503634e8f", + "version": "0.21.4.1", + "port-version": 4 + }, { "git-tree": "9bab9b050ad5e8db991955d2905f95cc5ce4a1ff", "version": "0.21.4.1",