2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								project ( GTSAM  CXX  C ) 
  
						 
					
						
							
								
									
										
										
										
											2019-01-15 07:38:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								cmake_minimum_required ( VERSION  3.0 ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 11:27:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# new feature to Cmake Version > 2.8.12
  
						 
					
						
							
								
									
										
										
										
											2014-10-23 11:42:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Mac ONLY. Define Relative Path on Mac OS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( NOT  DEFINED  CMAKE_MACOSX_RPATH ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set ( CMAKE_MACOSX_RPATH  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2014-10-23 11:27:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Set the version number for the library
  
						 
					
						
							
								
									
										
										
										
											2014-11-14 09:27:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								set  ( GTSAM_VERSION_MAJOR  4 ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-22 09:36:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								set  ( GTSAM_VERSION_MINOR  1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set  ( GTSAM_VERSION_PATCH  0 ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								math  ( EXPR  GTSAM_VERSION_NUMERIC  "10000 * ${GTSAM_VERSION_MAJOR} + 100 * ${GTSAM_VERSION_MINOR} + ${GTSAM_VERSION_PATCH}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set  ( GTSAM_VERSION_STRING  "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Gather information, perform checks, set defaults
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Set the default install path to home
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#set (CMAKE_INSTALL_PREFIX ${HOME} CACHE PATH "Install prefix for library")
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CMAKE_MODULE_PATH  "${CMAKE_MODULE_PATH}"  "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include ( GtsamMakeConfigFile ) 
  
						 
					
						
							
								
									
										
										
										
											2020-05-29 06:09:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								include ( GNUInstallDirs ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Record the root dir for gtsam - needed during external builds, e.g., ROS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( GTSAM_SOURCE_ROOT_DIR  ${ CMAKE_CURRENT_SOURCE_DIR } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								message ( STATUS  "GTSAM_SOURCE_ROOT_DIR: [${GTSAM_SOURCE_ROOT_DIR}]" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Load build type flags and default to Debug mode
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include ( GtsamBuildTypes ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Use macros for creating tests/timing scripts
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include ( GtsamTesting ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include ( GtsamPrinting ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# guard against in-source builds
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( ${ CMAKE_SOURCE_DIR }  STREQUAL  ${ CMAKE_BINARY_DIR } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  message ( FATAL_ERROR  "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt. " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-13 02:40:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# See whether gtsam_unstable is available (it will be present only if we're using a git checkout)
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( EXISTS  "${PROJECT_SOURCE_DIR}/gtsam_unstable"  AND  IS_DIRECTORY  "${PROJECT_SOURCE_DIR}/gtsam_unstable" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( GTSAM_UNSTABLE_AVAILABLE  1 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( GTSAM_UNSTABLE_AVAILABLE  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-10 18:41:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   Uninstall target, for "make uninstall"
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								configure_file (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e / c m a k e _ u n i n s t a l l . c m a k e . i n " 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e " 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  I M M E D I A T E  @ O N L Y ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add_custom_target ( uninstall  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " $ { C M A K E _ C O M M A N D } "  - P  " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Set up options
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Configurable Options
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GTSAM_UNSTABLE_AVAILABLE ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    option ( GTSAM_BUILD_UNSTABLE               "Enable/Disable libgtsam_unstable"           ON ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    option ( GTSAM_UNSTABLE_BUILD_PYTHON        "Enable/Disable Python wrapper for libgtsam_unstable"  ON ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    option ( GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX  "Enable/Disable MATLAB wrapper for libgtsam_unstable"  OFF ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2018-12-21 20:04:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( BUILD_SHARED_LIBS                  "Build shared gtsam library, instead of static"  ON ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_USE_QUATERNIONS              "Enable/Disable using an internal Quaternion representation for rotations instead of rotation matrices. If enable, Rot3::EXPMAP is enforced by default."  OFF ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_POSE3_EXPMAP                 "Enable/Disable using Pose3::EXPMAP as the default mode. If disabled, Pose3::FIRST_ORDER will be used."  ON ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								option ( GTSAM_ROT3_EXPMAP                  "Ignore if GTSAM_USE_QUATERNIONS is OFF (Rot3::EXPMAP by default). Otherwise, enable Rot3::EXPMAP, or if disabled, use Rot3::CAYLEY."  ON ) 
  
						 
					
						
							
								
									
										
										
										
											2014-10-15 07:14:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_ENABLE_CONSISTENCY_CHECKS    "Enable/Disable expensive consistency checks"        OFF ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_WITH_TBB                     "Use Intel Threaded Building Blocks (TBB) if available"  ON ) 
  
						 
					
						
							
								
									
										
										
										
											2019-03-13 00:22:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_WITH_EIGEN_MKL               "Eigen will use Intel MKL if available"  OFF ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								option ( GTSAM_WITH_EIGEN_MKL_OPENMP        "Eigen, when using Intel MKL, will also use OpenMP for multithreading if available"  OFF ) 
  
						 
					
						
							
								
									
										
										
										
											2020-02-07 12:56:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_THROW_CHEIRALITY_EXCEPTION   "Throw exception when a triangulated point is behind a camera"  ON ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_BUILD_PYTHON                 "Enable/Disable building & installation of Python module with pybind11"  OFF ) 
  
						 
					
						
							
								
									
										
										
										
											2020-07-23 05:32:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_ALLOW_DEPRECATED_SINCE_V41   "Allow use of methods/functions deprecated in GTSAM 4.1"  ON ) 
  
						 
					
						
							
								
									
										
										
										
											2016-02-25 03:01:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_SUPPORT_NESTED_DISSECTION    "Support Metis-based nested dissection"  ON ) 
  
						 
					
						
							
								
									
										
										
										
											2016-05-16 04:15:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_TANGENT_PREINTEGRATION       "Use new ImuFactor with integration on tangent space"  ON ) 
  
						 
					
						
							
								
									
										
										
										
											2018-12-19 07:03:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( NOT  MSVC  AND  NOT  XCODE_VERSION ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    option ( GTSAM_BUILD_WITH_CCACHE            "Use ccache compiler cache"  ON ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-21 03:18:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( NOT  MSVC  AND  NOT  XCODE_VERSION ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Set the build type to upper case for downstream use
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  string ( TOUPPER  "${CMAKE_BUILD_TYPE}"  CMAKE_BUILD_TYPE_UPPER ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Set the GTSAM_BUILD_TAG variable.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # If build type is Release, set to blank (""), else set to the build type.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-29 02:22:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if ( ${ CMAKE_BUILD_TYPE_UPPER }  STREQUAL  "RELEASE" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-21 03:18:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   set ( GTSAM_BUILD_TAG  "" )  # Don't create release mode tag on installed directory
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   set ( GTSAM_BUILD_TAG  "${CMAKE_BUILD_TYPE}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-13 03:01:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Options relating to MATLAB wrapper
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# TODO: Check for matlab mex binary before handling building of binaries
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								option ( GTSAM_INSTALL_MATLAB_TOOLBOX       "Enable/Disable installation of matlab toolbox"   OFF ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								set ( GTSAM_PYTHON_VERSION  "Default"  CACHE  STRING  "The version of Python to build the wrappers against." ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Check / set dependent variables for MATLAB wrapper
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_INSTALL_MATLAB_TOOLBOX  AND  GTSAM_BUILD_TYPE_POSTFIXES ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( CURRENT_POSTFIX  ${ CMAKE_${CMAKE_BUILD_TYPE_UPPER } _POSTFIX} ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-17 21:54:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-21 20:04:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_INSTALL_MATLAB_TOOLBOX  AND  NOT  BUILD_SHARED_LIBS ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( FATAL_ERROR  "GTSAM_INSTALL_MATLAB_TOOLBOX and BUILD_SHARED_LIBS=OFF. The MATLAB wrapper cannot be compiled with a static GTSAM library because mex modules are themselves shared libraries.  If you want a self-contained mex module, enable GTSAM_MEX_BUILD_STATIC_MODULE instead of BUILD_SHARED_LIBS=OFF." ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-31 03:41:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_BUILD_PYTHON ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( GTSAM_UNSTABLE_BUILD_PYTHON ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( NOT  GTSAM_BUILD_UNSTABLE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message ( WARNING  "GTSAM_UNSTABLE_BUILD_PYTHON requires the unstable module to be enabled." ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set ( GTSAM_UNSTABLE_BUILD_PYTHON  OFF ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_PY_INSTALL_PATH  "${CMAKE_INSTALL_PREFIX}/python" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-17 19:03:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Flags for choosing default packaging tools
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_SOURCE_GENERATOR  "TGZ"  CACHE  STRING  "CPack Default Source Generator" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_GENERATOR         "TGZ"  CACHE  STRING  "CPack Default Binary Generator" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( CMAKE_GENERATOR  STREQUAL  "Ninja"  AND  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( ( C M A K E _ C X X _ C O M P I L E R _ I D  S T R E Q U A L  " G N U "  A N D  N O T  C M A K E _ C X X _ C O M P I L E R _ V E R S I O N  V E R S I O N _ L E S S  4 . 9 )  O R 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     ( C M A K E _ C X X _ C O M P I L E R _ I D  S T R E Q U A L  " C l a n g "  A N D  N O T  C M A K E _ C X X _ C O M P I L E R _ V E R S I O N  V E R S I O N _ L E S S  3 . 5 ) ) ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Force colored warnings in Ninja's output, if the compiler has -fdiagnostics-color support.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Rationale in https://github.com/ninja-build/ninja/issues/814
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    add_compile_options ( -fdiagnostics-color=always ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Find boost
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# To change the path for boost, you will need to set:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# BOOST_ROOT: path to install prefix for boost
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Boost_NO_SYSTEM_PATHS: set to true to keep the find script from ignoring BOOST_ROOT
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( MSVC ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # By default, boost only builds static libraries on windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( Boost_USE_STATIC_LIBS  ON )   # only find static libs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # If we ever reset above on windows and, ...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # If we use Boost shared libs, disable auto linking.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Some libraries, at least Boost Program Options, rely on this to export DLL symbols.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( NOT  Boost_USE_STATIC_LIBS ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        list_append_cache ( GTSAM_COMPILE_DEFINITIONS_PUBLIC  BOOST_ALL_NO_LIB  BOOST_ALL_DYN_LINK ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Virtual memory range for PCH exceeded on VS2015
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( MSVC_VERSION  LESS  1910 )  # older than VS2017
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      list_append_cache ( GTSAM_COMPILE_OPTIONS_PRIVATE  -Zm295 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-10 18:41:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# If building DLLs in MSVC, we need to avoid EIGEN_STATIC_ASSERT()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# or explicit instantiation will generate build errors.
  
						 
					
						
							
								
									
										
										
										
											2019-04-19 02:25:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# See: https://bitbucket.org/gtborg/gtsam/issues/417/fail-to-build-on-msvc-2017
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( MSVC  AND  BUILD_SHARED_LIBS ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list_append_cache ( GTSAM_COMPILE_DEFINITIONS_PUBLIC  EIGEN_NO_STATIC_ASSERT ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-19 02:25:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-09 05:18:21 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Store these in variables so they are automatically replicated in GTSAMConfig.cmake and such.
  
						 
					
						
							
								
									
										
										
										
											2020-09-04 00:00:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								set ( BOOST_FIND_MINIMUM_VERSION  1.58 ) 
  
						 
					
						
							
								
									
										
										
										
											2019-02-09 05:18:21 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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 } ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Required components
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( NOT  Boost_SERIALIZATION_LIBRARY  OR  NOT  Boost_SYSTEM_LIBRARY  OR  NOT  Boost_FILESYSTEM_LIBRARY  OR  
						 
					
						
							
								
									
										
										
										
											2016-08-29 05:07:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    N O T  B o o s t _ T H R E A D _ L I B R A R Y  O R  N O T  B o o s t _ D A T E _ T I M E _ L I B R A R Y ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-04 00:00:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  message ( FATAL_ERROR  "Missing required Boost components >= v1.58, please install/upgrade Boost or configure your search paths." ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-08 16:22:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_DISABLE_NEW_TIMERS  "Disables using Boost.chrono for timing"  OFF ) 
  
						 
					
						
							
								
									
										
										
										
											2019-10-07 17:21:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Allow for not using the timer libraries on boost < 1.48 (GTSAM timing code falls back to old timer library)
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								set ( GTSAM_BOOST_LIBRARIES  
						 
					
						
							
								
									
										
										
										
											2019-10-07 17:21:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  B o o s t : : s e r i a l i z a t i o n 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  B o o s t : : s y s t e m 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  B o o s t : : f i l e s y s t e m 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  B o o s t : : t h r e a d 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  B o o s t : : d a t e _ t i m e 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  B o o s t : : r e g e x 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-15 07:38:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( GTSAM_DISABLE_NEW_TIMERS ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    message ( "WARNING:  GTSAM timing instrumentation manually disabled" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 17:02:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list_append_cache ( GTSAM_COMPILE_DEFINITIONS_PUBLIC  DGTSAM_DISABLE_NEW_TIMERS ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( Boost_TIMER_LIBRARY ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-07 17:21:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      list ( APPEND  GTSAM_BOOST_LIBRARIES  Boost::timer  Boost::chrono ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 03:20:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      list ( APPEND  GTSAM_BOOST_LIBRARIES  rt )  # When using the header-only boost timer library, need -lrt
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      message ( "WARNING:  GTSAM timing instrumentation will use the older, less accurate, Boost timer library because boost older than 1.48 was found." ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Find TBB
  
						 
					
						
							
								
									
										
										
										
											2019-05-27 03:15:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								find_package ( TBB  4.4  COMPONENTS  tbb  tbbmalloc ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Set up variables if we're using TBB
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( TBB_FOUND  AND  GTSAM_WITH_TBB ) 
  
						 
					
						
							
								
									
										
										
										
											2020-03-27 01:46:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_USE_TBB  1 )   # This will go into config.h
 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-02 04:52:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ( ${ TBB_VERSION_MAJOR }  GREATER  2020 )  OR  ( ${ TBB_VERSION_MAJOR }  EQUAL  2020 ) ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-27 01:46:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        set ( TBB_GREATER_EQUAL_2020  1 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( TBB_GREATER_EQUAL_2020  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # all definitions and link requisites will go via imported targets:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # tbb & tbbmalloc
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    list ( APPEND  GTSAM_ADDITIONAL_LIBRARIES  tbb  tbbmalloc ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-03-27 01:46:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_USE_TBB  0 )   # This will go into config.h
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-18 04:23:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Prohibit Timing build mode in combination with TBB
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GTSAM_USE_TBB  AND  ( CMAKE_BUILD_TYPE   STREQUAL  "Timing" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      message ( FATAL_ERROR  "Timing build mode cannot be used together with TBB. Use a sampling profiler such as Instruments or Intel VTune Amplifier instead." ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Find Google perftools
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								find_package ( GooglePerfTools ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-09 11:09:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Support ccache, if installed
  
						 
					
						
							
								
									
										
										
										
											2018-12-19 07:03:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( NOT  MSVC  AND  NOT  XCODE_VERSION ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    find_program ( CCACHE_FOUND  ccache ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( CCACHE_FOUND ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( GTSAM_BUILD_WITH_CCACHE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set_property ( GLOBAL  PROPERTY  RULE_LAUNCH_COMPILE  ccache ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set_property ( GLOBAL  PROPERTY  RULE_LAUNCH_LINK  ccache ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set_property ( GLOBAL  PROPERTY  RULE_LAUNCH_COMPILE  "" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set_property ( GLOBAL  PROPERTY  RULE_LAUNCH_LINK  "" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( CCACHE_FOUND ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-19 07:03:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Find MKL
  
						 
					
						
							
								
									
										
										
										
											2014-06-05 02:08:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								find_package ( MKL ) 
  
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-05 02:08:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( MKL_FOUND  AND  GTSAM_WITH_EIGEN_MKL ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( GTSAM_USE_EIGEN_MKL  1 )  # This will go into config.h
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( EIGEN_USE_MKL_ALL  1 )  # This will go into config.h - it makes Eigen use MKL
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    list ( APPEND  GTSAM_ADDITIONAL_LIBRARIES  ${ MKL_LIBRARIES } ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-25 03:01:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 23:43:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # --no-as-needed is required with gcc according to the MKL link advisor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( CMAKE_CXX_COMPILER_ID  STREQUAL  "GNU" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-25 03:01:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        set ( CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-as-needed" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 23:43:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-05 02:08:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( GTSAM_USE_EIGEN_MKL  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( EIGEN_USE_MKL_ALL  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
									
										
										
										
											2014-02-09 03:09:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Find OpenMP (if we're also using MKL)
  
						 
					
						
							
								
									
										
										
										
											2014-10-01 04:13:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								find_package ( OpenMP )   # do this here to generate correct message if disabled
  
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-01 04:13:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_WITH_EIGEN_MKL  AND  GTSAM_WITH_EIGEN_MKL_OPENMP  AND  GTSAM_USE_EIGEN_MKL ) 
  
						 
					
						
							
								
									
										
										
										
											2014-02-08 23:37:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( OPENMP_FOUND  AND  GTSAM_USE_EIGEN_MKL  AND  GTSAM_WITH_EIGEN_MKL_OPENMP ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( GTSAM_USE_EIGEN_MKL_OPENMP  1 )  # This will go into config.h
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 17:02:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        list_append_cache ( GTSAM_COMPILE_OPTIONS_PUBLIC  ${ OpenMP_CXX_FLAGS } ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-08 23:37:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Option for using system Eigen or GTSAM-bundled Eigen
  
						 
					
						
							
								
									
										
										
										
											2015-05-21 01:58:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### These patches only affect usage of MKL. If you want to enable MKL, you *must*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### use our patched version of Eigen
  
						 
					
						
							
								
									
										
										
										
											2013-12-23 02:21:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### See:  http://eigen.tuxfamily.org/bz/show_bug.cgi?id=704 (Householder QR MKL selection)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								###       http://eigen.tuxfamily.org/bz/show_bug.cgi?id=705 (Fix MKL LLT return code)
  
						 
					
						
							
								
									
										
										
										
											2015-03-10 08:01:47 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_USE_SYSTEM_EIGEN  "Find and use system-installed Eigen. If 'off', use the one bundled with GTSAM"  OFF ) 
  
						 
					
						
							
								
									
										
										
										
											2019-09-13 03:01:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GTSAM_WITH_EIGEN_UNSUPPORTED  "Install Eigen's unsupported modules"  OFF ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Switch for using system Eigen or GTSAM-bundled Eigen
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GTSAM_USE_SYSTEM_EIGEN ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    find_package ( Eigen3  REQUIRED ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-25 03:01:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Use generic Eigen include paths e.g. <Eigen/Core>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( GTSAM_EIGEN_INCLUDE_FOR_INSTALL  "${EIGEN3_INCLUDE_DIR}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-25 03:01:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # check if MKL is also enabled - can have one or the other, but not both!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Note: Eigen >= v3.2.5 includes our patches
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( EIGEN_USE_MKL_ALL  AND  ( EIGEN3_VERSION  VERSION_LESS  3.2.5 ) ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      message ( FATAL_ERROR  "MKL requires at least Eigen 3.2.5, and your system appears to have an older version. Disable GTSAM_USE_SYSTEM_EIGEN to use GTSAM's copy of Eigen, or disable GTSAM_WITH_EIGEN_MKL" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-12 02:56:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Check for Eigen version which doesn't work with MKL
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1527 for details.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( EIGEN_USE_MKL_ALL  AND  ( EIGEN3_VERSION  VERSION_EQUAL  3.3.4 ) ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message ( FATAL_ERROR  "MKL does not work with Eigen 3.3.4 because of a bug in Eigen. See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1527. Disable GTSAM_USE_SYSTEM_EIGEN to use GTSAM's copy of Eigen, disable GTSAM_WITH_EIGEN_MKL, or upgrade/patch your installation of Eigen." ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-12 02:56:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # The actual include directory (for BUILD cmake target interface):
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( GTSAM_EIGEN_INCLUDE_FOR_BUILD  "${EIGEN3_INCLUDE_DIR}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Use bundled Eigen include path.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Clear any variables set by FindEigen3
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( EIGEN3_INCLUDE_DIR ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( EIGEN3_INCLUDE_DIR  NOTFOUND  CACHE  STRING  ""  FORCE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-25 03:01:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # set full path to be used by external projects
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this will be added to GTSAM_INCLUDE_DIR by gtsam_extra.cmake.in
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( GTSAM_EIGEN_INCLUDE_FOR_INSTALL  "include/gtsam/3rdparty/Eigen/" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-25 03:01:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # The actual include directory (for BUILD cmake target interface):
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( GTSAM_EIGEN_INCLUDE_FOR_BUILD  "${CMAKE_SOURCE_DIR}/gtsam/3rdparty/Eigen/" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Detect Eigen version:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( EIGEN_VER_H  "${GTSAM_EIGEN_INCLUDE_FOR_BUILD}/Eigen/src/Core/util/Macros.h" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( EXISTS  ${ EIGEN_VER_H } ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    file ( READ  "${EIGEN_VER_H}"  STR_EIGEN_VERSION ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Extract the Eigen version from the Macros.h file, lines "#define EIGEN_WORLD_VERSION  XX", etc...
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    string ( REGEX  MATCH  "EIGEN_WORLD_VERSION[ ]+[0-9]+"  GTSAM_EIGEN_VERSION_WORLD  "${STR_EIGEN_VERSION}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    string ( REGEX  MATCH  "[0-9]+"  GTSAM_EIGEN_VERSION_WORLD  "${GTSAM_EIGEN_VERSION_WORLD}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    string ( REGEX  MATCH  "EIGEN_MAJOR_VERSION[ ]+[0-9]+"  GTSAM_EIGEN_VERSION_MAJOR  "${STR_EIGEN_VERSION}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    string ( REGEX  MATCH  "[0-9]+"  GTSAM_EIGEN_VERSION_MAJOR  "${GTSAM_EIGEN_VERSION_MAJOR}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    string ( REGEX  MATCH  "EIGEN_MINOR_VERSION[ ]+[0-9]+"  GTSAM_EIGEN_VERSION_MINOR  "${STR_EIGEN_VERSION}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    string ( REGEX  MATCH  "[0-9]+"  GTSAM_EIGEN_VERSION_MINOR  "${GTSAM_EIGEN_VERSION_MINOR}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_EIGEN_VERSION  "${GTSAM_EIGEN_VERSION_WORLD}.${GTSAM_EIGEN_VERSION_MAJOR}.${GTSAM_EIGEN_VERSION_MINOR}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( STATUS  "Found Eigen version: ${GTSAM_EIGEN_VERSION}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( WARNING  "Cannot determine Eigen version, missing file: `${EIGEN_VER_H}`" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 16:43:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif  ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-08 22:52:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( MSVC ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( BUILD_SHARED_LIBS ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # mute eigen static assert to avoid errors in shared lib
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        list_append_cache ( GTSAM_COMPILE_DEFINITIONS_PUBLIC  EIGEN_NO_STATIC_ASSERT ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    list_append_cache ( GTSAM_COMPILE_OPTIONS_PRIVATE  "/wd4244" )  # Disable loss of precision which is thrown all over our Eigen
 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-08 22:52:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2017-05-18 05:30:17 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-12-21 23:41:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( APPLE  AND  BUILD_SHARED_LIBS ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Set the default install directory on macOS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_INSTALL_NAME_DIR  "${CMAKE_INSTALL_PREFIX}/lib" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-21 23:41:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Global compile options
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Build list of possible allocators
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( possible_allocators  "" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GTSAM_USE_TBB ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list ( APPEND  possible_allocators  TBB ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( preferred_allocator  TBB ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list ( APPEND  possible_allocators  BoostPool  STL ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( preferred_allocator  STL ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:55:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GOOGLE_PERFTOOLS_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list ( APPEND  possible_allocators  tcmalloc ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:55:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Check if current allocator choice is valid and set cache option
  
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								list ( FIND  possible_allocators  "${GTSAM_DEFAULT_ALLOCATOR}"  allocator_valid ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( allocator_valid  EQUAL  -1 ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_DEFAULT_ALLOCATOR  ${ preferred_allocator }  CACHE  STRING  "Default allocator"  FORCE ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_DEFAULT_ALLOCATOR  ${ preferred_allocator }  CACHE  STRING  "Default allocator" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set_property ( CACHE  GTSAM_DEFAULT_ALLOCATOR  PROPERTY  STRINGS  ${ possible_allocators } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								mark_as_advanced ( GTSAM_DEFAULT_ALLOCATOR ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Define compile flags depending on allocator
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( "${GTSAM_DEFAULT_ALLOCATOR}"  STREQUAL  "BoostPool" ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_ALLOCATOR_BOOSTPOOL  1 ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif ( "${GTSAM_DEFAULT_ALLOCATOR}"  STREQUAL  "STL" ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_ALLOCATOR_STL  1 ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif ( "${GTSAM_DEFAULT_ALLOCATOR}"  STREQUAL  "TBB" ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_ALLOCATOR_TBB  1 ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif ( "${GTSAM_DEFAULT_ALLOCATOR}"  STREQUAL  "tcmalloc" ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( GTSAM_ALLOCATOR_STL  1 )  # tcmalloc replaces malloc, so to use it we use the STL allocator
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    list ( APPEND  GTSAM_ADDITIONAL_LIBRARIES  "tcmalloc" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-14 06:21:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( MSVC ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list_append_cache ( GTSAM_COMPILE_DEFINITIONS_PRIVATE  _CRT_SECURE_NO_WARNINGS  _SCL_SECURE_NO_WARNINGS ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    list_append_cache ( GTSAM_COMPILE_OPTIONS_PRIVATE  /wd4251  /wd4275  /wd4251  /wd4661  /wd4344  /wd4503 )  # Disable non-DLL-exported base class and other warnings
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    list_append_cache ( GTSAM_COMPILE_OPTIONS_PRIVATE  /bigobj )  # Allow large object files for template-based code
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-31 05:07:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# GCC 4.8+ complains about local typedefs which we use for shared_ptr etc.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( CMAKE_CXX_COMPILER_ID  STREQUAL  "GNU" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( NOT  CMAKE_CXX_COMPILER_VERSION  VERSION_LESS  4.8 ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 17:02:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list_append_cache ( GTSAM_COMPILE_OPTIONS_PRIVATE  -Wno-unused-local-typedefs ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-31 05:07:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-09 03:35:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# As of XCode 7, clang also complains about this
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( CMAKE_CXX_COMPILER_ID  STREQUAL  "Clang" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( NOT  CMAKE_CXX_COMPILER_VERSION  VERSION_LESS  7.0 ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 17:02:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list_append_cache ( GTSAM_COMPILE_OPTIONS_PRIVATE  -Wno-unused-local-typedefs ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-09 03:35:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_ENABLE_CONSISTENCY_CHECKS ) 
  
						 
					
						
							
								
									
										
										
										
											2019-02-09 05:18:21 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # This should be made PUBLIC if GTSAM_EXTRA_CONSISTENCY_CHECKS is someday used in a public .h
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-29 17:02:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  list_append_cache ( GTSAM_COMPILE_DEFINITIONS_PRIVATE  GTSAM_EXTRA_CONSISTENCY_CHECKS ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-31 03:41:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Add components
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Build CppUnitLite
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add_subdirectory ( CppUnitLite ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# This is the new wrapper
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GTSAM_BUILD_PYTHON ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list ( APPEND  CMAKE_MODULE_PATH  "${CMAKE_CURRENT_LIST_DIR}/wrap/cmake" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_subdirectory ( python ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Build GTSAM library
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add_subdirectory ( gtsam ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Build Tests
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add_subdirectory ( tests ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Build examples
  
						 
					
						
							
								
									
										
										
										
											2014-02-23 06:13:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								add_subdirectory ( examples ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-08 10:02:11 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Build timing
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add_subdirectory ( timing ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-24 02:55:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Build gtsam_unstable
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( GTSAM_BUILD_UNSTABLE ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_subdirectory ( gtsam_unstable ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-11 23:31:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2017-07-24 02:55:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Matlab toolbox
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( GTSAM_INSTALL_MATLAB_TOOLBOX ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    add_subdirectory ( matlab ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Install config and export files
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GtsamMakeConfigFile ( GTSAM  "${CMAKE_CURRENT_SOURCE_DIR}/gtsam_extra.cmake.in" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export ( TARGETS  ${ GTSAM_EXPORTED_TARGETS }  FILE  GTSAM-exports.cmake ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-15 07:14:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Check for doxygen availability - optional dependency
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								find_package ( Doxygen ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Doxygen documentation - enabling options in subfolder
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( DOXYGEN_FOUND ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_subdirectory ( doc ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-20 02:10:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# CMake Tools
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add_subdirectory ( cmake ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Set up CPack
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY  "GTSAM" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_PACKAGE_VENDOR  "Frank Dellaert, Georgia Institute of Technology" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_PACKAGE_CONTACT  "Frank Dellaert, dellaert@cc.gatech.edu" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-31 03:42:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								set ( CPACK_PACKAGE_DESCRIPTION_FILE  "${CMAKE_CURRENT_SOURCE_DIR}/README.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								set ( CPACK_RESOURCE_FILE_LICENSE  "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_PACKAGE_VERSION_MAJOR  ${ GTSAM_VERSION_MAJOR } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_PACKAGE_VERSION_MINOR  ${ GTSAM_VERSION_MINOR } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_PACKAGE_VERSION_PATCH  ${ GTSAM_VERSION_PATCH } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_PACKAGE_INSTALL_DIRECTORY  "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#set(CPACK_INSTALLED_DIRECTORIES "doc;.") # Include doc directory
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#set(CPACK_INSTALLED_DIRECTORIES ".") # FIXME: throws error
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_SOURCE_IGNORE_FILES  "/build*;/\\\\.;/makestats.sh$" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_SOURCE_IGNORE_FILES  "${CPACK_SOURCE_IGNORE_FILES}"  "/gtsam_unstable/" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_SOURCE_IGNORE_FILES  "${CPACK_SOURCE_IGNORE_FILES}"  "/package_scripts/" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_SOURCE_PACKAGE_FILE_NAME  "gtsam-${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#set(CPACK_SOURCE_PACKAGE_FILE_NAME "gtsam-aspn${GTSAM_VERSION_PATCH}") # Used for creating ASPN tarballs
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Deb-package specific cpack
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( CPACK_DEBIAN_PACKAGE_NAME  "libgtsam-dev" ) 
  
						 
					
						
							
								
									
										
										
										
											2020-09-04 00:00:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								set ( CPACK_DEBIAN_PACKAGE_DEPENDS  "libboost-dev (>= 1.58)" )  #Example: "libc6 (>= 2.3.1-6), libgcc1 (>= 1:3.4.2-12)")
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								###############################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Print configuration variables
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								message ( STATUS  "===============================================================" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								message ( STATUS  "================  Configuration Options  ======================" ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								print_config ( "CMAKE_CXX_COMPILER_ID type"  "${CMAKE_CXX_COMPILER_ID}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_config ( "CMAKE_CXX_COMPILER_VERSION"  "${CMAKE_CXX_COMPILER_VERSION}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_config ( "CMake version"     "${CMAKE_VERSION}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_config ( "CMake generator"   "${CMAKE_GENERATOR}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_config ( "CMake build tool"  "${CMAKE_BUILD_TOOL}" ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								message ( STATUS  "Build flags                                               " ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_BUILD_TESTS }                  "Build Tests" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_BUILD_EXAMPLES_ALWAYS }        "Build examples with 'make all'" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_BUILD_TIMING_ALWAYS }          "Build timing scripts with 'make all'" ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( DOXYGEN_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_enabled_config ( ${ GTSAM_BUILD_DOCS }               "Build Docs" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								print_enabled_config ( ${ BUILD_SHARED_LIBS }                  "Build shared GTSAM libraries" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_BUILD_TYPE_POSTFIXES }         "Put build type in library name" ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_UNSTABLE_AVAILABLE ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_enabled_config ( ${ GTSAM_BUILD_UNSTABLE }           "Build libgtsam_unstable        " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print_enabled_config ( ${ GTSAM_UNSTABLE_BUILD_PYTHON }    "Build GTSAM unstable Python    " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print_enabled_config ( ${ GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX }  "Build MATLAB Toolbox for unstable" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2019-06-13 03:01:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 00:14:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( NOT  MSVC  AND  NOT  XCODE_VERSION ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_enabled_config ( ${ GTSAM_BUILD_WITH_MARCH_NATIVE }      "Build for native architecture  " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print_config ( "Build type"  "${CMAKE_BUILD_TYPE}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print_config ( "C compilation flags"  "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print_config ( "C++ compilation flags"  "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 00:14:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2019-05-29 17:02:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_build_options_for_target ( gtsam ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								print_config ( "Use System Eigen"  "${GTSAM_USE_SYSTEM_EIGEN} (Using version: ${GTSAM_EIGEN_VERSION})" ) 
  
						 
					
						
							
								
									
										
										
										
											2019-05-29 17:02:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_USE_TBB ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Use Intel TBB"  "Yes" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif ( TBB_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Use Intel TBB"  "TBB found but GTSAM_WITH_TBB is disabled" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Use Intel TBB"  "TBB not found" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_USE_EIGEN_MKL ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Eigen will use MKL"  "Yes" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif ( MKL_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Eigen will use MKL"  "MKL found but GTSAM_WITH_EIGEN_MKL is disabled" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Eigen will use MKL"  "MKL not found" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GTSAM_USE_EIGEN_MKL_OPENMP ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Eigen will use MKL and OpenMP"  "Yes" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-28 03:04:11 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif ( OPENMP_FOUND  AND  NOT  GTSAM_WITH_EIGEN_MKL ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Eigen will use MKL and OpenMP"  "OpenMP found but GTSAM_WITH_EIGEN_MKL is disabled" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-28 03:04:11 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif ( OPENMP_FOUND  AND  NOT  MKL_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Eigen will use MKL and OpenMP"  "OpenMP found but MKL not found" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif ( OPENMP_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Eigen will use MKL and OpenMP"  "OpenMP found but GTSAM_WITH_EIGEN_MKL_OPENMP is disabled" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Eigen will use MKL and OpenMP"  "OpenMP not found" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								print_config ( "Default allocator"  "${GTSAM_DEFAULT_ALLOCATOR}" ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-07 12:56:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_THROW_CHEIRALITY_EXCEPTION ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Cheirality exceptions enabled"  "YES" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-07 12:56:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Cheirality exceptions enabled"  "NO" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-07 12:56:07 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-19 07:03:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( NOT  MSVC  AND  NOT  XCODE_VERSION ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( CCACHE_FOUND  AND  GTSAM_BUILD_WITH_CCACHE ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        print_config ( "Build with ccache"  "Yes" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    elseif ( CCACHE_FOUND ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        print_config ( "Build with ccache"  "ccache found but GTSAM_BUILD_WITH_CCACHE is disabled" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        print_config ( "Build with ccache"  "No" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-19 07:03:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								message ( STATUS  "Packaging flags" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_config ( "CPack Source Generator"  "${CPACK_SOURCE_GENERATOR}" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_config ( "CPack Generator"  "${CPACK_GENERATOR}" ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								message ( STATUS  "GTSAM flags                                               " ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-08 05:11:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_USE_QUATERNIONS }              "Quaternions as default Rot3     " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_ENABLE_CONSISTENCY_CHECKS }    "Runtime consistency checking    " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_ROT3_EXPMAP }                  "Rot3 retract is full ExpMap     " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_POSE3_EXPMAP }                 "Pose3 retract is full ExpMap    " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_ALLOW_DEPRECATED_SINCE_V41 }   "Allow features deprecated in GTSAM 4.1" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_SUPPORT_NESTED_DISSECTION }    "Metis-based Nested Dissection   " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_TANGENT_PREINTEGRATION }       "Use tangent-space preintegration" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								message ( STATUS  "MATLAB toolbox flags" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_INSTALL_MATLAB_TOOLBOX }       "Install MATLAB toolbox          " ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:49:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( ${ GTSAM_INSTALL_MATLAB_TOOLBOX } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print_config ( "MATLAB root"  "${MATLAB_ROOT}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print_config ( "MEX binary"  "${MEX_COMMAND}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 05:13:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								message ( STATUS  "Python toolbox flags                                      " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								print_enabled_config ( ${ GTSAM_BUILD_PYTHON }                 "Build Python module with pybind " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GTSAM_BUILD_PYTHON ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print_config ( "Python version"  ${ GTSAM_PYTHON_VERSION } ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-10 12:15:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2016-11-25 15:27:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								message ( STATUS  "===============================================================" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Print warnings at the end
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_WITH_TBB  AND  NOT  TBB_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( WARNING  "TBB 4.4 or newer was not found - this is ok, but note that GTSAM parallelization will be disabled.  Set GTSAM_WITH_TBB to 'Off' to avoid this warning." ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-19 03:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2019-03-13 02:16:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( GTSAM_WITH_EIGEN_MKL  AND  NOT  MKL_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( WARNING  "MKL was not found - this is ok, but note that MKL will be disabled.  Set GTSAM_WITH_EIGEN_MKL to 'Off' to disable this warning.  See INSTALL.md for notes on performance." ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-13 02:16:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ( GTSAM_WITH_EIGEN_MKL_OPENMP  AND  NOT  OPENMP_FOUND  AND  MKL_FOUND ) 
  
						 
					
						
							
								
									
										
										
										
											2020-08-18 23:47:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( WARNING  "Your compiler does not support OpenMP.  Set GTSAM_WITH_EIGEN_MKL_OPENMP to 'Off' to avoid this warning. See INSTALL.md for notes on performance." ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-13 02:16:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif ( ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 03:51:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Include CPack *after* all flags
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include ( CPack )