@ -1,6 +1,12 @@
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# C M a k e f i l e f o r M a t l a b / O c t a v e s u p p o r t
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
macro ( PREPEND TOKEN OUT IN )
foreach ( VAR ${ IN } )
string ( REGEX REPLACE "^/" "${TOKEN}/" TMP ${ VAR } )
list ( APPEND ${ OUT } ${ TMP } )
endforeach ( )
endmacro ( )
# m a k e s u r e w e ' r e o n a s u p p o r t e d a r c h i t e c t u r e w i t h M a t l a b a n d p y t h o n i n s t a l l e d
if ( IOS OR ANDROID OR NOT MATLAB_FOUND OR NOT PYTHONLIBS_FOUND )
@ -13,20 +19,69 @@ ocv_add_module(matlab BINDINGS opencv_core opencv_imgproc
o p e n c v _ h i g h g u i o p e n c v _ m l o p e n c v _ c a l i b 3 d o p e n c v _ p h o t o
o p e n c v _ n o n f r e e o p e n c v _ c a l i b )
# A d d a l l o f t h e h e a d e r s w e w i s h t o p a r s e
string ( REPLACE "opencv_" "" OPENCV_MATLAB_MODULES " ${ OPENCV_MODULE_${the_module } _REQ_DEPS};
$ { O P E N C V _ M O D U L E _ $ { t h e _ m o d u l e } _ O P T _ D E P S } " )
# a d d t h e p y t h o n g e n e r a t o r t o t h e p y t h o n p a t h
set ( PYPATH_CACHE $ENV{ PYTHONPATH } )
set ( ENV{PYTHONPATH} ${ OPENCV_MODULE_opencv_python_LOCATION } /src2: $ENV{ PYTHONPATH } )
# g e t t h e i n c l u d e p a t h o f t h e B r i d g e
prepend ( "-I" MEX_INCLUDES ${ CMAKE_CURRENT_SOURCE_DIR } /include )
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# C o n f i g u r e t i m e c o m p o n e n t s
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
message ( "-- Trying to generate Matlab code" )
execute_process (
C O M M A N D $ { P Y T H O N _ E X E C U T A B L E } $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / g e n e r a t o r / g e n _ m a t l a b _ c a l l e r . p y
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t e s t / r a n d . h p p $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R }
E R R O R _ V A R I A B L E G E N _ E R R O R
O U T P U T _ Q U I E T
)
if ( GEN_ERROR )
message ( ${ GEN_ERROR } )
message ( "-- Generating Matlab code failed. Disabling Matlab bindings..." )
# r e s t o r e t h e p y t h o n p a t h
set ( ENV{PYTHONPATH} ${ PYPATH_CACHE } )
return ( )
else ( )
message ( "-- Trying to generate Matlab code - OK" )
endif ( )
# a t t e m p t t o c o m p i l e t h e f i l e u s i n g m e x
message ( "-- Trying to compile mex file" )
execute_process (
C O M M A N D $ { M A T L A B _ M E X _ S C R I P T } $ { M E X _ I N C L U D E S } $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / s r c / r a n d . c p p
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / s r c
E R R O R _ V A R I A B L E M E X _ E R R O R
O U T P U T _ Q U I E T
)
if ( MEX_ERROR )
message ( ${ MEX_ERROR } )
message ( "-- Error compiling mex file. Disabling Matlab bindings..." )
# r e s t o r e t h e p y t h o n p a t h
set ( ENV{PYTHONPATH} ${ PYPATH_CACHE } )
return ( )
else ( )
message ( "-- Trying to compile mex file - OK" )
endif ( )
# i f w e m a k e i t h e r e , m e x w o r k s !
set_property ( GLOBAL PROPERTY MEX_WORKS TRUE )
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# B u i l d t i m e c o m p o n e n t s
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# string ( REPLACE "opencv_" "" OPENCV_MATLAB_MODULES " ${ OPENCV_MODULE_${the_module } _REQ_DEPS};
# $ { O P E N C V _ M O D U L E _ $ { t h e _ m o d u l e } _ O P T _ D E P S } " )
foreach ( module ${ OPENCV_MATLAB_MODULES } )
if ( HAVE_opencv_ ${ module } )
list ( APPEND opencv_hdrs "${OPENCV_MODULE_opencv_${module}_LOCATION}/include/opencv2/${module}.hpp" )
endif ( )
endforeach ( )
# a d d t h e p y t h o n g e n e r a t o r t o t h e p y t h o n p a t h
set ( PYPATH_CACHE $ENV{ PYTHONPATH } )
set ( ENV{PYTHONPATH} ${ OPENCV_MODULE_opencv_python_LOCATION } /src2: $ENV{ PYTHONPATH } )
# s y n t h e s i s e t h e m a t l a b s o u r c e s
# T O D O : T h e s e s h o u l d b e b u i l d - time ( ie add_custom_command )
execute_process (
C O M M A N D $ { P Y T H O N _ E X E C U T A B L E } $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / g e n e r a t o r / g e n _ m a t l a b _ c a l l e r . p y
$ { o p e n c v _ h d r s } $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } )