| 
									
										
										
										
											2012-06-08 04:09:54 +08:00
										 |  |  | # Install matlab components
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  | # Check if flag is enabled
 | 
					
						
							|  |  |  | if(NOT GTSAM_INSTALL_MATLAB_TOOLBOX)
 | 
					
						
							|  |  |  |   return()
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-10 05:10:08 +08:00
										 |  |  | # Create the matlab toolbox for the gtsam library
 | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Set the wrapping script variable
 | 
					
						
							|  |  |  | set(MATLAB_WRAP_SCRIPT "${GTSAM_SOURCE_DIR}/wrap/scripts/matlab_wrap.py")
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Set up cache options
 | 
					
						
							|  |  |  | option(GTSAM_MEX_BUILD_STATIC_MODULE | 
					
						
							|  |  |  |        "Build MATLAB wrapper statically (increases build time)" OFF)
 | 
					
						
							|  |  |  | set(GTSAM_BUILD_MEX_BINARY_FLAGS | 
					
						
							|  |  |  |     ""
 | 
					
						
							|  |  |  |     CACHE STRING "Extra flags for running Matlab MEX compilation")
 | 
					
						
							|  |  |  | set(GTSAM_TOOLBOX_INSTALL_PATH | 
					
						
							|  |  |  |     ""
 | 
					
						
							|  |  |  |     CACHE
 | 
					
						
							|  |  |  |       PATH
 | 
					
						
							|  |  |  |       "Matlab toolbox destination, blank defaults to CMAKE_INSTALL_PREFIX/gtsam_toolbox"
 | 
					
						
							|  |  |  | )
 | 
					
						
							|  |  |  | if(NOT GTSAM_TOOLBOX_INSTALL_PATH)
 | 
					
						
							|  |  |  |   set(GTSAM_TOOLBOX_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/gtsam_toolbox")
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | set(WRAP_MEX_BUILD_STATIC_MODULE ${GTSAM_MEX_BUILD_STATIC_MODULE})
 | 
					
						
							|  |  |  | set(WRAP_BUILD_MEX_BINARY_FLAGS ${GTSAM_BUILD_MEX_BINARY_FLAGS})
 | 
					
						
							|  |  |  | set(WRAP_TOOLBOX_INSTALL_PATH ${GTSAM_TOOLBOX_INSTALL_PATH})
 | 
					
						
							|  |  |  | set(WRAP_CUSTOM_MATLAB_PATH ${GTSAM_CUSTOM_MATLAB_PATH})
 | 
					
						
							|  |  |  | set(WRAP_BUILD_TYPE_POSTFIXES ${GTSAM_BUILD_TYPE_POSTFIXES})
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Fixup the Python paths
 | 
					
						
							|  |  |  | if(GTWRAP_DIR)
 | 
					
						
							|  |  |  |   # packaged
 | 
					
						
							|  |  |  |   set(GTWRAP_PACKAGE_DIR ${GTWRAP_DIR})
 | 
					
						
							|  |  |  | else()
 | 
					
						
							|  |  |  |   set(GTWRAP_PACKAGE_DIR ${GTSAM_SOURCE_DIR}/wrap)
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | include(MatlabWrap)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if(NOT BUILD_SHARED_LIBS)
 | 
					
						
							|  |  |  |   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."
 | 
					
						
							| 
									
										
										
										
											2021-03-10 05:10:08 +08:00
										 |  |  |   )
 | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  | endif()
 | 
					
						
							| 
									
										
										
										
											2021-03-10 05:10:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  | # ##############################################################################
 | 
					
						
							|  |  |  | # Generate, build and install toolbox
 | 
					
						
							|  |  |  | set(mexFlags "${GTSAM_BUILD_MEX_BINARY_FLAGS}")
 | 
					
						
							|  |  |  | if(NOT BUILD_SHARED_LIBS)
 | 
					
						
							|  |  |  |   list(APPEND mexFlags -DGTSAM_IMPORT_STATIC)
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							| 
									
										
										
										
											2021-03-10 05:10:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 07:30:31 +08:00
										 |  |  | # ignoring the non-concrete types (type aliases)
 | 
					
						
							|  |  |  | set(ignore | 
					
						
							|  |  |  |     gtsam::Point2
 | 
					
						
							| 
									
										
										
										
											2021-05-15 04:24:31 +08:00
										 |  |  |     gtsam::Point3
 | 
					
						
							|  |  |  |     gtsam::CustomFactor)
 | 
					
						
							| 
									
										
										
										
											2021-03-10 05:10:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-07 00:05:01 +08:00
										 |  |  | set(interface_files | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/gtsam.i
 | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/base/base.i
 | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/basis/basis.i
 | 
					
						
							| 
									
										
										
										
											2022-02-02 08:08:46 +08:00
										 |  |  |     ${PROJECT_SOURCE_DIR}/gtsam/inference/inference.i
 | 
					
						
							| 
									
										
										
										
											2022-02-02 09:38:55 +08:00
										 |  |  |     ${PROJECT_SOURCE_DIR}/gtsam/discrete/discrete.i
 | 
					
						
							| 
									
										
										
										
											2021-12-07 00:05:01 +08:00
										 |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/geometry/geometry.i
 | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/linear/linear.i
 | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/nonlinear/nonlinear.i
 | 
					
						
							| 
									
										
										
										
											2022-07-20 02:08:31 +08:00
										 |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/nonlinear/custom.i
 | 
					
						
							| 
									
										
										
										
											2021-12-07 00:05:01 +08:00
										 |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/symbolic/symbolic.i
 | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/sam/sam.i
 | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/slam/slam.i
 | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/sfm/sfm.i
 | 
					
						
							|  |  |  |     ${GTSAM_SOURCE_DIR}/gtsam/navigation/navigation.i
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  | # Wrap
 | 
					
						
							| 
									
										
										
										
											2021-12-07 00:05:01 +08:00
										 |  |  | matlab_wrap("${interface_files}" "gtsam" "${GTSAM_ADDITIONAL_LIBRARIES}" | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  |             "" "${mexFlags}" "${ignore}")
 | 
					
						
							| 
									
										
										
										
											2021-03-10 05:10:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  | # Wrap version for gtsam_unstable
 | 
					
						
							|  |  |  | if(GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX)
 | 
					
						
							| 
									
										
										
										
											2021-03-10 05:10:08 +08:00
										 |  |  |   # Generate, build and install toolbox
 | 
					
						
							|  |  |  |   set(mexFlags "${GTSAM_BUILD_MEX_BINARY_FLAGS}")
 | 
					
						
							|  |  |  |   if(NOT BUILD_SHARED_LIBS)
 | 
					
						
							|  |  |  |     list(APPEND mexFlags -DGTSAM_IMPORT_STATIC)
 | 
					
						
							|  |  |  |   endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Wrap
 | 
					
						
							| 
									
										
										
										
											2022-03-21 10:17:47 +08:00
										 |  |  |   matlab_wrap(${GTSAM_SOURCE_DIR}/gtsam_unstable/gtsam_unstable.i "gtsam_unstable" | 
					
						
							|  |  |  |               "${GTSAM_ADDITIONAL_LIBRARIES}" "" "${mexFlags}" "${ignore}")
 | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  | endif(GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Record the root dir for gtsam - needed during external builds, e.g., ROS
 | 
					
						
							|  |  |  | set(GTSAM_SOURCE_ROOT_DIR ${GTSAM_SOURCE_DIR})
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Tests message(STATUS "Installing Matlab Toolbox")
 | 
					
						
							|  |  |  | install_matlab_scripts("${GTSAM_SOURCE_ROOT_DIR}/matlab/" "*.m;*.fig")
 | 
					
						
							|  |  |  | install_matlab_scripts("${GTSAM_SOURCE_ROOT_DIR}/matlab/" | 
					
						
							|  |  |  |                        "README-gtsam-toolbox.txt")
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Examples message(STATUS "Installing Matlab Toolbox Examples") Matlab files:
 | 
					
						
							|  |  |  | # *.m and *.fig
 | 
					
						
							|  |  |  | # install_matlab_scripts("${GTSAM_SOURCE_ROOT_DIR}/matlab/gtsam_examples"
 | 
					
						
							|  |  |  | # "*.m;*.fig")
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Utilities message(STATUS "Installing Matlab Toolbox Utilities")
 | 
					
						
							|  |  |  | # install_matlab_scripts("${GTSAM_SOURCE_ROOT_DIR}/matlab/+gtsam" "*.m")
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # message(STATUS "Installing Matlab Toolbox Example Data") Data files: *.graph,
 | 
					
						
							|  |  |  | # *.mat, and *.txt
 | 
					
						
							|  |  |  | file(GLOB matlab_examples_data_graph | 
					
						
							|  |  |  |      "${GTSAM_SOURCE_ROOT_DIR}/examples/Data/*.graph")
 | 
					
						
							|  |  |  | file(GLOB matlab_examples_data_mat | 
					
						
							|  |  |  |      "${GTSAM_SOURCE_ROOT_DIR}/examples/Data/*.mat")
 | 
					
						
							|  |  |  | file(GLOB matlab_examples_data_txt | 
					
						
							|  |  |  |      "${GTSAM_SOURCE_ROOT_DIR}/examples/Data/*.txt")
 | 
					
						
							|  |  |  | set(matlab_examples_data | 
					
						
							|  |  |  |     ${matlab_examples_data_graph} ${matlab_examples_data_mat}
 | 
					
						
							|  |  |  |     ${matlab_examples_data_txt})
 | 
					
						
							|  |  |  | if(GTSAM_BUILD_TYPE_POSTFIXES)
 | 
					
						
							|  |  |  |   foreach(build_type ${CMAKE_CONFIGURATION_TYPES})
 | 
					
						
							|  |  |  |     string(TOUPPER "${build_type}" build_type_upper)
 | 
					
						
							|  |  |  |     if(${build_type_upper} STREQUAL "RELEASE")
 | 
					
						
							|  |  |  |       set(build_type_tag "") # Don't create release mode tag on installed
 | 
					
						
							|  |  |  |       # directory
 | 
					
						
							|  |  |  |     else()
 | 
					
						
							|  |  |  |       set(build_type_tag "${build_type}")
 | 
					
						
							| 
									
										
										
										
											2021-03-10 05:10:08 +08:00
										 |  |  |     endif()
 | 
					
						
							| 
									
										
										
										
											2021-03-10 22:17:22 +08:00
										 |  |  |     # Split up filename to strip trailing '/' in GTSAM_TOOLBOX_INSTALL_PATH if
 | 
					
						
							|  |  |  |     # there is one
 | 
					
						
							|  |  |  |     get_filename_component(location "${GTSAM_TOOLBOX_INSTALL_PATH}" PATH)
 | 
					
						
							|  |  |  |     get_filename_component(name "${GTSAM_TOOLBOX_INSTALL_PATH}" NAME)
 | 
					
						
							|  |  |  |     install( | 
					
						
							|  |  |  |       FILES ${matlab_examples_data}
 | 
					
						
							|  |  |  |       DESTINATION "${location}/${name}${build_type_tag}/gtsam_examples/Data"
 | 
					
						
							|  |  |  |       CONFIGURATIONS "${build_type}")
 | 
					
						
							|  |  |  |   endforeach()
 | 
					
						
							|  |  |  | else()
 | 
					
						
							|  |  |  |   install(FILES ${matlab_examples_data} | 
					
						
							|  |  |  |           DESTINATION ${GTSAM_TOOLBOX_INSTALL_PATH}/gtsam_examples/Data)
 | 
					
						
							|  |  |  | endif()
 |