mirror of
https://github.com/opencv/opencv.git
synced 2025-06-13 04:52:53 +08:00
opencv_js: Support Python3 and MSVC
This commit is contained in:
parent
c6ed2bf9aa
commit
b487e2df0b
@ -66,9 +66,14 @@ link_libraries(${OPENCV_MODULE_${the_module}_DEPS})
|
|||||||
|
|
||||||
ocv_add_executable(${the_module} ${bindings_cpp})
|
ocv_add_executable(${the_module} ${bindings_cpp})
|
||||||
|
|
||||||
set_target_properties(${the_module} PROPERTIES COMPILE_FLAGS "-Wno-missing-prototypes")
|
set(COMPILE_FLAGS "")
|
||||||
|
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||||
set_target_properties(${the_module} PROPERTIES LINK_FLAGS "--memory-init-file 0 -s TOTAL_MEMORY=134217728 -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s EXPORT_NAME=\"'cv'\" -s DEMANGLE_SUPPORT=1 -s FORCE_FILESYSTEM=1 --use-preload-plugins --bind --post-js ${JS_HELPER} -Wno-missing-prototypes")
|
set(COMPILE_FLAGS "${COMPILE_FLAGS} -Wno-missing-prototypes")
|
||||||
|
endif()
|
||||||
|
if(COMPILE_FLAGS)
|
||||||
|
set_target_properties(${the_module} PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS})
|
||||||
|
endif()
|
||||||
|
set_target_properties(${the_module} PROPERTIES LINK_FLAGS "--memory-init-file 0 -s TOTAL_MEMORY=134217728 -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s EXPORT_NAME=\"'cv'\" -s DEMANGLE_SUPPORT=1 -s FORCE_FILESYSTEM=1 --use-preload-plugins --bind --post-js ${JS_HELPER} ${COMPILE_FLAGS}")
|
||||||
|
|
||||||
# add UMD wrapper
|
# add UMD wrapper
|
||||||
set(MODULE_JS_PATH "${OpenCV_BINARY_DIR}/bin/${the_module}.js")
|
set(MODULE_JS_PATH "${OpenCV_BINARY_DIR}/bin/${the_module}.js")
|
||||||
|
@ -70,7 +70,6 @@
|
|||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import sys, re, os
|
import sys, re, os
|
||||||
from templates import *
|
from templates import *
|
||||||
from sets import Set
|
|
||||||
|
|
||||||
if sys.version_info[0] >= 3:
|
if sys.version_info[0] >= 3:
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
@ -185,7 +184,7 @@ class ClassInfo(object):
|
|||||||
self.consts = {}
|
self.consts = {}
|
||||||
customname = False
|
customname = False
|
||||||
self.jsfuncs = {}
|
self.jsfuncs = {}
|
||||||
self.constructor_arg_num = Set()
|
self.constructor_arg_num = set()
|
||||||
|
|
||||||
self.has_smart_ptr = False
|
self.has_smart_ptr = False
|
||||||
|
|
||||||
@ -372,11 +371,20 @@ class JSWrapperGenerator(object):
|
|||||||
name = decl[0].rsplit(" ", 1)[1]
|
name = decl[0].rsplit(" ", 1)[1]
|
||||||
namespace, classes, val = self.split_decl_name(name)
|
namespace, classes, val = self.split_decl_name(name)
|
||||||
namespace = '.'.join(namespace)
|
namespace = '.'.join(namespace)
|
||||||
|
ns = self.namespaces.setdefault(namespace, Namespace())
|
||||||
|
if len(name) == 0: name = "<unnamed>"
|
||||||
|
if name.endswith("<unnamed>"):
|
||||||
|
i = 0
|
||||||
|
while True:
|
||||||
|
i += 1
|
||||||
|
candidate_name = name.replace("<unnamed>", "unnamed_%u" % i)
|
||||||
|
if candidate_name not in ns.enums:
|
||||||
|
name = candidate_name
|
||||||
|
break;
|
||||||
val = '_'.join(classes + [name])
|
val = '_'.join(classes + [name])
|
||||||
cname = name.replace('.', '::')
|
cname = name.replace('.', '::')
|
||||||
ns = self.namespaces.setdefault(namespace, Namespace())
|
|
||||||
if name in ns.enums:
|
if name in ns.enums:
|
||||||
print("Generator warning: constant %s (cname=%s) already exists" \
|
print("Generator warning: enum %s (cname=%s) already exists" \
|
||||||
% (name, cname))
|
% (name, cname))
|
||||||
# sys.exit(-1)
|
# sys.exit(-1)
|
||||||
else:
|
else:
|
||||||
@ -809,7 +817,7 @@ class JSWrapperGenerator(object):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
# Generate bindings for methods
|
# Generate bindings for methods
|
||||||
for method_name, method in class_info.methods.iteritems():
|
for method_name, method in class_info.methods.items():
|
||||||
if method.cname in ignore_list:
|
if method.cname in ignore_list:
|
||||||
continue
|
continue
|
||||||
if not method.name in white_list[method.class_name]:
|
if not method.name in white_list[method.class_name]:
|
||||||
@ -839,7 +847,7 @@ class JSWrapperGenerator(object):
|
|||||||
class_bindings.append(smart_ptr_reg_template.substitute(cname=class_info.cname, name=class_info.name))
|
class_bindings.append(smart_ptr_reg_template.substitute(cname=class_info.cname, name=class_info.name))
|
||||||
|
|
||||||
# Attach external constructors
|
# Attach external constructors
|
||||||
# for method_name, method in class_info.ext_constructors.iteritems():
|
# for method_name, method in class_info.ext_constructors.items():
|
||||||
# print("ext constructor", method_name)
|
# print("ext constructor", method_name)
|
||||||
#if class_info.ext_constructors:
|
#if class_info.ext_constructors:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user