aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/g2o
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/g2o')
-rw-r--r--vcpkg/ports/g2o/dependencies.diff34
-rw-r--r--vcpkg/ports/g2o/fix-absolute.patch22
-rw-r--r--vcpkg/ports/g2o/portfile.cmake77
-rw-r--r--vcpkg/ports/g2o/vcpkg.json32
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"
+ ]
+ }
+ }
+}