1
1
# This file is included from a subdirectory
2
2
set (PYTHON_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR} /../" )
3
3
4
- # try to use dynamic symbols linking with libpython.so
5
- set (OPENCV_FORCE_PYTHON_LIBS OFF CACHE BOOL "" )
6
- string (REPLACE "-Wl,--no-undefined" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} " )
7
- if (NOT WIN32 AND NOT APPLE AND NOT OPENCV_PYTHON_SKIP_LINKER_EXCLUDE_LIBS )
8
- set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--exclude-libs=ALL" )
9
- endif ()
10
-
11
- ocv_add_module (${MODULE_NAME} BINDINGS )
4
+ ocv_add_module (${MODULE_NAME} BINDINGS PRIVATE_REQUIRED opencv_python_bindings_generator )
12
5
13
6
ocv_module_include_directories (
14
7
"${${PYTHON} _INCLUDE_PATH}"
8
+ )
9
+ include_directories (
15
10
${${PYTHON}_NUMPY_INCLUDE_DIRS}
16
11
"${PYTHON_SOURCE_DIR} /src2"
17
- )
18
-
19
- # get list of modules to wrap
20
- # message(STATUS "Wrapped in ${MODULE_NAME}:")
21
- set (OPENCV_PYTHON_MODULES )
22
- foreach (m ${OPENCV_MODULES_BUILD} )
23
- if (";${OPENCV_MODULE_${m} _WRAPPERS};" MATCHES ";${MODULE_NAME} ;" AND HAVE_${m} )
24
- list (APPEND OPENCV_PYTHON_MODULES ${m} )
25
- # message(STATUS "\t${m}")
26
- endif ()
27
- endforeach ()
28
-
29
- set (opencv_hdrs "" )
30
- set (opencv_userdef_hdrs "" )
31
- foreach (m ${OPENCV_PYTHON_MODULES} )
32
- list (APPEND opencv_hdrs ${OPENCV_MODULE_${m}_HEADERS} )
33
- file (GLOB userdef_hdrs ${OPENCV_MODULE_${m}_LOCATION}/misc/python/pyopencv*.hpp )
34
- list (APPEND opencv_userdef_hdrs ${userdef_hdrs} )
35
- endforeach (m )
36
-
37
- # header blacklist
38
- ocv_list_filterout (opencv_hdrs "modules/.*\\\\ .h$" )
39
- ocv_list_filterout (opencv_hdrs "modules/core/.*/cuda" )
40
- ocv_list_filterout (opencv_hdrs "modules/cuda.*" )
41
- ocv_list_filterout (opencv_hdrs "modules/cudev" )
42
- ocv_list_filterout (opencv_hdrs "modules/core/.*/hal/" )
43
- ocv_list_filterout (opencv_hdrs "modules/.+/utils/.*" )
44
- ocv_list_filterout (opencv_hdrs "modules/.*\\\\ .inl\\\\ .h*" )
45
- ocv_list_filterout (opencv_hdrs "modules/.*_inl\\\\ .h*" )
46
- ocv_list_filterout (opencv_hdrs "modules/.*\\\\ .details\\\\ .h*" )
47
- ocv_list_filterout (opencv_hdrs "modules/.*/detection_based_tracker\\\\ .hpp" ) # Conditional compilation
48
-
49
- set (cv2_generated_hdrs
50
- "${CMAKE_CURRENT_BINARY_DIR} /pyopencv_generated_include.h"
51
- "${CMAKE_CURRENT_BINARY_DIR} /pyopencv_generated_funcs.h"
52
- "${CMAKE_CURRENT_BINARY_DIR} /pyopencv_generated_types.h"
53
- "${CMAKE_CURRENT_BINARY_DIR} /pyopencv_generated_type_reg.h"
54
- "${CMAKE_CURRENT_BINARY_DIR} /pyopencv_generated_ns_reg.h"
55
- )
56
-
57
- set (OPENCV_${PYTHON}_SIGNATURES_FILE "${CMAKE_CURRENT_BINARY_DIR} /pyopencv_signatures.json" CACHE INTERNAL "" )
58
-
59
- set (cv2_generated_files ${cv2_generated_hdrs}
60
- "${OPENCV_${PYTHON} _SIGNATURES_FILE}"
61
- )
62
-
63
- string (REPLACE ";" "\n " opencv_hdrs_ "${opencv_hdrs} " )
64
- file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /headers.txt" "${opencv_hdrs_} " )
65
- add_custom_command (
66
- OUTPUT ${cv2_generated_files}
67
- COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${PYTHON_SOURCE_DIR} /src2/gen2.py" ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_CURRENT_BINARY_DIR} /headers.txt" "${PYTHON} "
68
- DEPENDS ${PYTHON_SOURCE_DIR} /src2/gen2.py
69
- DEPENDS ${PYTHON_SOURCE_DIR} /src2/hdr_parser.py
70
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /headers.txt
71
- DEPENDS ${opencv_hdrs}
72
- COMMENT "Generate files for ${the_module} "
12
+ "${OPENCV_PYTHON_BINDINGS_DIR} "
73
13
)
74
14
75
- add_custom_target (gen_${the_module} DEPENDS ${cv2_generated_files} )
76
-
77
- set (cv2_custom_hdr "${CMAKE_CURRENT_BINARY_DIR} /pyopencv_custom_headers.h" )
78
- file (WRITE ${cv2_custom_hdr} "//user-defined headers\n " )
79
- foreach (uh ${opencv_userdef_hdrs} )
80
- file (APPEND ${cv2_custom_hdr} "#include \" ${uh} \"\n " )
81
- endforeach (uh )
15
+ # try to use dynamic symbols linking with libpython.so
16
+ set (OPENCV_FORCE_PYTHON_LIBS OFF CACHE BOOL "" )
17
+ string (REPLACE "-Wl,--no-undefined" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} " )
18
+ if (NOT WIN32 AND NOT APPLE AND NOT OPENCV_PYTHON_SKIP_LINKER_EXCLUDE_LIBS )
19
+ set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--exclude-libs=ALL" )
20
+ endif ()
82
21
83
22
ocv_add_library (${the_module} MODULE ${PYTHON_SOURCE_DIR} /src2/cv2.cpp ${cv2_generated_hdrs} ${opencv_userdef_hdrs} ${cv2_custom_hdr} )
84
- add_dependencies (${the_module} gen_${the_module} )
23
+ add_dependencies (${the_module} gen_opencv_python_source )
85
24
86
25
if (APPLE )
87
26
set_target_properties (${the_module} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup" )
@@ -92,7 +31,10 @@ elseif(WIN32 OR OPENCV_FORCE_PYTHON_LIBS)
92
31
ocv_target_link_libraries (${the_module} LINK_PRIVATE ${${PYTHON}_LIBRARIES} )
93
32
endif ()
94
33
endif ()
95
- ocv_target_link_libraries (${the_module} LINK_PRIVATE ${OPENCV_MODULE_${the_module}_DEPS} )
34
+
35
+ set (deps ${OPENCV_MODULE_${the_module}_DEPS} )
36
+ list (REMOVE_ITEM deps opencv_python_bindings_generator ) # don't add dummy module to target_link_libraries list
37
+ ocv_target_link_libraries (${the_module} LINK_PRIVATE ${deps} )
96
38
97
39
if (DEFINED ${PYTHON} _CVPY_SUFFIX )
98
40
set (CVPY_SUFFIX "${${PYTHON} _CVPY_SUFFIX}" )
0 commit comments