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