aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/gtsam
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/gtsam
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/gtsam')
-rw-r--r--vcpkg/ports/gtsam/build-fixes.patch73
-rw-r--r--vcpkg/ports/gtsam/path-fixes.patch33
-rw-r--r--vcpkg/ports/gtsam/portfile.cmake39
-rw-r--r--vcpkg/ports/gtsam/usage4
-rw-r--r--vcpkg/ports/gtsam/vcpkg.json34
5 files changed, 183 insertions, 0 deletions
diff --git a/vcpkg/ports/gtsam/build-fixes.patch b/vcpkg/ports/gtsam/build-fixes.patch
new file mode 100644
index 0000000..70d9a32
--- /dev/null
+++ b/vcpkg/ports/gtsam/build-fixes.patch
@@ -0,0 +1,73 @@
+diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in
+index cc2a7df8f..e11de1815 100644
+--- a/cmake/Config.cmake.in
++++ b/cmake/Config.cmake.in
+@@ -25,6 +25,14 @@ if(@GTSAM_USE_SYSTEM_EIGEN@)
+ find_dependency(Eigen3 REQUIRED)
+ endif()
+
++if(@GTSAM_USE_SYSTEM_METIS@)
++find_dependency(metis REQUIRED)
++endif()
++
++if(@GTSAM_USE_TBB@)
++find_dependency(TBB REQUIRED)
++endif()
++
+ # Load exports
+ include(${OUR_CMAKE_DIR}/@PACKAGE_NAME@-exports.cmake)
+
+diff --git a/cmake/FindTBB.cmake b/cmake/FindTBB.cmake
+index 0ecd4ca0e..725589a2d 100644
+--- a/cmake/FindTBB.cmake
++++ b/cmake/FindTBB.cmake
+@@ -1,3 +1,4 @@
++if(0)
+ # The MIT License (MIT)
+ #
+ # Copyright (c) 2015 Justus Calvin
+@@ -321,3 +322,4 @@ if(NOT TBB_FOUND)
+ unset(TBB_DEFAULT_SEARCH_DIR)
+
+ endif()
++endif()
+\ No newline at end of file
+diff --git a/cmake/HandleMetis.cmake b/cmake/HandleMetis.cmake
+index 5cbec4ff5..10dbb53de 100644
+--- a/cmake/HandleMetis.cmake
++++ b/cmake/HandleMetis.cmake
+@@ -13,10 +13,9 @@ option(GTSAM_USE_SYSTEM_METIS "Find and use system-installed libmetis. If 'off',
+ if(GTSAM_USE_SYSTEM_METIS)
+ # Debian package: libmetis-dev
+
+- find_path(METIS_INCLUDE_DIR metis.h REQUIRED)
+- find_library(METIS_LIBRARY metis REQUIRED)
++ find_package(metis CONFIG REQUIRED)
+
+- if(METIS_INCLUDE_DIR AND METIS_LIBRARY)
++ if(metis_FOUND)
+ mark_as_advanced(METIS_INCLUDE_DIR)
+ mark_as_advanced(METIS_LIBRARY)
+
+@@ -27,7 +26,7 @@ if(GTSAM_USE_SYSTEM_METIS)
+ $<BUILD_INTERFACE:${GTSAM_SOURCE_DIR}/gtsam/3rdparty/metis/libmetis>
+ $<BUILD_INTERFACE:${GTSAM_SOURCE_DIR}/gtsam/3rdparty/metis/GKlib>
+ )
+- target_link_libraries(metis-gtsam-if INTERFACE ${METIS_LIBRARY})
++ target_link_libraries(metis-gtsam-if INTERFACE ${METIS_LIBRARY} metis)
+ endif()
+ else()
+ # Bundled version:
+diff --git a/cmake/HandleTBB.cmake b/cmake/HandleTBB.cmake
+index fb944ba5b..393aeb345 100644
+--- a/cmake/HandleTBB.cmake
++++ b/cmake/HandleTBB.cmake
+@@ -14,7 +14,7 @@ if (GTSAM_WITH_TBB)
+ endif()
+ # all definitions and link requisites will go via imported targets:
+ # tbb & tbbmalloc
+- list(APPEND GTSAM_ADDITIONAL_LIBRARIES tbb tbbmalloc)
++ list(APPEND GTSAM_ADDITIONAL_LIBRARIES TBB::tbb TBB::tbbmalloc)
+ else()
+ set(GTSAM_USE_TBB 0) # This will go into config.h
+ endif()
diff --git a/vcpkg/ports/gtsam/path-fixes.patch b/vcpkg/ports/gtsam/path-fixes.patch
new file mode 100644
index 0000000..5fc9784
--- /dev/null
+++ b/vcpkg/ports/gtsam/path-fixes.patch
@@ -0,0 +1,33 @@
+diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in
+index e11de1815..a25a9883d 100644
+--- a/cmake/Config.cmake.in
++++ b/cmake/Config.cmake.in
+@@ -4,13 +4,8 @@
+
+ # Compute paths
+ get_filename_component(OUR_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+-if(EXISTS "${OUR_CMAKE_DIR}/CMakeCache.txt")
+- # In build tree
+- set(@PACKAGE_NAME@_INCLUDE_DIR @GTSAM_SOURCE_DIR@ CACHE PATH "@PACKAGE_NAME@ include directory")
+-else()
+- # Find installed library
+- set(@PACKAGE_NAME@_INCLUDE_DIR "${OUR_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@" CACHE PATH "@PACKAGE_NAME@ include directory")
+-endif()
++# Find installed library
++set(@PACKAGE_NAME@_INCLUDE_DIR "${OUR_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@" CACHE PATH "@PACKAGE_NAME@ include directory")
+
+ # Find dependencies, required by cmake exported targets:
+ include(CMakeFindDependencyMacro)
+diff --git a/gtsam/config.h.in b/gtsam/config.h.in
+index d47329a62..60ca62931 100644
+--- a/gtsam/config.h.in
++++ b/gtsam/config.h.in
+@@ -25,7 +25,7 @@
+ #define GTSAM_VERSION_STRING "@GTSAM_VERSION_STRING@"
+
+ // Paths to example datasets distributed with GTSAM
+-#define GTSAM_SOURCE_TREE_DATASET_DIR "@GTSAM_SOURCE_DIR@/examples/Data"
++#define GTSAM_SOURCE_TREE_DATASET_DIR ""
+ #define GTSAM_INSTALLED_DATASET_DIR "@GTSAM_TOOLBOX_INSTALL_PATH@/gtsam_examples/Data"
+
+ // Whether GTSAM is compiled to use quaternions for Rot3 (otherwise uses rotation matrices)
diff --git a/vcpkg/ports/gtsam/portfile.cmake b/vcpkg/ports/gtsam/portfile.cmake
new file mode 100644
index 0000000..32e36fa
--- /dev/null
+++ b/vcpkg/ports/gtsam/portfile.cmake
@@ -0,0 +1,39 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO borglab/gtsam
+ REF ${VERSION}
+ SHA512 c0e5de8d86ea8241b49449bd291999ec0d6530bc9943b213e7c650b0ab29894ab53636bd1a0ed82d9d9d148dfc399ebff28e108b060d2d2176b584823bd722cd
+ HEAD_REF develop
+ PATCHES
+ build-fixes.patch
+ path-fixes.patch
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DGTSAM_BUILD_TESTS=OFF
+ -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF
+ -DGTSAM_BUILD_TIMING_ALWAYS=OFF
+ -DGTSAM_BUILD_UNSTABLE=OFF
+ -DGTSAM_UNSTABLE_BUILD_PYTHON=OFF
+ -DGTSAM_USE_SYSTEM_EIGEN=ON
+ -DGTSAM_USE_SYSTEM_METIS=ON
+ -DGTSAM_INSTALL_CPPUNITLITE=OFF
+ -DGTSAM_BUILD_TYPE_POSTFIXES=OFF
+ -DCMAKE_CXX_STANDARD=14 # Boost-math require C++14
+)
+
+vcpkg_cmake_install()
+if(VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_cmake_config_fixup(PACKAGE_NAME GTSAM CONFIG_PATH CMake)
+else()
+ vcpkg_cmake_config_fixup(PACKAGE_NAME GTSAM CONFIG_PATH lib/cmake/GTSAM)
+endif()
+vcpkg_copy_pdbs()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE" "${SOURCE_PATH}/LICENSE.BSD")
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
diff --git a/vcpkg/ports/gtsam/usage b/vcpkg/ports/gtsam/usage
new file mode 100644
index 0000000..d184d35
--- /dev/null
+++ b/vcpkg/ports/gtsam/usage
@@ -0,0 +1,4 @@
+The package gtsam is compatible with built-in CMake targets:
+
+ find_package(GTSAM CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE gtsam)
diff --git a/vcpkg/ports/gtsam/vcpkg.json b/vcpkg/ports/gtsam/vcpkg.json
new file mode 100644
index 0000000..b70de3b
--- /dev/null
+++ b/vcpkg/ports/gtsam/vcpkg.json
@@ -0,0 +1,34 @@
+{
+ "name": "gtsam",
+ "version": "4.2.0",
+ "port-version": 1,
+ "description": "GTSAM is a library of C++ classes that implement smoothing and mapping (SAM) in robotics and vision, using factor graphs and Bayes networks as the underlying computing paradigm rather than sparse matrices.",
+ "homepage": "https://github.com/borglab/gtsam",
+ "license": "BSD-3-Clause",
+ "dependencies": [
+ "boost-assign",
+ "boost-bimap",
+ "boost-date-time",
+ "boost-filesystem",
+ "boost-format",
+ "boost-graph",
+ "boost-math",
+ "boost-program-options",
+ "boost-regex",
+ "boost-serialization",
+ "boost-system",
+ "boost-thread",
+ "boost-timer",
+ "eigen3",
+ "metis",
+ "tbb",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}