Update to 2.0.0 tree from current Fremantle build
[opencv] / interfaces / swig / python / CMakeLists.txt
1 # ----------------------------------------------------------------------------
2 #  CMake file for python support
3 # ----------------------------------------------------------------------------
4 project(python_support)
5
6 find_package(SWIG REQUIRED)
7 include(${SWIG_USE_FILE})
8
9 include_directories(${PYTHON_INCLUDE_PATH})
10 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
11 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../filtered)
12
13 if(MSVC)
14     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
15 endif()
16
17 # ----------------------------------- cv module ------------------------------
18
19 set_source_files_properties(cv.i PROPERTIES
20     CPLUSPLUS ON
21     SWIG_FLAGS -includeall
22     SWIG_FLAGS -DSKIP_INCLUDES
23     )
24
25 set(opencv_headers
26     ${CMAKE_SOURCE_DIR}/include/opencv/cxtypes.h
27     ${CMAKE_SOURCE_DIR}/include/opencv/cxcore.h
28     ${CMAKE_SOURCE_DIR}/include/opencv/cvtypes.h
29     ${CMAKE_SOURCE_DIR}/include/opencv/cv.h
30     )
31
32 add_custom_command(
33    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i
34    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/utils/extract_aliases.py
35     ${opencv_headers} > ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i
36    DEPENDS ${opencv_headers}
37    )
38
39 set(SWIG_MODULE_cv_EXTRA_DEPS
40     imagedata.i cvarr.i ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i cvaliases.i pyhelpers.i
41     nointpb.i pytypemaps.i cvshadow.i cvseq.i
42     ../general/cv.i ../general/memory.i ../general/typemaps.i
43     ../general/extensions.i ../general/doublepointers.i
44     ../general/sizeof.i ../general/cvmacros.i
45     )
46
47 SWIG_ADD_MODULE(cv python cv.i cvshadow.cpp error.cpp error.h pyhelpers.cpp pyhelpers.h cvshadow.h pycvseq.hpp)
48 SWIG_LINK_LIBRARIES(cv ${PYTHON_LIBRARIES} cxcore cv)
49
50 # ----------------------------------- ml module ------------------------------
51
52 set_source_files_properties(ml.i PROPERTIES
53     CPLUSPLUS ON
54     SWIG_FLAGS -includeall
55     SWIG_FLAGS -DSKIP_INCLUDES
56     )
57
58 set(SWIG_MODULE_ml_EXTRA_DEPS
59     nointpb.i pytypemaps.i
60     ../general/memory.i ../general/typemaps.i
61     ${CMAKE_SOURCE_DIR}/include/opencv/ml.h
62     )
63
64 SWIG_ADD_MODULE(ml python ml.i pyhelpers.cpp pyhelpers.h)
65 SWIG_LINK_LIBRARIES(ml ${PYTHON_LIBRARIES} cxcore ml)
66
67 # --------------------------------highgui module ------------------------------
68
69 set_source_files_properties(highgui.i PROPERTIES
70     CPLUSPLUS ON
71     SWIG_FLAGS -includeall
72     SWIG_FLAGS -DSKIP_INCLUDES
73     )
74
75 set(SWIG_MODULE_highgui_EXTRA_DEPS
76     nointpb.i pytypemaps.i
77     ../general/highgui.i
78     ../general/memory.i ../general/typemaps.i
79     ${CMAKE_SOURCE_DIR}/include/opencv/highgui.h
80     )
81
82 SWIG_ADD_MODULE(highgui python highgui.i pyhelpers.cpp pyhelpers.h)
83 SWIG_LINK_LIBRARIES(highgui ${PYTHON_LIBRARIES} cxcore cv highgui)
84
85 # ------------------------------ installation ----------------------------------
86
87 if(WIN32)
88     set_target_properties(
89         ${SWIG_MODULE_cv_REAL_NAME}
90         ${SWIG_MODULE_ml_REAL_NAME}
91         ${SWIG_MODULE_highgui_REAL_NAME}
92         PROPERTIES SUFFIX ".pyd")
93 endif()
94
95 get_target_property(LOC_CV ${SWIG_MODULE_cv_REAL_NAME} LOCATION)
96 get_target_property(LOC_ML ${SWIG_MODULE_ml_REAL_NAME} LOCATION)
97 get_target_property(LOC_HIGHGUI ${SWIG_MODULE_highgui_REAL_NAME} LOCATION)
98
99 set(pyopencv_files __init__.py adaptors.py matlab_syntax.py
100     ${CMAKE_CURRENT_BINARY_DIR}/cv.py
101     ${CMAKE_CURRENT_BINARY_DIR}/ml.py
102     ${CMAKE_CURRENT_BINARY_DIR}/highgui.py)
103
104 foreach(m ${LOC_CV} ${LOC_ML} ${LOC_HIGHGUI})
105     string(REPLACE "\$(OutDir)" "\${CMAKE_INSTALL_CONFIG_NAME}" m1 ${m})
106     set(pyopencv_files ${pyopencv_files} ${m1})
107 endforeach()
108
109
110 # TODO: need to compile *.py files
111 if(WIN32)
112     install(FILES ${pyopencv_files} DESTINATION
113         "Python${PYTHON_VERSION_MAJOR_MINOR}/Lib/site-packages/opencv"
114         COMPONENT main)
115 else()
116     install(FILES ${pyopencv_files} DESTINATION ${PYTHON_PLUGIN_INSTALL_PATH} COMPONENT main)
117 endif()
118