Fleshed out support for building MEX binaries during gtsam build
							parent
							
								
									2f9ed9abf2
								
							
						
					
					
						commit
						e1725fb8e3
					
				
							
								
								
									
										52
									
								
								.cproject
								
								
								
								
							
							
						
						
									
										52
									
								
								.cproject
								
								
								
								
							|  | @ -1653,10 +1653,10 @@ | |||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="PlanarSLAMExample.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 			<target name="PlanarSLAMExample_easy.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
| 				<buildTarget>PlanarSLAMExample.run</buildTarget> | ||||
| 				<buildArguments>-j2</buildArguments> | ||||
| 				<buildTarget>PlanarSLAMExample_easy.run</buildTarget> | ||||
| 				<stopOnError>true</stopOnError> | ||||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
|  | @ -1685,10 +1685,10 @@ | |||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="PlanarSLAMExample_selfcontained.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 			<target name="PlanarSLAMSelfContained_advanced.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
| 				<buildTarget>PlanarSLAMExample_selfcontained.run</buildTarget> | ||||
| 				<buildArguments>-j2</buildArguments> | ||||
| 				<buildTarget>PlanarSLAMSelfContained_advanced.run</buildTarget> | ||||
| 				<stopOnError>true</stopOnError> | ||||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
|  | @ -1701,18 +1701,18 @@ | |||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="Pose2SLAMExample.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 			<target name="Pose2SLAMExample_easy.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
| 				<buildTarget>Pose2SLAMExample.run</buildTarget> | ||||
| 				<buildArguments>-j2</buildArguments> | ||||
| 				<buildTarget>Pose2SLAMExample_easy.run</buildTarget> | ||||
| 				<stopOnError>true</stopOnError> | ||||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="Pose2SLAMwSPCG.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 			<target name="Pose2SLAMwSPCG_easy.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
| 				<buildTarget>Pose2SLAMwSPCG.run</buildTarget> | ||||
| 				<buildArguments>-j2</buildArguments> | ||||
| 				<buildTarget>Pose2SLAMwSPCG_easy.run</buildTarget> | ||||
| 				<stopOnError>true</stopOnError> | ||||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
|  | @ -1741,10 +1741,10 @@ | |||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="Pose2SLAMExample_graph.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 			<target name="Pose2SLAMwSPCG_advanced.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
| 				<buildTarget>Pose2SLAMExample_graph.run</buildTarget> | ||||
| 				<buildTarget>Pose2SLAMwSPCG_advanced.run</buildTarget> | ||||
| 				<stopOnError>true</stopOnError> | ||||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
|  | @ -2152,6 +2152,30 @@ | |||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="wrap_gtsam_build" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
| 				<buildTarget>wrap_gtsam_build</buildTarget> | ||||
| 				<stopOnError>true</stopOnError> | ||||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="wrap_gtsam_unstable_build" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
| 				<buildTarget>wrap_gtsam_unstable_build</buildTarget> | ||||
| 				<stopOnError>true</stopOnError> | ||||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="wrap_gtsam_unstable" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
| 				<buildTarget>wrap_gtsam_unstable</buildTarget> | ||||
| 				<stopOnError>true</stopOnError> | ||||
| 				<useDefaultCommand>true</useDefaultCommand> | ||||
| 				<runAllBuilders>true</runAllBuilders> | ||||
| 			</target> | ||||
| 			<target name="wrap.testSpirit.run" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> | ||||
| 				<buildCommand>make</buildCommand> | ||||
| 				<buildArguments>-j5</buildArguments> | ||||
|  |  | |||
|  | @ -61,8 +61,12 @@ option(GTSAM_INSTALL_MATLAB_EXAMPLES     "Enable/Disable installation of matlab | |||
| option(GTSAM_INSTALL_MATLAB_TESTS        "Enable/Disable installation of matlab tests"    ON) | ||||
| option(GTSAM_INSTALL_WRAP                "Enable/Disable installation of wrap utility" ON) | ||||
| 
 | ||||
| # Experimental - features disabled by default | ||||
| option(GTSAM_ENABLE_BUILD_MEX_BINARIES   "Enable/Disable building of matlab mex files" OFF) | ||||
| # TODO: Check for matlab mex binary before handling building of binaries | ||||
| 
 | ||||
| # Flags for building/installing mex files | ||||
| option(GTSAM_ENABLE_BUILD_MEX_BINARIES     "Enable/Disable building of matlab mex files" OFF) | ||||
| option(GTSAM_ENABLE_BUILD_MEX_BINARIES_ALL "Enable/Disable adding building of mex files to ALL target" OFF) | ||||
| set(GTSAM_BUILD_MEX_BINARY_FLAGS "-j2" CACHE STRING "Flags for running make on toolbox MEX files") | ||||
| 
 | ||||
| # Flags for choosing default packaging tools | ||||
| set(CPACK_SOURCE_GENERATOR "TGZ" CACHE STRING "CPack Default Source Generator") | ||||
|  | @ -184,6 +188,8 @@ print_config_flag(${GTSAM_INSTALL_MATLAB_TOOLBOX}      "Install matlab toolbox | |||
| print_config_flag(${GTSAM_INSTALL_MATLAB_EXAMPLES}     "Install matlab examples    ") | ||||
| print_config_flag(${GTSAM_INSTALL_MATLAB_TESTS}        "Install matlab tests       ") | ||||
| print_config_flag(${GTSAM_INSTALL_WRAP}                "Install wrap utility       ") | ||||
| print_config_flag(${GTSAM_ENABLE_BUILD_MEX_BINARIES}   "Build MEX binaries         ") | ||||
| print_config_flag(${GTSAM_ENABLE_BUILD_MEX_BINARIES_ALL} "Build MEX binaries on ALL target       ") | ||||
| message(STATUS "===============================================================") | ||||
| 
 | ||||
| # Include CPack *after* all flags | ||||
|  |  | |||
							
								
								
									
										4
									
								
								gtsam.h
								
								
								
								
							
							
						
						
									
										4
									
								
								gtsam.h
								
								
								
								
							|  | @ -201,7 +201,7 @@ class Pose3 { | |||
| 	Pose3(); | ||||
| 	Pose3(const gtsam::Pose3& pose); | ||||
| 	Pose3(const gtsam::Rot3& r, const gtsam::Point3& t); | ||||
| 	Pose3(const gtsam::Pose2& pose2); | ||||
| 	Pose3(const gtsam::Pose2& pose2); // FIXME: shadows Pose3(Pose3 pose)
 | ||||
| 	Pose3(Matrix t); | ||||
| 
 | ||||
| 	// Testable
 | ||||
|  | @ -239,7 +239,7 @@ class Pose3 { | |||
| 	double y() const; | ||||
| 	double z() const; | ||||
| 	Matrix matrix() const; | ||||
| 	gtsam::Pose3 transform_to(const gtsam::Pose3& pose) const; | ||||
| 	gtsam::Pose3 transform_to(const gtsam::Pose3& pose) const; // FIXME: shadows other transform_to()
 | ||||
| 	double range(const gtsam::Point3& point); | ||||
| 	// double range(const gtsam::Pose3& pose);
 | ||||
| }; | ||||
|  |  | |||
|  | @ -91,14 +91,19 @@ if (GTSAM_BUILD_WRAP) | |||
|         DEPENDS wrap) | ||||
|      | ||||
|     # Build command | ||||
|     # Experimental: requires matlab to be on your path | ||||
|     if (GTSAM_ENABLE_BUILD_MEX_BINARIES) | ||||
|         # Actually compile the mex files when building the library | ||||
|         set(TOOLBOX_MAKE_FLAGS "-j2")     | ||||
|         add_custom_target(wrap_gtsam_unstable_build  | ||||
|             COMMAND make ${TOOLBOX_MAKE_FLAGS}  | ||||
|             WORKING_DIRECTORY ${toolbox_path}  | ||||
|             DEPENDS wrap_gtsam_unstable) | ||||
|         if (GTSAM_ENABLE_BUILD_MEX_BINARIES_ALL)     | ||||
|             add_custom_target(wrap_gtsam_unstable_build ALL | ||||
|                 COMMAND make ${GTSAM_BUILD_MEX_BINARY_FLAGS}  | ||||
|                 WORKING_DIRECTORY ${toolbox_path}  | ||||
|                 DEPENDS wrap_gtsam_unstable) | ||||
|         else()             | ||||
|             add_custom_target(wrap_gtsam_unstable_build | ||||
|                 COMMAND make ${GTSAM_BUILD_MEX_BINARY_FLAGS}  | ||||
|                 WORKING_DIRECTORY ${toolbox_path}  | ||||
|                 DEPENDS wrap_gtsam_unstable) | ||||
|         endif() | ||||
|     endif (GTSAM_ENABLE_BUILD_MEX_BINARIES)     | ||||
|      | ||||
|     if (GTSAM_INSTALL_MATLAB_TOOLBOX) | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ endif(GTSAM_BUILD_TESTS) | |||
| #  toolboxPath   : the directory in which to generate the wrappers | ||||
| #  [mexFlags]    : extra flags for the mex command | ||||
| 
 | ||||
| set(mexFlags "-I${Boost_INCLUDE_DIR} -I${CMAKE_INSTALL_PREFIX}/include -I${CMAKE_INSTALL_PREFIX}/include/gtsam -I${CMAKE_INSTALL_PREFIX}/include/gtsam/base -I${CMAKE_INSTALL_PREFIX}/include/gtsam/geometry -I${CMAKE_INSTALL_PREFIX}/include/gtsam/linear -I${CMAKE_INSTALL_PREFIX}/include/gtsam/nonlinear -I${CMAKE_INSTALL_PREFIX}/include/gtsam/slam -L${CMAKE_INSTALL_PREFIX}/lib -lgtsam") | ||||
| set(mexFlags "-I${Boost_INCLUDE_DIR} -I${CMAKE_INSTALL_PREFIX}/include -I${CMAKE_INSTALL_PREFIX}/include/gtsam -I${CMAKE_INSTALL_PREFIX}/include/gtsam/base -I${CMAKE_INSTALL_PREFIX}/include/gtsam/geometry -I${CMAKE_INSTALL_PREFIX}/include/gtsam/linear -I${CMAKE_INSTALL_PREFIX}/include/gtsam/discrete -I${CMAKE_INSTALL_PREFIX}/include/gtsam/inference -I${CMAKE_INSTALL_PREFIX}/include/gtsam/nonlinear -I${CMAKE_INSTALL_PREFIX}/include/gtsam/slam -L${CMAKE_INSTALL_PREFIX}/lib -lgtsam") | ||||
| set(toolbox_path ${CMAKE_BINARY_DIR}/wrap/gtsam) | ||||
| set(moduleName gtsam) | ||||
| 
 | ||||
|  | @ -48,20 +48,29 @@ add_custom_target(wrap_gtsam ALL COMMAND | |||
|     DEPENDS wrap) | ||||
| 
 | ||||
| # Build command | ||||
| # Experimental: requires matlab to be on your path | ||||
| if (GTSAM_ENABLE_BUILD_MEX_BINARIES) | ||||
|     # Actually compile the mex files when building the library | ||||
|     set(TOOLBOX_MAKE_FLAGS "-j2")     | ||||
|     add_custom_target(wrap_gtsam_build  | ||||
|         COMMAND make ${TOOLBOX_MAKE_FLAGS}  | ||||
|         WORKING_DIRECTORY ${toolbox_path}  | ||||
|         DEPENDS wrap_gtsam) | ||||
|     # TODO: pass correct make flags from parent process | ||||
|     message(STATUS "Building Matlab MEX binaries for toolbox with flags ${GTSAM_BUILD_MEX_BINARY_FLAGS}") | ||||
|     if (GTSAM_ENABLE_BUILD_MEX_BINARIES_ALL)     | ||||
|         add_custom_target(wrap_gtsam_build ALL | ||||
|             COMMAND make ${GTSAM_BUILD_MEX_BINARY_FLAGS}  | ||||
|             WORKING_DIRECTORY ${toolbox_path}  | ||||
|             DEPENDS wrap_gtsam)     | ||||
|     else() | ||||
|         add_custom_target(wrap_gtsam_build | ||||
|             COMMAND make ${GTSAM_BUILD_MEX_BINARY_FLAGS}  | ||||
|             WORKING_DIRECTORY ${toolbox_path}  | ||||
|             DEPENDS wrap_gtsam) | ||||
|     endif() | ||||
| endif (GTSAM_ENABLE_BUILD_MEX_BINARIES)     | ||||
| 
 | ||||
| set(GTSAM_TOOLBOX_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/borg/toolbox CACHE DOCSTRING "Path to install matlab toolbox") | ||||
| 
 | ||||
| if (GTSAM_INSTALL_MATLAB_TOOLBOX) | ||||
|     # Primary toolbox files | ||||
|     # Note that we copy the entire contents of the folder blindly - this is because  | ||||
|     # the generated files won't exist at configuration time | ||||
|     message(STATUS "Installing Matlab Toolbox to ${GTSAM_TOOLBOX_INSTALL_PATH}") | ||||
|     install(DIRECTORY DESTINATION ${GTSAM_TOOLBOX_INSTALL_PATH}) # make an empty folder | ||||
|     # exploit need for trailing slash to specify a full folder, rather than just its contents to copy | ||||
|  | @ -74,9 +83,10 @@ if (GTSAM_INSTALL_MATLAB_TOOLBOX) | |||
|         install(FILES ${matlab_examples} DESTINATION ${GTSAM_TOOLBOX_INSTALL_PATH}/gtsam/examples) | ||||
|          | ||||
|         message(STATUS "Installing Matlab Toolbox Examples (Data)") | ||||
|         set(data_excludes "${CMAKE_SOURCE_DIR}/examples/Data/.svn") | ||||
|         file(GLOB matlab_examples_data "${CMAKE_SOURCE_DIR}/examples/Data/*.*") | ||||
|         list(REMOVE_ITEM matlab_examples_data ${data_excludes}) | ||||
|         # Data files: *.graph and *.txt | ||||
|         file(GLOB matlab_examples_data_graph "${CMAKE_SOURCE_DIR}/examples/Data/*.graph") | ||||
|         file(GLOB matlab_examples_data_txt "${CMAKE_SOURCE_DIR}/examples/Data/*.txt") | ||||
|         set(matlab_examples_data ${matlab_examples_data_graph} ${matlab_examples_data_txt})  | ||||
|         install(FILES ${matlab_examples_data} DESTINATION ${GTSAM_TOOLBOX_INSTALL_PATH}/gtsam/Data) | ||||
|     endif (GTSAM_INSTALL_MATLAB_EXAMPLES) | ||||
|      | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue