/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/javascript/Makefile.in
187 строк
5 KB
William S Fulton
[JavaScript] Speed up node and napi test-suite runs
11 авг 2026, 23:26
11 авг 2026, 23:26
ec83964
Код
Авторство
О чём код?
####################################################################### # Makefile for javascript test-suite ####################################################################### LANGUAGE = javascript NODEGYP = @NODEGYP@ NODEJS = @NODEJS@ SCRIPTSUFFIX = _runme.js OBJEXT = @OBJEXT@ SO = @SO@ # node-gyp's Release configuration hardcodes -O3, which dominates the node and napi test-suite run times. GYP_OPTFLAGS # is appended after the flags node-gyp adds itself, so the last -O option wins - override with -O2 to compile optimised. GYP_OPTFLAGS = -O0 GYP_CXXFLAGS = @BOOST_CPPFLAGS@ @PLATCXXFLAGS@ @NAPI_INCLUDE@ $(GYP_OPTFLAGS) HAVE_CXX11 = @HAVE_CXX11@ HAVE_CXX14 = @HAVE_CXX14@ HAVE_CXX17 = @HAVE_CXX17@ HAVE_CXX20 = @HAVE_CXX20@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ CPP_TEST_CASES += \ iadd \ inplaceadd \ input \ javascript_lib_arrays \ li_cdata_carrays_cpp \ li_factory \ li_std_containers_int \ li_std_map_member C_TEST_CASES += \ javascript_uint8array_fragment \ li_cdata_carrays \ # napi fails FAILING_CPP_TESTS += \ smart_pointer_static \ SWIGEXE = $(top_builddir)/swig SWIG_LIB_DIR = $(top_srcdir)/Lib ifneq (, $(ENGINE)) JSENGINE=$(ENGINE) else ifneq (, $(NODEJS)) JSENGINE=node else ifneq (, @JSCENABLED@) JSENGINE=jsc else ifneq (, @JSV8ENABLED@) JSENGINE=v8 else # Shouldn't happen, but avoid empty value if it does. JSENGINE=node endif endif endif endif include $(srcdir)/../common.mk # Ensure testsuite remains free from SWIG warnings. SWIGOPT += -Werror _setup = \ if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \ $(ECHO_PROGRESS) "$(ACTION)ing $(LANGUAGE) ($(JSENGINE)) testcase $* (with run test)" ; \ else \ $(ECHO_PROGRESS) "$(ACTION)ing $(LANGUAGE) ($(JSENGINE)) testcase $*" ; \ fi; SWIGOPT += -$(JSENGINE) ifeq ($(JSENGINE), $(filter $(JSENGINE), node napi)) SWIGOPT += -DBUILDING_NODE_EXTENSION=1 # shut up some warnings # dunno... ignoring generously apply_signed_char.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" constant_pointers.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" cpp11_ref_qualifiers.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" director_basic.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" enum_thorough.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" member_funcptr_galore.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" director_unwrap_result.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" # Run with asan: # ASAN=1 ENGINE=napi make <test_name>.cpptest # ifneq (, $(ASAN)) GYP_CFLAGS += \"-fsanitize=address\" GYP_OPTS = --debug ASAN_PRELOAD = $(shell $(CC) -print-file-name=libasan.so) LSAN_OPTIONS = suppressions=$(srcdir)/node_template/napi-leaks-suppression.txt BUILD = Debug else BUILD = Release endif setup_node = \ test -d $* || mkdir $* && \ sed -e 's|$$testcase|$*|g; s|$$cflags|$(GYP_CFLAGS)|g; s|$$cxxflags|"$(GYP_CXXFLAGS)"|g; s|$$srcdir|$(srcdir)|g' \ $(srcdir)/node_template/binding.gyp.in > $*/binding.gyp && \ sed -e 's|$$testcase|$*|g; s|$$build|$(BUILD)|g;' \ $(srcdir)/node_template/index.js.in > $*/index.js # Note: we need to use swig in C parse mode, but make node-gyp believe it is c++ (via file extension) swig_and_compile_c = \ $(setup_node) && \ $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' \ SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ SWIGOPT='-javascript $(SWIGOPT) -o $*_wrap.cxx $(srcdir)/../$*.i' swiginvoke && \ MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) --loglevel=silent --directory $* configure $(GYP_OPTS) build 1>>/dev/null swig_and_compile_cpp = \ $(setup_node) && \ $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' \ SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \ SWIGOPT='-c++ -javascript $(SWIGOPT) $(srcdir)/../$*.i' swiginvoke && \ MAKEFLAGS= $(COMPILETOOL) $(NODEGYP) --loglevel=silent --directory $* configure $(GYP_OPTS) build 1>>/dev/null run_testcase = \ if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \ env NODE_PATH=$$PWD:$(srcdir) LD_PRELOAD=$(ASAN_PRELOAD) LSAN_OPTIONS=$(LSAN_OPTIONS) \ $(RUNTOOL) $(NODEJS) $(srcdir)/$*$(SCRIPTSUFFIX); \ fi %.ctest: $(_setup) +$(swig_and_compile_c) $(run_testcase) %.cpptest: $(_setup) +$(swig_and_compile_cpp) $(run_testcase) %.multicpptest: $(_setup) else run_testcase = \ if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \ $(RUNTOOL) $(top_builddir)/Tools/javascript/javascript -$(JSENGINE) $(srcdir)/$*$(SCRIPTSUFFIX); \ fi %.ctest: $(_setup) +$(swig_and_compile_c) $(run_testcase) %.cpptest: $(_setup) +$(swig_and_compile_cpp) $(run_testcase) %.multicpptest: $(_setup) +$(swig_and_compile_multi_cpp) $(run_testcase) endif %.clean: @rm -rf $* @rm -f $*_wrap.* $*$(SO) $*.$(OBJEXT) clean: for ext in _wrap.cxx _wrap.$(OBJEXT) $(SO); do \ rm -f clientdata_prop_a$${ext} clientdata_prop_b$${ext}; \ rm -f import_share_a$${ext} import_share_b$${ext} import_share_c$${ext}; \ rm -f import_stl_a$${ext} import_stl_b$${ext}; \ rm -f imports_a$${ext} imports_b$${ext}; \ rm -f mod_a$${ext} mod_b$${ext}; \ rm -f multi_import_a$${ext} multi_import_b$${ext} multi_import_d$${ext}; \ rm -f packageoption_a$${ext} packageoption_b$${ext} packageoption_c$${ext}; \ rm -f template_typedef_cplx2$${ext}; \ done