update Matlab CMakeLists.txt to use the wrapper
							parent
							
								
									f03b12e420
								
							
						
					
					
						commit
						827f3feb6b
					
				|  | @ -1,53 +1,72 @@ | |||
| # Install matlab components | ||||
| 
 | ||||
| # Check if flag is enabled | ||||
| if(NOT GTSAM_INSTALL_MATLAB_TOOLBOX) | ||||
|   return() | ||||
| endif() | ||||
| 
 | ||||
| # Create the matlab toolbox for the gtsam library | ||||
| if(GTSAM_INSTALL_MATLAB_TOOLBOX) | ||||
| 
 | ||||
|   # Set the wrapping script variable | ||||
|   set(MATLAB_WRAP_SCRIPT "${GTSAM_SOURCE_DIR}/wrap/scripts/matlab_wrap.py") | ||||
| # 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" | ||||
| # 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." | ||||
|   ) | ||||
|   if(NOT GTSAM_TOOLBOX_INSTALL_PATH) | ||||
|     set(GTSAM_TOOLBOX_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/gtsam_toolbox") | ||||
|   endif() | ||||
| 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}) | ||||
| # ############################################################################## | ||||
| # Generate, build and install toolbox | ||||
| set(mexFlags "${GTSAM_BUILD_MEX_BINARY_FLAGS}") | ||||
| if(NOT BUILD_SHARED_LIBS) | ||||
|   list(APPEND mexFlags -DGTSAM_IMPORT_STATIC) | ||||
| endif() | ||||
| 
 | ||||
|   # Fixup the Python paths | ||||
|   if(GTWRAP_DIR) | ||||
|     # packaged | ||||
|     set(GTWRAP_PACKAGE_DIR ${GTWRAP_DIR}) | ||||
|   else() | ||||
|     set(GTWRAP_PACKAGE_DIR ${GTSAM_SOURCE_DIR}/wrap) | ||||
|   endif() | ||||
| set(ignore gtsam::Point2 gtsam::Point3 gtsam::BearingRangeFactor | ||||
|             gtsam::BearingRangeFactor2D gtsam::BearingRangeFactorPose2) | ||||
| 
 | ||||
|   include(MatlabWrap) | ||||
| # Wrap | ||||
| matlab_wrap(${GTSAM_SOURCE_DIR}/gtsam/gtsam.i "${GTSAM_ADDITIONAL_LIBRARIES}" | ||||
|             "" "${mexFlags}" "${ignore}") | ||||
| 
 | ||||
|   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." | ||||
|     ) | ||||
|   endif() | ||||
| 
 | ||||
|   # ############################################################################ | ||||
| # Wrap version for gtsam_unstable | ||||
| if(GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX) | ||||
|   # Generate, build and install toolbox | ||||
|   set(mexFlags "${GTSAM_BUILD_MEX_BINARY_FLAGS}") | ||||
|   if(NOT BUILD_SHARED_LIBS) | ||||
|  | @ -55,70 +74,57 @@ if(GTSAM_INSTALL_MATLAB_TOOLBOX) | |||
|   endif() | ||||
| 
 | ||||
|   # Wrap | ||||
|   wrap_and_install_library(${GTSAM_SOURCE_DIR}/gtsam/gtsam.i "${GTSAM_ADDITIONAL_LIBRARIES}" "" | ||||
|                            "${mexFlags}") | ||||
|   matlab_wrap(${GTSAM_SOURCE_DIR}/gtsam_unstable/gtsam_unstable.i "gtsam" "" | ||||
|               "${mexFlags}") | ||||
| endif(GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX) | ||||
| 
 | ||||
|   # Wrap version for gtsam_unstable | ||||
|   if(GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX) | ||||
|     # Generate, build and install toolbox | ||||
|     set(mexFlags "${GTSAM_BUILD_MEX_BINARY_FLAGS}") | ||||
|     if(NOT BUILD_SHARED_LIBS) | ||||
|       list(APPEND mexFlags -DGTSAM_IMPORT_STATIC) | ||||
| # Record the root dir for gtsam - needed during external builds, e.g., ROS | ||||
| set(GTSAM_SOURCE_ROOT_DIR ${GTSAM_SOURCE_DIR}) | ||||
| message(STATUS "GTSAM_SOURCE_ROOT_DIR: [${GTSAM_SOURCE_ROOT_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}") | ||||
|     endif() | ||||
| 
 | ||||
|     # Wrap | ||||
|     wrap_and_install_library(${GTSAM_SOURCE_DIR}/gtsam_unstable/gtsam_unstable.i "gtsam" "" "${mexFlags}") | ||||
|   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}) | ||||
|   message(STATUS "GTSAM_SOURCE_ROOT_DIR: [${GTSAM_SOURCE_ROOT_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}") | ||||
|       endif() | ||||
|       # 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() | ||||
| 
 | ||||
| endif(GTSAM_INSTALL_MATLAB_TOOLBOX) | ||||
|     # 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() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue