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 ######
|
||||
##################################################################
|
||||
|
||||
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
|
||||
SWIGJS = $(SWIG) -javascript -node
|
||||
JS_BUILD = node-gyp rebuild
|
||||
JS_INTERPRETER_SRC_DIR = $(ROOT_DIR)/Tools/javascript
|
||||
|
||||
# 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
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
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)
|
||||
|
||||
javascript_build:
|
||||
$(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)
|
||||
$(CXX) -c $(CCSHARED) $(CFLAGS) $(JSCFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(JSINCLUDES)
|
||||
$(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(JSDYNAMICLINKING) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Cleaning the javascript examples
|
||||
|
|
@ -549,7 +587,7 @@ javascript_clean:
|
|||
rm -rf build
|
||||
rm -f *_wrap* runme
|
||||
rm -f core @EXTRA_CLEAN@
|
||||
rm -f *.@OBJEXT@ *@JSCORESO@
|
||||
rm -f *.@OBJEXT@ *@JSSO@
|
||||
|
||||
|
||||
##################################################################
|
||||
|
|
|
|||
|
|
@ -7,105 +7,88 @@ SCRIPTSUFFIX = _runme.js
|
|||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
JS_INCLUDE = @JSCOREINC@
|
||||
JS_DLNK = @JSCOREDYNAMICLINKING@
|
||||
JSCXXFLAGS = @JSCXXFLAGS@
|
||||
JAVASCRIPT_EXE = node
|
||||
SWIG = $(top_builddir)/preinst_swig
|
||||
SWIG = $(top_builddir)/preinst_swig
|
||||
|
||||
C_TEST_CASES = \
|
||||
preproc
|
||||
|
||||
|
||||
CPP_TEST_CASES = \
|
||||
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@
|
||||
ifneq (, $(ENGINE))
|
||||
JSENGINE = $(ENGINE)
|
||||
else
|
||||
JSENGINE = "node"
|
||||
endif
|
||||
|
||||
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
|
||||
%.cpptest:
|
||||
$(prepare_test)
|
||||
$(generate_cpp_wrapper)
|
||||
$(build_module)
|
||||
$(run_testcase)
|
||||
setup = \
|
||||
if [ ! -f $(srcdir)/$*/binding.gyp ]; then \
|
||||
echo "Setting up nodejs addon..."; \
|
||||
sh ./setup_test.sh $*; \
|
||||
$(SWIG) -c++ -javascript -node -o $*/$*_wrap.cxx ../$*.i; \
|
||||
fi
|
||||
|
||||
%.ctest:
|
||||
$(prepare_test)
|
||||
$(generate_cpp_wrapper)
|
||||
$(build_module)
|
||||
$(run_testcase)
|
||||
nodejs_swig_and_compile = \
|
||||
if [ ! -f $(srcdir)/$*/build/Makefile ]; then \
|
||||
echo "Configuring node add-on..."; \
|
||||
node-gyp --directory $* configure; \
|
||||
fi; \
|
||||
echo "Building node add-on..."; \
|
||||
node-gyp --directory $* build; \
|
||||
|
||||
%.multicpptest:
|
||||
$(prepare_test)
|
||||
$(generate_cpp_wrapper)
|
||||
$(build_module)
|
||||
$(run_testcase)
|
||||
run_testcase = \
|
||||
if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \
|
||||
node $(srcdir)/$*$(SCRIPTSUFFIX); \
|
||||
fi
|
||||
|
||||
prepare_test = \
|
||||
sh ./setup_test.sh $*
|
||||
# Rules for the different types of tests
|
||||
%.cpptest:
|
||||
$(setup)
|
||||
$(nodejs_swig_and_compile)
|
||||
$(run_testcase)
|
||||
|
||||
generate_cpp_wrapper = \
|
||||
$(SWIG) -c++ -javascript -node -o $*/$*_wrap.cxx ../$*.i
|
||||
%.ctest:
|
||||
$(setup)
|
||||
$(nodejs_swig_and_compile)
|
||||
$(run_testcase)
|
||||
|
||||
build_module = \
|
||||
if [ ! -f $(srcdir)/$*/build/Makefile ]; then \
|
||||
cd $* && node-gyp configure build && cd ..; \
|
||||
else \
|
||||
cd $* && node-gyp build && cd ..; \
|
||||
fi
|
||||
%.multicpptest:
|
||||
$(setup)
|
||||
$(nodejs_swig_and_compile)
|
||||
$(run_testcase)
|
||||
|
||||
# Runs the testcase. A testcase is only run if
|
||||
# a file is found which has _runme.js appended after the testcase name.
|
||||
run_testcase = \
|
||||
if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \
|
||||
node $(srcdir)/$*$(SCRIPTSUFFIX); \
|
||||
fi
|
||||
# Clean
|
||||
%.clean:
|
||||
rm -rf $*
|
||||
|
||||
else
|
||||
|
||||
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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue