cmake_minimum_required( VERSION 2.8 ) project( VAMatlab ) list( APPEND CMAKE_MODULE_PATH "$ENV{VISTA_CMAKE_COMMON}" ) include( VistaCommon ) if( NOT DEFINED ITA_VA_MATLAB_BUILD_WITH_INTERNAL_CORE ) set( ITA_VA_MATLAB_BUILD_WITH_INTERNAL_CORE OFF CACHE BOOL "Build a VACore into VAMatlab instead of using a network adapter (not recommended)" ) endif( NOT DEFINED ITA_VA_MATLAB_BUILD_WITH_INTERNAL_CORE ) if( NOT DEFINED ITA_VAMATLAB_VERSION_MAJOR ) set( ITA_VAMATLAB_VERSION_MAJOR "v2018" CACHE STRING "VAMatlab version major (usually 'v' and year)" ) endif( NOT DEFINED ITA_VAMATLAB_VERSION_MAJOR ) if( NOT DEFINED ITA_VAMATLAB_VERSION_MINOR ) set( ITA_VAMATLAB_VERSION_MINOR "b" CACHE STRING "VAMatlab version minor (usually a,b,c ...)" ) endif( NOT DEFINED ITA_VAMATLAB_VERSION_MINOR ) if( NOT DEFINED ITA_VAMATLAB_SHOW_BANNER ) set( ITA_VAMATLAB_SHOW_BANNER ON CACHE BOOL "Show VA banner on Matlab init" ) endif( NOT DEFINED ITA_VAMATLAB_SHOW_BANNER ) if( NOT DEFINED ITA_VAMATLAB_DEPLOY_MATLAB_EXECUTABLE ) set( ITA_VAMATLAB_DEPLOY_MATLAB_EXECUTABLE ON CACHE BOOL "Install VAMatlab executable into deploy binary directory" ) endif( ) if( NOT DEFINED ITA_VAMATLAB_BUILD_WITH_OPTITRACK_TRACKING_SUPPORT ) set( ITA_VAMATLAB_BUILD_WITH_OPTITRACK_TRACKING_SUPPORT ON CACHE BOOL "Activate integrated OptiTrack tracking support" ) endif( ) if( NOT DEFINED ITA_VAMATLAB_POSTBUILD_CREATE_MATLAB_CLASS ) set( ITA_VAMATLAB_POSTBUILD_CREATE_MATLAB_CLASS OFF CACHE BOOL "Auto-create Matlab convenience class after build [for future use]" ) endif( ) vista_use_package( VABase REQUIRED FIND_DEPENDENCIES ) vista_use_package( VANet REQUIRED FIND_DEPENDENCIES ) vista_use_package( Matlab REQUIRED FIND_DEPENDENCIES ) vista_use_package( NatNetSDK REQUIRED FIND_DEPENDENCIES ) if( ITA_VISTA_BUILD_STATIC ) add_definitions( -DVISTA_STATIC ) if( WIN32 ) list( APPEND VISTA_USE_PACKAGE_LIBRARIES ws2_32 winspool ) endif( ) endif( ) if( NOT BUILD_SHARED_LIBS ) add_definitions( -DVABASE_STATIC -DVANET_STATIC ) endif( ) if( ITA_VAMATLAB_BUILD_WITH_INTERNAL_CORE ) vista_use_package( VACore REQUIRED FIND_DEPENDENCIES ) add_definitions( -DVAMATLAB_INTERNAL_CORE ) endif( ) add_definitions( "-DVAMATLAB_VERSION_MAJOR=\"${ITA_VAMATLAB_VERSION_MAJOR}\"" ) add_definitions( "-DVAMATLAB_VERSION_MINOR=\"${ITA_VAMATLAB_VERSION_MINOR}\"" ) if( ITA_VAMATLAB_SHOW_BANNER ) add_definitions( -DVAMATLAB_SHOW_BANNER ) endif( ) if( ITA_VAMATLAB_BUILD_WITH_OPTITRACK_TRACKING_SUPPORT ) add_definitions( -DVAMATLAB_WITH_OPTITRACK ) endif( ) # Sources set( VAMATLAB_SRC "src/VAMatlabFunctionMapping.h" "src/VAMatlabHelpers.h" "src/VAMatlabHelpers.cpp" "src/VAMatlabConnection.cpp" "src/VAMatlabConnection.h" "src/VAMatlabExecutable.cpp" ) if( ITA_VAMATLAB_BUILD_WITH_OPTITRACK_TRACKING_SUPPORT ) list( APPEND VAMATLAB_SRC "src/VAMatlabTracking.h" "src/VAMatlabTracking.cpp" ) endif( ) add_library( VAMatlab SHARED ${VAMATLAB_SRC} VAMatlab.def ) target_link_libraries( VAMatlab ${VISTA_USE_PACKAGE_LIBRARIES} ) if( ITA_VA_INSTALL_WITH_DLLS ) vista_install_all_dlls( bin ) endif( ) vista_configure_lib( VAMatlab ) vista_install( VAMatlab ) vista_create_default_info_file( VAMatlab ) vista_create_cmake_configs( VAMatlab ) set_property( TARGET VAMatlab PROPERTY FOLDER "VA/Bindings" ) set_target_properties( VAMatlab PROPERTIES SUFFIX ".${MATLAB_MEX_EXTENSION}") if( ITA_VAMATLAB_DEPLOY_MATLAB_EXECUTABLE ) install( FILES "${CMAKE_BINARY_DIR}/lib/VAMatlab.${MATLAB_MEX_EXTENSION}" DESTINATION "bin" ) endif( ) # VA matlab scripts file set( VAMATLAB_BASE_DIR "${CMAKE_INSTALL_PREFIX}" ) configure_file( "matlab/VA_build.m.proto" "${CMAKE_CURRENT_SOURCE_DIR}/matlab/VA_build_absolute.m" @ONLY ) set( VAMATLAB_BASE_DIR ".." ) # relative path from matlab folder configure_file( "matlab/VA_build.m.proto" "${CMAKE_CURRENT_SOURCE_DIR}/matlab/VA_build.m" @ONLY ) # Install specialties install( FILES "matlab/VA_build.m" DESTINATION "matlab" ) install( FILES "matlab/VA.m.proto" DESTINATION "matlab" ) install( FILES "matlab/VA_generate_stubs.m" DESTINATION "matlab" ) install( FILES "matlab/VA_example_simple.m" DESTINATION "matlab" ) install( FILES "matlab/VA_example_tracked_listener.m" DESTINATION "matlab" ) install( FILES "matlab/VA_example_offline_simulation.m" DESTINATION "matlab" ) install( FILES "matlab/VA_example_offline_simulation_ir.m" DESTINATION "matlab" ) install( FILES "matlab/VA_setup.fig" DESTINATION "matlab" ) install( FILES "matlab/VA_setup.m" DESTINATION "matlab" ) # Build Matlab class using Matlab (future work) if( ITA_VAMATLAB_POSTBUILD_CREATE_MATLAB_CLASS ) set( MATLAB_BUILD_CLASS_COMMAND "matlab -nodisplay -nosplash -nodesktop -r \"run( 'matlab/VA_build_absolute.m' )\"" ) add_custom_command( TARGET VAMatlab POST_BUILD COMMAND ${MATLAB_BUILD_CLASS_COMMAND} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Running matlab VA installer" VERBATIM ) else( ) message( STATUS "To make the VA convenience class available, after deploy, please run the 'matlab/VA_build.m' script once in Matlab. It will generate the VA.m class file in the matlab folder." ) endif( ) if( EXISTS "matlab/VA.m" ) install( FILES "matlab/VA.m" DESTINATION "matlab" ) endif( )