Update to 2.0.0 tree from current Fremantle build
[opencv] / interfaces / swig / python / CMakeLists.txt
diff --git a/interfaces/swig/python/CMakeLists.txt b/interfaces/swig/python/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0236567
--- /dev/null
@@ -0,0 +1,118 @@
+# ----------------------------------------------------------------------------
+#  CMake file for python support
+# ----------------------------------------------------------------------------
+project(python_support)
+
+find_package(SWIG REQUIRED)
+include(${SWIG_USE_FILE})
+
+include_directories(${PYTHON_INCLUDE_PATH})
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../filtered)
+
+if(MSVC)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
+endif()
+
+# ----------------------------------- cv module ------------------------------
+
+set_source_files_properties(cv.i PROPERTIES
+    CPLUSPLUS ON
+    SWIG_FLAGS -includeall
+    SWIG_FLAGS -DSKIP_INCLUDES
+    )
+
+set(opencv_headers
+    ${CMAKE_SOURCE_DIR}/include/opencv/cxtypes.h
+    ${CMAKE_SOURCE_DIR}/include/opencv/cxcore.h
+    ${CMAKE_SOURCE_DIR}/include/opencv/cvtypes.h
+    ${CMAKE_SOURCE_DIR}/include/opencv/cv.h
+    )
+
+add_custom_command(
+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i
+   COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/utils/extract_aliases.py
+    ${opencv_headers} > ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i
+   DEPENDS ${opencv_headers}
+   )
+
+set(SWIG_MODULE_cv_EXTRA_DEPS
+    imagedata.i cvarr.i ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i cvaliases.i pyhelpers.i
+    nointpb.i pytypemaps.i cvshadow.i cvseq.i
+    ../general/cv.i ../general/memory.i ../general/typemaps.i
+    ../general/extensions.i ../general/doublepointers.i
+    ../general/sizeof.i ../general/cvmacros.i
+    )
+
+SWIG_ADD_MODULE(cv python cv.i cvshadow.cpp error.cpp error.h pyhelpers.cpp pyhelpers.h cvshadow.h pycvseq.hpp)
+SWIG_LINK_LIBRARIES(cv ${PYTHON_LIBRARIES} cxcore cv)
+
+# ----------------------------------- ml module ------------------------------
+
+set_source_files_properties(ml.i PROPERTIES
+    CPLUSPLUS ON
+    SWIG_FLAGS -includeall
+    SWIG_FLAGS -DSKIP_INCLUDES
+    )
+
+set(SWIG_MODULE_ml_EXTRA_DEPS
+    nointpb.i pytypemaps.i
+    ../general/memory.i ../general/typemaps.i
+    ${CMAKE_SOURCE_DIR}/include/opencv/ml.h
+    )
+
+SWIG_ADD_MODULE(ml python ml.i pyhelpers.cpp pyhelpers.h)
+SWIG_LINK_LIBRARIES(ml ${PYTHON_LIBRARIES} cxcore ml)
+
+# --------------------------------highgui module ------------------------------
+
+set_source_files_properties(highgui.i PROPERTIES
+    CPLUSPLUS ON
+    SWIG_FLAGS -includeall
+    SWIG_FLAGS -DSKIP_INCLUDES
+    )
+
+set(SWIG_MODULE_highgui_EXTRA_DEPS
+    nointpb.i pytypemaps.i
+    ../general/highgui.i
+    ../general/memory.i ../general/typemaps.i
+    ${CMAKE_SOURCE_DIR}/include/opencv/highgui.h
+    )
+
+SWIG_ADD_MODULE(highgui python highgui.i pyhelpers.cpp pyhelpers.h)
+SWIG_LINK_LIBRARIES(highgui ${PYTHON_LIBRARIES} cxcore cv highgui)
+
+# ------------------------------ installation ----------------------------------
+
+if(WIN32)
+    set_target_properties(
+        ${SWIG_MODULE_cv_REAL_NAME}
+        ${SWIG_MODULE_ml_REAL_NAME}
+        ${SWIG_MODULE_highgui_REAL_NAME}
+        PROPERTIES SUFFIX ".pyd")
+endif()
+
+get_target_property(LOC_CV ${SWIG_MODULE_cv_REAL_NAME} LOCATION)
+get_target_property(LOC_ML ${SWIG_MODULE_ml_REAL_NAME} LOCATION)
+get_target_property(LOC_HIGHGUI ${SWIG_MODULE_highgui_REAL_NAME} LOCATION)
+
+set(pyopencv_files __init__.py adaptors.py matlab_syntax.py
+    ${CMAKE_CURRENT_BINARY_DIR}/cv.py
+    ${CMAKE_CURRENT_BINARY_DIR}/ml.py
+    ${CMAKE_CURRENT_BINARY_DIR}/highgui.py)
+
+foreach(m ${LOC_CV} ${LOC_ML} ${LOC_HIGHGUI})
+    string(REPLACE "\$(OutDir)" "\${CMAKE_INSTALL_CONFIG_NAME}" m1 ${m})
+    set(pyopencv_files ${pyopencv_files} ${m1})
+endforeach()
+
+
+# TODO: need to compile *.py files
+if(WIN32)
+    install(FILES ${pyopencv_files} DESTINATION
+        "Python${PYTHON_VERSION_MAJOR_MINOR}/Lib/site-packages/opencv"
+        COMPONENT main)
+else()
+    install(FILES ${pyopencv_files} DESTINATION ${PYTHON_PLUGIN_INSTALL_PATH} COMPONENT main)
+endif()
+