diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index 3da937fccc4edfb37e95a378b3e7c6336179a3a5..cccf0c3915ff5434050f103ffb326eef7931c0b4 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -12,23 +12,18 @@ endif() set(the_description "The python bindings") -set(candidate_deps_raw) +set(candidate_deps) foreach(mp ${OPENCV_MODULES_PATH} ${OPENCV_EXTRA_MODULES_PATH}) file(GLOB names "${mp}/*") - list(APPEND candidate_deps_raw ${names}) -endforeach(mp) - -set(candidate_deps) -foreach(m IN LISTS candidate_deps_raw) - if(IS_DIRECTORY ${m}) - get_filename_component(m ${m} NAME) - if (NOT ${m} MATCHES "^cud(a|ev)") - if (NOT ${m} MATCHES "optim") # unless we handle namespaces - list(APPEND candidate_deps "opencv_${m}") + foreach(m IN LISTS names) + if(IS_DIRECTORY ${m}) + get_filename_component(m ${m} NAME) + if (NOT ${m} MATCHES "^cud(a|ev)") + list(APPEND candidate_deps "opencv_${m}") + endif() endif() - endif() - endif() -endforeach(m) + endforeach(m) +endforeach(mp) ocv_add_module(python BINDINGS OPTIONAL ${candidate_deps}) @@ -39,23 +34,26 @@ ocv_module_include_directories( ) -set(opencv_hdrs_raw) -foreach(m IN LISTS OPENCV_MODULE_opencv_python_DEPS) - list(APPEND opencv_hdrs_raw "${OPENCV_MODULE_${m}_HEADERS}") -endforeach(m) +set(opencv_hdrs_blacklist + ".h$" + "opencv2/core/cuda" + "opencv2/objdetect/detection_based_tracker.hpp" + "opencv2/optim.hpp") -# remove problematic headers set(opencv_hdrs) -foreach(hdr IN LISTS opencv_hdrs_raw) - if(NOT ${hdr} MATCHES ".h$") - if(NOT ${hdr} MATCHES "opencv2/core/cuda") - if(NOT ${hdr} MATCHES "opencv2/objdetect/detection_based_tracker.hpp") - list(APPEND opencv_hdrs ${hdr}) - endif() - endif() - endif() -endforeach(hdr) - +foreach(m IN LISTS OPENCV_MODULE_opencv_python_DEPS) + foreach(hdr IN LISTS OPENCV_MODULE_${m}_HEADERS) + set(good TRUE) + foreach(s IN LISTS opencv_hdrs_blacklist) + if (${hdr} MATCHES ${s}) + set(good FALSE) + endif() + endforeach(s) + if(${good}) + list(APPEND opencv_hdrs ${hdr}) + endif() + endforeach(hdr) +endforeach(m) set(cv2_generated_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_include.h" diff --git a/modules/python/src2/gen2.py b/modules/python/src2/gen2.py index 5666355bb635c4c888a35515d56bdefb02164fc6..9488107715ceda3755a54dc42c4c8005e1e21cd6 100755 --- a/modules/python/src2/gen2.py +++ b/modules/python/src2/gen2.py @@ -831,6 +831,7 @@ class PythonWrapperGenerator(object): # step 1: scan the headers and build more descriptive maps of classes, consts, functions for hdr in srcfiles: + print(hdr) decls = parser.parse(hdr) if len(decls) == 0: continue diff --git a/modules/python/src2/hdr_parser.py b/modules/python/src2/hdr_parser.py index 92f1b7347c7322014d7d64308050d50462af4dbd..eb9100928f9e3f4cc64492daec062cfe16a8f890 100755 --- a/modules/python/src2/hdr_parser.py +++ b/modules/python/src2/hdr_parser.py @@ -206,6 +206,8 @@ class CppHeaderParser(object): def parse_enum(self, decl_str): l = decl_str ll = l.split(",") + if ll[-1].strip() == "": + ll = ll[:-1] prev_val = "" prev_val_delta = -1 decl = []