diff options
Diffstat (limited to 'vcpkg/ports/g2o')
| -rw-r--r-- | vcpkg/ports/g2o/dependencies.diff | 34 | ||||
| -rw-r--r-- | vcpkg/ports/g2o/fix-absolute.patch | 22 | ||||
| -rw-r--r-- | vcpkg/ports/g2o/portfile.cmake | 77 | ||||
| -rw-r--r-- | vcpkg/ports/g2o/vcpkg.json | 32 |
4 files changed, 165 insertions, 0 deletions
diff --git a/vcpkg/ports/g2o/dependencies.diff b/vcpkg/ports/g2o/dependencies.diff new file mode 100644 index 0000000..b3917ec --- /dev/null +++ b/vcpkg/ports/g2o/dependencies.diff @@ -0,0 +1,34 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c2b0a09..08bd944 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -95,7 +95,7 @@ endif() + + # For building the CHOLMOD based solvers + option(G2O_USE_CHOLMOD "Build g2o with CHOLMOD support" ON) +-find_package(SuiteSparse) ++find_package(SuiteSparse_CHOLMOD NAMES CHOLMOD CONFIG REQUIRED) + if (G2O_USE_CHOLMOD AND SuiteSparse_CHOLMOD_FOUND) + message(STATUS "Enable support for Cholmod") + set(CHOLMOD_FOUND TRUE) +@@ -128,7 +128,8 @@ endif() + + # For building the CSparse based solvers. Note this depends on an LGPL library. + option(G2O_USE_CSPARSE "Build g2o with CSParse support" ON) +-find_package(CSparse) ++find_package(CSPARSE NAMES CXSparse REQUIRED) ++set(CSPARSE_LIBRARY SuiteSparse::CXSparse) + if (${G2O_USE_CSPARSE} AND ${CSPARSE_FOUND} AND ${G2O_USE_LGPL_LIBS}) + message(STATUS "Enable support for CSparse") + else() +diff --git a/cmake_modules/Config.cmake.in b/cmake_modules/Config.cmake.in +index efeb3bd..f8ab1ad 100644 +--- a/cmake_modules/Config.cmake.in ++++ b/cmake_modules/Config.cmake.in +@@ -1,4 +1,6 @@ + include(CMakeFindDependencyMacro) ++find_dependency(CHOLMOD CONFIG) ++find_dependency(CXSparse CONFIG) + + find_dependency(Eigen3) + diff --git a/vcpkg/ports/g2o/fix-absolute.patch b/vcpkg/ports/g2o/fix-absolute.patch new file mode 100644 index 0000000..3faabf8 --- /dev/null +++ b/vcpkg/ports/g2o/fix-absolute.patch @@ -0,0 +1,22 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c2b0a09..8c62d5a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -492,7 +492,8 @@ set(G2O_HAVE_CHOLMOD ${CHOLMOD_FOUND}) + set(G2O_HAVE_CSPARSE ${G2O_USE_CSPARSE}) + set(G2O_SHARED_LIBS ${BUILD_SHARED_LIBS}) + set(G2O_LGPL_SHARED_LIBS ${BUILD_LGPL_SHARED_LIBS}) +-set(G2O_CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER}") ++cmake_path(GET CMAKE_CXX_COMPILER FILENAME cxx_compiler) ++set(G2O_CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${cxx_compiler}") + + # Generate cmake configuration scripts + set(G2O_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated") +@@ -501,7 +502,6 @@ set(G2O_PROJECT_CONFIG "${G2O_GENERATED_DIR}/${PROJECT_NAME}Config.cmake") + set(G2O_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") + set(G2O_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}") + set(G2O_NAMESPACE "${PROJECT_NAME}::") +-set(G2O_SRC_DIR "${PROJECT_SOURCE_DIR}") + + include(CMakePackageConfigHelpers) + WRITE_BASIC_PACKAGE_VERSION_FILE( diff --git a/vcpkg/ports/g2o/portfile.cmake b/vcpkg/ports/g2o/portfile.cmake new file mode 100644 index 0000000..0aefcfb --- /dev/null +++ b/vcpkg/ports/g2o/portfile.cmake @@ -0,0 +1,77 @@ +string(REPLACE "-" "" GIT_TAG "${VERSION}_git") + +vcpkg_download_distfile(FIX_UPSTREAM_37d17a9 + URLS https://github.com/RainerKuemmerle/g2o/commit/37d17a94594648acf9cce85e8483c0405c510f0d.patch?full_index=1 + SHA512 dc333fa43770fbdfc98592b4beb0ff03fdb033990b7054ae65953bad31899d11053fe08977526d70fa7fdf299ad0d2368ed79f29b9db847fdca3ff4e3d0415d9 + FILENAME g2o-37d17a94594648acf9cce85e8483c0405c510f0d.patch +) + +vcpkg_download_distfile(FIX_UPSTREAM_100af05 + URLS https://github.com/RainerKuemmerle/g2o/commit/100af05931ae3497f39ab42cbeba240f50cc7b66.patch?full_index=1 + SHA512 bc837081f14476e28e638de097fa7d8d44fa336d6f126391b4856dbfb6165d4fc89bf5a16d7e165a846288700596fd8d550c0a478bb7eb52d612d5d1ef62cbed + FILENAME g2o-100af05931ae3497f39ab42cbeba240f50cc7b66.patch +) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO RainerKuemmerle/g2o + REF eec325a1da1273e87bc97887d49e70570f28570c + SHA512 22d3d546fbc92bff4767b66dcc9a001b5ed0cac0787874dda8712140aa03004b0312f702ea7d61c5fdcfa0bb00654c873f8b99899cd9e2b89667d8d99667d5cd + HEAD_REF master + PATCHES + dependencies.diff + fix-absolute.patch + "${FIX_UPSTREAM_37d17a9}" + "${FIX_UPSTREAM_100af05}" +) +file(REMOVE + "${SOURCE_PATH}/cmake_modules/FindBLAS.cmake" + "${SOURCE_PATH}/cmake_modules/FindCSparse.cmake" +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_LGPL_SHARED_LIBS) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + spdlog G2O_USE_LOGGING + spdlog VCPKG_LOCK_FIND_PACKAGE_spdlog +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${FEATURE_OPTIONS} + -DBUILD_LGPL_SHARED_LIBS=${BUILD_LGPL_SHARED_LIBS} + -DG2O_BUILD_APPS=OFF + -DG2O_BUILD_EXAMPLES=OFF + -DVCPKG_LOCK_FIND_PACKAGE_QGLViewer=OFF + MAYBE_UNUSED_VARIABLES + VCPKG_LOCK_FIND_PACKAGE_spdlog +) +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/g2o") + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + file(GLOB_RECURSE HEADERS "${CURRENT_PACKAGES_DIR}/include/*") + foreach(HEADER IN LISTS HEADERS) + vcpkg_replace_string("${HEADER}" "#ifdef G2O_SHARED_LIBS" "#if 1" IGNORE_UNCHANGED) + endforeach() +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +file(READ "${SOURCE_PATH}/README.md" readme) +string(REGEX REPLACE "^.*## License" "" readme "${readme}") +string(REGEX REPLACE "\n##.*" "" readme "${readme}") +string(STRIP "${readme}" readme) +set(ceres_license "${CURRENT_PACKAGES_DIR}/include/g2o/autodiff/Ceres Solver in autodiff") +file(RENAME "${CURRENT_PACKAGES_DIR}/include/g2o/autodiff/LICENSE" "${ceres_license}") +vcpkg_install_copyright( + COMMENT "${readme}" + FILE_LIST + "${SOURCE_PATH}/doc/license-bsd.txt" + "${ceres_license}" + "${SOURCE_PATH}/doc/license-lgpl.txt" +) +file(REMOVE "${ceres_license}") diff --git a/vcpkg/ports/g2o/vcpkg.json b/vcpkg/ports/g2o/vcpkg.json new file mode 100644 index 0000000..e0831cb --- /dev/null +++ b/vcpkg/ports/g2o/vcpkg.json @@ -0,0 +1,32 @@ +{ + "name": "g2o", + "version-date": "2024-12-14", + "port-version": 5, + "description": "g2o: A General Framework for Graph Optimization", + "homepage": "https://openslam.org/g2o.html", + "license": null, + "supports": "!uwp", + "dependencies": [ + "ceres", + "eigen3", + "lapack", + "suitesparse-cholmod", + "suitesparse-cxsparse", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "spdlog": { + "description": "Use spdlog for logging", + "dependencies": [ + "spdlog" + ] + } + } +} |