Test-suite Makefile now supports testing for all three Javascript variants.
- node.js - custom JavascriptCore interpreter - custom V8 interpreter
This commit is contained in:
parent
962207e0f3
commit
26b5acbbe8
2 changed files with 123 additions and 102 deletions
|
|
@ -517,29 +517,67 @@ java_clean:
|
||||||
##### JAVASCRIPT ######
|
##### JAVASCRIPT ######
|
||||||
##################################################################
|
##################################################################
|
||||||
|
|
||||||
|
ROOT_DIR = @ROOT_DIR@
|
||||||
|
JSCFLAGS = @JSCFLAGS@
|
||||||
|
JSCXXFLAGS = @JSCXXFLAGS@
|
||||||
|
JSINCLUDES = @JSCOREINC@ @JSV8INC@
|
||||||
|
JSDYNAMICLINKING = @JSCOREDYNAMICLINKING@ @JSV8DYNAMICLINKING@
|
||||||
|
JSLIBRARYPREFIX = @JSLIBRARYPREFIX@
|
||||||
|
JSSO =@JSSO@
|
||||||
|
JSLDSHARED = @JSLDSHARED@
|
||||||
|
JSCXXSHARED = @JSCXXSHARED@
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
# Definitions
|
# Compile a custom javascript interpreter
|
||||||
|
# ----------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Note:
|
||||||
|
# There is no common CLI Javascript interpreter.
|
||||||
|
# V8 comes with one 'd8' which however does not provide a means
|
||||||
|
# to load extensions. Therefore, by default we use nodejs as
|
||||||
|
# environment.
|
||||||
|
# For testing native v8 and jsc extensions we provide our own
|
||||||
|
# interpreter (see 'Tools/javascript').
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
JSEXE = node
|
JS_INTERPRETER_SRC_DIR = $(ROOT_DIR)/Tools/javascript
|
||||||
SWIGJS = $(SWIG) -javascript -node
|
|
||||||
JS_BUILD = node-gyp rebuild
|
# These settings are provided by 'configure' (see '/configure.in')
|
||||||
|
ifeq (1, @JSV8ENABLED@)
|
||||||
|
JS_INTERPRETER_SRC_V8 = $(JS_INTERPRETER_SRC_DIR)/v8_shell.cxx
|
||||||
|
JS_INTERPRETER_CXXFLAGS_V8 = -DENABLE_V8
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq (1, @JSCENABLED@)
|
||||||
|
JS_INTERPRETER_SRC_JSC = $(JS_INTERPRETER_SRC_DIR)/jsc_shell.cxx
|
||||||
|
JS_INTERPRETER_CXXFLAGS_JSC = -DENABLE_JSC
|
||||||
|
endif
|
||||||
|
|
||||||
|
JS_INTERPRETER_CXXFLAGS = $(JS_INTERPRETER_CXXFLAGS_JSC) $(JS_INTERPRETER_CXXFLAGS_V8)
|
||||||
|
JS_INTERPRETER_SRC = \
|
||||||
|
$(JS_INTERPRETER_SRC_DIR)/javascript.cxx $(JS_INTERPRETER_SRC_DIR)/js_shell.cxx $(JS_INTERPRETER_SRC_JSC) $(JS_INTERPRETER_SRC_V8)
|
||||||
|
|
||||||
|
# TODO: improve:
|
||||||
|
# - exe suffix
|
||||||
|
# - '-ldl' should come from configure
|
||||||
|
javascript_exe: $(SRCS)
|
||||||
|
$(CXX) $(CXXFLAGS) $(JS_INTERPRETER_CXXFLAGS) $(JSINCLUDES) $(JS_INTERPRETER_SRC) -ldl $(LIBS) $(JSDYNAMICLINKING) -o $(JS_INTERPRETER_SRC_DIR)/javascript
|
||||||
|
|
||||||
|
SWIGJS = $(SWIG) -javascript
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
# Run the javascript executable
|
# Run the javascript executable
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
javascript_wrapper_cpp: $(SRCS)
|
javascript: $(SRCS)
|
||||||
|
$(SWIGJS) $(SWIGOPT) $(INTERFACEPATH)
|
||||||
|
$(CC) -c $(CCSHARED) $(CFLAGS) $(JSCFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(JSINCLUDES)
|
||||||
|
$(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(JSDYNAMICLINKING) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
|
||||||
|
|
||||||
|
javascript_cpp: $(SRCS)
|
||||||
$(SWIGJS) -c++ $(SWIGOPT) $(INTERFACEPATH)
|
$(SWIGJS) -c++ $(SWIGOPT) $(INTERFACEPATH)
|
||||||
|
$(CXX) -c $(CCSHARED) $(CFLAGS) $(JSCFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(JSINCLUDES)
|
||||||
javascript_build:
|
$(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(JSDYNAMICLINKING) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
|
||||||
$(JS_BUILD)
|
|
||||||
|
|
||||||
#javascript_run: $(SRCS)
|
|
||||||
# env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(JSEXE) $(JSEXE_OPTS) -l $(TARGET) $(JS_SCRIPT)
|
|
||||||
|
|
||||||
javascript_run: $(SRCS)
|
|
||||||
env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(JSEXE) $(JSEXE_OPTS) $(JS_SCRIPT)
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# Cleaning the javascript examples
|
# Cleaning the javascript examples
|
||||||
|
|
@ -549,7 +587,7 @@ javascript_clean:
|
||||||
rm -rf build
|
rm -rf build
|
||||||
rm -f *_wrap* runme
|
rm -f *_wrap* runme
|
||||||
rm -f core @EXTRA_CLEAN@
|
rm -f core @EXTRA_CLEAN@
|
||||||
rm -f *.@OBJEXT@ *@JSCORESO@
|
rm -f *.@OBJEXT@ *@JSSO@
|
||||||
|
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
|
|
||||||
|
|
@ -7,105 +7,88 @@ SCRIPTSUFFIX = _runme.js
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
JS_INCLUDE = @JSCOREINC@
|
SWIG = $(top_builddir)/preinst_swig
|
||||||
JS_DLNK = @JSCOREDYNAMICLINKING@
|
|
||||||
JSCXXFLAGS = @JSCXXFLAGS@
|
|
||||||
JAVASCRIPT_EXE = node
|
|
||||||
SWIG = $(top_builddir)/preinst_swig
|
|
||||||
|
|
||||||
C_TEST_CASES = \
|
ifneq (, $(ENGINE))
|
||||||
preproc
|
JSENGINE = $(ENGINE)
|
||||||
|
else
|
||||||
|
JSENGINE = "node"
|
||||||
CPP_TEST_CASES = \
|
endif
|
||||||
abstract_access \
|
|
||||||
abstract_typedef \
|
|
||||||
abstract_typedef2 \
|
|
||||||
abstract_virtual \
|
|
||||||
arrays_global \
|
|
||||||
array_member \
|
|
||||||
char_binary \
|
|
||||||
class_ignore \
|
|
||||||
class_scope_weird \
|
|
||||||
complextest \
|
|
||||||
constover \
|
|
||||||
constructor_copy \
|
|
||||||
cpp_enum \
|
|
||||||
cpp_namespace \
|
|
||||||
cpp_static \
|
|
||||||
director_alternating \
|
|
||||||
enum_template \
|
|
||||||
namespace_virtual_method \
|
|
||||||
overload_copy \
|
|
||||||
ret_by_value \
|
|
||||||
struct_value \
|
|
||||||
template_static \
|
|
||||||
typedef_class \
|
|
||||||
typedef_inherit \
|
|
||||||
typedef_scope \
|
|
||||||
typemap_arrays \
|
|
||||||
typemap_delete \
|
|
||||||
typemap_namespace \
|
|
||||||
typemap_ns_using \
|
|
||||||
using1 \
|
|
||||||
using2 \
|
|
||||||
javascript_unicode
|
|
||||||
|
|
||||||
BROKEN_TEST_CASES = \
|
|
||||||
preproc_include
|
|
||||||
|
|
||||||
SKIP_CPP_CASES = @SKIP_CPP_CASES@
|
|
||||||
SKIP_C_CASES = @SKIP_C_CASES@
|
|
||||||
SKIP_CPP_STD_CASES = @SKIP_CPP_STD_CASES@
|
|
||||||
SKIP_MULTI_CPP_CASES = @SKIP_MULTI_CPP_CASES@
|
|
||||||
|
|
||||||
include $(srcdir)/../common.mk
|
include $(srcdir)/../common.mk
|
||||||
|
|
||||||
# Overridden variables here
|
SWIGOPT += -$(JSENGINE)
|
||||||
|
|
||||||
# Custom tests - tests with additional commandline options
|
ifeq ("node",$(JSENGINE))
|
||||||
|
|
||||||
# Rules for the different types of tests
|
setup = \
|
||||||
%.cpptest:
|
if [ ! -f $(srcdir)/$*/binding.gyp ]; then \
|
||||||
$(prepare_test)
|
echo "Setting up nodejs addon..."; \
|
||||||
$(generate_cpp_wrapper)
|
sh ./setup_test.sh $*; \
|
||||||
$(build_module)
|
$(SWIG) -c++ -javascript -node -o $*/$*_wrap.cxx ../$*.i; \
|
||||||
$(run_testcase)
|
fi
|
||||||
|
|
||||||
%.ctest:
|
nodejs_swig_and_compile = \
|
||||||
$(prepare_test)
|
if [ ! -f $(srcdir)/$*/build/Makefile ]; then \
|
||||||
$(generate_cpp_wrapper)
|
echo "Configuring node add-on..."; \
|
||||||
$(build_module)
|
node-gyp --directory $* configure; \
|
||||||
$(run_testcase)
|
fi; \
|
||||||
|
echo "Building node add-on..."; \
|
||||||
|
node-gyp --directory $* build; \
|
||||||
|
|
||||||
%.multicpptest:
|
run_testcase = \
|
||||||
$(prepare_test)
|
if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \
|
||||||
$(generate_cpp_wrapper)
|
node $(srcdir)/$*$(SCRIPTSUFFIX); \
|
||||||
$(build_module)
|
fi
|
||||||
$(run_testcase)
|
|
||||||
|
|
||||||
prepare_test = \
|
# Rules for the different types of tests
|
||||||
sh ./setup_test.sh $*
|
%.cpptest:
|
||||||
|
$(setup)
|
||||||
|
$(nodejs_swig_and_compile)
|
||||||
|
$(run_testcase)
|
||||||
|
|
||||||
generate_cpp_wrapper = \
|
%.ctest:
|
||||||
$(SWIG) -c++ -javascript -node -o $*/$*_wrap.cxx ../$*.i
|
$(setup)
|
||||||
|
$(nodejs_swig_and_compile)
|
||||||
|
$(run_testcase)
|
||||||
|
|
||||||
build_module = \
|
%.multicpptest:
|
||||||
if [ ! -f $(srcdir)/$*/build/Makefile ]; then \
|
$(setup)
|
||||||
cd $* && node-gyp configure build && cd ..; \
|
$(nodejs_swig_and_compile)
|
||||||
else \
|
$(run_testcase)
|
||||||
cd $* && node-gyp build && cd ..; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Runs the testcase. A testcase is only run if
|
# Clean
|
||||||
# a file is found which has _runme.js appended after the testcase name.
|
%.clean:
|
||||||
run_testcase = \
|
rm -rf $*
|
||||||
if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \
|
|
||||||
node $(srcdir)/$*$(SCRIPTSUFFIX); \
|
else
|
||||||
fi
|
|
||||||
|
run_testcase = \
|
||||||
|
if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \
|
||||||
|
$(top_srcdir)/Tools/javascript/javascript -$(JSENGINE) $(srcdir)/$*$(SCRIPTSUFFIX); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Rules for the different types of tests
|
||||||
|
%.cpptest:
|
||||||
|
$(setup)
|
||||||
|
+$(swig_and_compile_cpp)
|
||||||
|
$(run_testcase)
|
||||||
|
|
||||||
|
%.ctest:
|
||||||
|
$(setup)
|
||||||
|
+$(swig_and_compile_c)
|
||||||
|
$(run_testcase)
|
||||||
|
|
||||||
|
%.multicpptest:
|
||||||
|
$(setup)
|
||||||
|
+$(swig_and_compile_multi_cpp)
|
||||||
|
$(run_testcase)
|
||||||
|
|
||||||
|
# Clean
|
||||||
|
%.clean:
|
||||||
|
rm $*_wrap.cxx
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
# Clean
|
|
||||||
%.clean:
|
|
||||||
rm -rf $*
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue