Path: blob/master/modules/python/bindings/CMakeLists.txt
16337 views
set(MODULE_NAME "python_bindings_generator")1set(OPENCV_MODULE_IS_PART_OF_WORLD FALSE)2ocv_add_module(${MODULE_NAME} INTERNAL)34set(OPENCV_PYTHON_SIGNATURES_FILE "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_signatures.json" CACHE INTERNAL "")5set(OPENCV_PYTHON_BINDINGS_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE INTERNAL "")67# This file is included from a subdirectory8set(PYTHON_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../")910# get list of modules to wrap11set(OPENCV_PYTHON_MODULES)12foreach(m ${OPENCV_MODULES_BUILD})13if (";${OPENCV_MODULE_${m}_WRAPPERS};" MATCHES ";${MODULE_NAME};" AND HAVE_${m})14list(APPEND OPENCV_PYTHON_MODULES ${m})15#message(STATUS "\t${m}")16endif()17endforeach()1819set(opencv_hdrs "")20set(opencv_userdef_hdrs "")21foreach(m ${OPENCV_PYTHON_MODULES})22foreach (hdr ${OPENCV_MODULE_${m}_HEADERS})23ocv_is_subdir(is_sub "${OPENCV_MODULE_${m}_LOCATION}/include" "${hdr}")24if(is_sub)25list(APPEND opencv_hdrs "${hdr}")26endif()27endforeach()28file(GLOB hdr ${OPENCV_MODULE_${m}_LOCATION}/misc/python/shadow*.hpp)29list(APPEND opencv_hdrs ${hdr})30file(GLOB userdef_hdrs ${OPENCV_MODULE_${m}_LOCATION}/misc/python/pyopencv*.hpp)31list(APPEND opencv_userdef_hdrs ${userdef_hdrs})32endforeach(m)3334# header blacklist35ocv_list_filterout(opencv_hdrs "modules/.*\\\\.h$")36ocv_list_filterout(opencv_hdrs "modules/core/.*/cuda/")37ocv_list_filterout(opencv_hdrs "modules/core/.*/hal/")38ocv_list_filterout(opencv_hdrs "modules/core/.*/opencl/")39ocv_list_filterout(opencv_hdrs "modules/.+/utils/.*")40ocv_list_filterout(opencv_hdrs "modules/.*\\\\.inl\\\\.h*")41ocv_list_filterout(opencv_hdrs "modules/.*_inl\\\\.h*")42ocv_list_filterout(opencv_hdrs "modules/.*\\\\.details\\\\.h*")43ocv_list_filterout(opencv_hdrs "modules/.*\\\\.private\\\\.h*")44ocv_list_filterout(opencv_hdrs "modules/.*/detection_based_tracker\\\\.hpp") # Conditional compilation45if(NOT HAVE_CUDA)46ocv_list_filterout(opencv_hdrs "modules/cuda.*")47ocv_list_filterout(opencv_hdrs "modules/cudev")48endif()4950set(cv2_generated_files51"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_include.h"52"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_funcs.h"53"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_types.h"54"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_type_reg.h"55"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_ns_reg.h"56"${OPENCV_PYTHON_SIGNATURES_FILE}"57)5859string(REPLACE ";" "\n" opencv_hdrs_ "${opencv_hdrs}")60file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/headers.txt" "${opencv_hdrs_}")61add_custom_command(62OUTPUT ${cv2_generated_files}63COMMAND "${PYTHON_DEFAULT_EXECUTABLE}" "${PYTHON_SOURCE_DIR}/src2/gen2.py" "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/headers.txt"64DEPENDS "${PYTHON_SOURCE_DIR}/src2/gen2.py"65"${PYTHON_SOURCE_DIR}/src2/hdr_parser.py"66# not a real build dependency (file(WRITE) result): ${CMAKE_CURRENT_BINARY_DIR}/headers.txt67${opencv_hdrs}68COMMENT "Generate files for Python bindings and documentation"69)7071add_custom_target(gen_opencv_python_source DEPENDS ${cv2_generated_files})7273set(cv2_custom_hdr "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_custom_headers.h")74set(cv2_custom_hdr_str "//user-defined headers\n")75foreach(uh ${opencv_userdef_hdrs})76set(cv2_custom_hdr_str "${cv2_custom_hdr_str}#include \"${uh}\"\n")77endforeach(uh)78if(EXISTS "${cv2_custom_hdr}")79file(READ "${cv2_custom_hdr}" __content)80else()81set(__content "")82endif()83if("${__content}" STREQUAL "${cv2_custom_hdr_str}")84# Up-to-date85else()86file(WRITE "${cv2_custom_hdr}" "${cv2_custom_hdr_str}")87endif()88unset(__content)899091#92# Configuration for standalone build of Python bindings93#94set(PYTHON_CONFIG_SCRIPT "")95ocv_cmake_script_append_var(PYTHON_CONFIG_SCRIPT96CMAKE_BUILD_TYPE97BUILD_SHARED_LIBS9899CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE100CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE101102CV_GCC CV_CLANG ENABLE_NOISY_WARNINGS103104CMAKE_MODULE_LINKER_FLAGS105CMAKE_INSTALL_PREFIX106107OpenCV_SOURCE_DIR108109OPENCV_FORCE_PYTHON_LIBS110OPENCV_PYTHON_SKIP_LINKER_EXCLUDE_LIBS111112OPENCV_PYTHON_BINDINGS_DIR113cv2_custom_hdr114cv2_generated_files115)116set(CMAKE_HELPER_SCRIPT "${CMAKE_BINARY_DIR}/opencv_python_config.cmake")117file(GENERATE OUTPUT "${CMAKE_HELPER_SCRIPT}" CONTENT "${PYTHON_CONFIG_SCRIPT}")118119120