Skip to content

Commit

Permalink
(#11122) Added gtsam 4.1.1
Browse files Browse the repository at this point in the history
* Added gtsam 4.1.1

* 4.1.1: Disable shared builds on MSVC

* Added ref to GTSAM about missing MSVC support

Co-authored-by: Chris Mc <prince.chrismc@gmail.com>

* gtsam: Use tools.is_msvc

Co-authored-by: Chris Mc <prince.chrismc@gmail.com>
  • Loading branch information
martinvl and prince-chrismc authored Jul 25, 2022
1 parent 06927ee commit 2083d54
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 8 deletions.
8 changes: 8 additions & 0 deletions recipes/gtsam/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
sources:
"4.1.1":
url: "https://github.com/borglab/gtsam/archive/4.1.1.tar.gz"
sha256: "c7b5e6cdad52b141c272778f47baf628975457be3e26ed96a7bc2ae685a00af0"
"4.0.3":
url: "https://github.com/borglab/gtsam/archive/4.0.3.tar.gz"
sha256: "eaa561749edf7a2d402981828253e28aed6c717dae35738301c5ab23e2595f25"
"4.0.2":
url: "https://github.com/borglab/gtsam/archive/4.0.2.tar.gz"
sha256: "8770a440f1af98c3f0d9d4dffd568de2d4c21b245e7231e987e26bc236aeb5aa"
patches:
"4.1.1":
- patch_file: "patches/0001-conan-4.1.1.patch"
base_path: "source_subfolder"
- patch_file: "patches/0002-macos-rpath-4.1.1.patch"
base_path: "source_subfolder"
"4.0.3":
- patch_file: "patches/0001-conan-4.0.3.patch"
base_path: "source_subfolder"
Expand Down
16 changes: 8 additions & 8 deletions recipes/gtsam/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from conan.tools.microsoft import msvc_runtime_flag
from conan.tools.microsoft import msvc_runtime_flag, is_msvc
from conans import ConanFile, tools, CMake
from conans.errors import ConanInvalidConfiguration
import os
Expand Down Expand Up @@ -77,10 +77,6 @@ def _source_subfolder(self):
def _build_subfolder(self):
return "build_subfolder"

@property
def _is_msvc(self):
return str(self.settings.compiler) in ["Visual Studio", "msvc"]

def export_sources(self):
self.copy("CMakeLists.txt")
for patch in self.conan_data.get("patches", {}).get(self.version, []):
Expand Down Expand Up @@ -118,17 +114,21 @@ def validate(self):
if self.options.with_TBB and not self.options["onetbb"].tbbmalloc:
raise ConanInvalidConfiguration("gtsam with tbb requires onetbb:tbbmalloc=True")

if self.settings.compiler == "Visual Studio" and tools.Version(self.settings.compiler.version) < 15:
if is_msvc(self) and tools.Version(self.settings.compiler.version) < 15:
raise ConanInvalidConfiguration ("GTSAM requires MSVC >= 15")

if is_msvc(self) and tools.Version(self.version) >= '4.1' \
and self.options.shared:
raise ConanInvalidConfiguration("GTSAM does not support shared builds on MSVC. see https://github.com/borglab/gtsam/issues/1087")

def source(self):
tools.get(**self.conan_data["sources"][self.version],
destination=self._source_subfolder, strip_root=True)

def _patch_sources(self):
for patch in self.conan_data.get("patches", {}).get(self.version, []):
tools.patch(**patch)
if self._is_msvc:
if is_msvc(self):
tools.replace_in_file(os.path.join(self._source_subfolder, "cmake", "GtsamBuildTypes.cmake"),
"/MD ",
"/{} ".format(msvc_runtime_flag(self)))
Expand Down Expand Up @@ -217,7 +217,7 @@ def _module_file_rel_path(self):
def package_info(self):
self.cpp_info.set_property("cmake_file_name", "GTSAM")

prefix = "lib" if self._is_msvc and not self.options.shared else ""
prefix = "lib" if is_msvc(self) and not self.options.shared else ""

self.cpp_info.components["libgtsam"].set_property("cmake_target_name", "gtsam")
self.cpp_info.components["libgtsam"].libs = ["{}gtsam".format(prefix)]
Expand Down
27 changes: 27 additions & 0 deletions recipes/gtsam/all/patches/0001-conan-4.1.1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
diff --git a/cmake/HandleBoost.cmake b/cmake/HandleBoost.cmake
--- a/cmake/HandleBoost.cmake
+++ b/cmake/HandleBoost.cmake
@@ -25,13 +25,7 @@ endif()
set(BOOST_FIND_MINIMUM_VERSION 1.65)
set(BOOST_FIND_MINIMUM_COMPONENTS serialization system filesystem thread program_options date_time timer chrono regex)

-find_package(Boost ${BOOST_FIND_MINIMUM_VERSION} COMPONENTS ${BOOST_FIND_MINIMUM_COMPONENTS})
-
-# Required components
-if(NOT Boost_SERIALIZATION_LIBRARY OR NOT Boost_SYSTEM_LIBRARY OR NOT Boost_FILESYSTEM_LIBRARY OR
- NOT Boost_THREAD_LIBRARY OR NOT Boost_DATE_TIME_LIBRARY)
- message(FATAL_ERROR "Missing required Boost components >= v1.65, please install/upgrade Boost or configure your search paths.")
-endif()
+find_package(Boost ${BOOST_FIND_MINIMUM_VERSION} COMPONENTS ${BOOST_FIND_MINIMUM_COMPONENTS} REQUIRED)

option(GTSAM_DISABLE_NEW_TIMERS "Disables using Boost.chrono for timing" OFF)
# Allow for not using the timer libraries on boost < 1.48 (GTSAM timing code falls back to old timer library)
@@ -47,7 +41,7 @@ if (GTSAM_DISABLE_NEW_TIMERS)
message("WARNING: GTSAM timing instrumentation manually disabled")
list_append_cache(GTSAM_COMPILE_DEFINITIONS_PUBLIC DGTSAM_DISABLE_NEW_TIMERS)
else()
- if(Boost_TIMER_LIBRARY)
+ if(TARGET Boost::timer)
list(APPEND GTSAM_BOOST_LIBRARIES Boost::timer Boost::chrono)
else()
list(APPEND GTSAM_BOOST_LIBRARIES rt) # When using the header-only boost timer library, need -lrt
27 changes: 27 additions & 0 deletions recipes/gtsam/all/patches/0002-macos-rpath-4.1.1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,6 @@ cmake_minimum_required(VERSION 3.0)
# new feature to Cmake Version > 2.8.12
# Mac ONLY. Define Relative Path on Mac OS
if(NOT DEFINED CMAKE_MACOSX_RPATH)
- set(CMAKE_MACOSX_RPATH 0)
endif()

# Set the version number for the library
diff --git a/gtsam/3rdparty/metis/libmetis/CMakeLists.txt b/gtsam/3rdparty/metis/libmetis/CMakeLists.txt
--- a/gtsam/3rdparty/metis/libmetis/CMakeLists.txt
+++ b/gtsam/3rdparty/metis/libmetis/CMakeLists.txt
@@ -16,12 +16,6 @@ if(WIN32)
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/../../../bin")
endif()

-if (APPLE)
- set_target_properties(metis-gtsam PROPERTIES
- INSTALL_NAME_DIR
- "${CMAKE_INSTALL_PREFIX}/lib")
- endif()
-
install(TARGETS metis-gtsam EXPORT GTSAM-exports
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
2 changes: 2 additions & 0 deletions recipes/gtsam/config.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
versions:
"4.1.1":
folder: all
"4.0.3":
folder: all
"4.0.2":
Expand Down

0 comments on commit 2083d54

Please sign in to comment.