Allow examples and test-suite to be built out of source tree

- Examples/Makefile.in rules use SRCDIR as the relative source directory

- ./config.status replicates Examples/ source directory tree in build
  directory, and copies each Makefile to build directory, prefixed with
  a header which sets SRCDIR to source directory

- Examples/test-suite/.../Makefile.in set SRCDIR from Autoconf-set srcdir

- Examples/test-suite/errors/Makefile.in needs to filter out source
  directory from SWIG error messages

- Lua: embedded interpreters are passed location of run-time test

- Python: copy run-time scripts to build directory because of 2to3
  conversion; import_packages example copies __init__.py from source
  directory; test-suite sets SCRIPTDIR to location of run-time tests

- Javascript: binding.gyp renamed to binding.gyp.in so that $srcdir
  can be substituted with SRCDIR; removed './' from require() statements
  so that NODE_PATH can be used to point Node.js to build directory
This commit is contained in:
Karl Wette 2014-05-11 23:21:10 +02:00
commit f574a34155
420 changed files with 1772 additions and 1510 deletions

View file

@ -4,10 +4,18 @@
LANGUAGE = javascript
NODEGYP = @NODEGYP@
NODEJS = @NODEJS@
SCRIPTSUFFIX = _runme.js
srcdir = @srcdir@
top_srcdir = @top_srcdir@
top_builddir = @top_builddir@
ifeq (.,$(srcdir))
SRCDIR =
else
SRCDIR = $(srcdir)/
endif
SWIG = $(top_builddir)/preinst_swig
ifneq (, $(ENGINE))
@ -47,20 +55,27 @@ ifeq (node,$(JSENGINE))
constant_pointers.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\"
enum_thorough.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\"
setup_node = \
test -d $* || mkdir $*; \
sed -e 's|$$testcase|$*|g; s|$$cflags|$(GYP_CFLAGS)|g; s|$$srcdir|$(srcdir)|g' \
$(srcdir)/node_template/binding.gyp.in > $*/binding.gyp; \
sed -e 's|$$testcase|$*|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 = \
sh ./setup_test.sh $* $(GYP_CFLAGS); \
$(SWIG) -javascript $(SWIGOPT) -o $*_wrap.cxx ../$*.i; \
$(setup_node); \
$(SWIG) -javascript $(SWIGOPT) -o $*_wrap.cxx $(srcdir)/../$*.i; \
$(NODEGYP) --loglevel=silent --directory $* configure build 1>>/dev/null
swig_and_compile_cpp = \
sh ./setup_test.sh $* $(GYP_CFLAGS); \
$(SWIG) -c++ -javascript $(SWIGOPT) ../$*.i; \
$(setup_node); \
$(SWIG) -c++ -javascript $(SWIGOPT) $(srcdir)/../$*.i; \
$(NODEGYP) --loglevel=silent --directory $* configure build 1>>/dev/null
run_testcase = \
if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \
node $(srcdir)/$*$(SCRIPTSUFFIX); \
env NODE_PATH=$$PWD:$(srcdir) $(NODEJS) $(srcdir)/$*$(SCRIPTSUFFIX); \
fi
@ -83,7 +98,7 @@ else
run_testcase = \
if [ -f $(srcdir)/$*$(SCRIPTSUFFIX) ]; then \
$(top_srcdir)/Tools/javascript/javascript -$(JSENGINE) $(srcdir)/$*$(SCRIPTSUFFIX); \
$(top_builddir)/Tools/javascript/javascript -$(JSENGINE) $(srcdir)/$*$(SCRIPTSUFFIX); \
fi
%.ctest:

View file

@ -1,4 +1,4 @@
var abstract_access = require("./abstract_access");
var abstract_access = require("abstract_access");
var d = new abstract_access.D()
if (d.do_x() != 1) {

View file

@ -1,4 +1,4 @@
var abstract_inherit = require("./abstract_inherit");
var abstract_inherit = require("abstract_inherit");
// Shouldn't be able to instantiate any of these classes
// since none of them implements the pure virtual function

View file

@ -1,4 +1,4 @@
var abstract_typedef2 = require("./abstract_typedef2");
var abstract_typedef2 = require("abstract_typedef2");
var a = new abstract_typedef2.A_UF();

View file

@ -1,4 +1,4 @@
var abstract_typedef = require("./abstract_typedef");
var abstract_typedef = require("abstract_typedef");
var e = new abstract_typedef.Engine();
var a = new abstract_typedef.A()

View file

@ -1,4 +1,4 @@
var abstract_virtual = require("./abstract_virtual");
var abstract_virtual = require("abstract_virtual");
d = new abstract_virtual.D()

View file

@ -1,4 +1,4 @@
var array_member = require("./array_member");
var array_member = require("array_member");
var f = new array_member.Foo();
f.data = array_member.global_data;

View file

@ -1,4 +1,4 @@
var arrays_global = require("./arrays_global");
var arrays_global = require("arrays_global");
arrays_global.array_i = arrays_global.array_const_i;

View file

@ -1,4 +1,4 @@
var callback = require("./callback");
var callback = require("callback");
if (callback.foo(2) !== 2) {
throw new Error("Failed.");

View file

@ -1,4 +1,4 @@
var char_binary = require("./char_binary");
var char_binary = require("char_binary");
var t = new char_binary.Test();
if (t.strlen('hile') != 4) {

View file

@ -1,4 +1,4 @@
var char_strings = require("./char_strings");
var char_strings = require("char_strings");
var assertIsEqual = function(expected, actual) {
if (expected !== actual) {

View file

@ -1,4 +1,4 @@
var class_ignore = require("./class_ignore");
var class_ignore = require("class_ignore");
a = new class_ignore.Bar();

View file

@ -1,4 +1,4 @@
var class_scope_weird = require("./class_scope_weird");
var class_scope_weird = require("class_scope_weird");
f = new class_scope_weird.Foo();
g = new class_scope_weird.Foo(3);

View file

@ -1,4 +1,4 @@
var complextest = require("./complextest");
var complextest = require("complextest");
a = [-1,2];

View file

@ -1,4 +1,4 @@
var constover = require("./constover");
var constover = require("constover");
p = constover.test("test");
if (p != "test") {

View file

@ -1,4 +1,4 @@
var constructor_copy = require("./constructor_copy");
var constructor_copy = require("constructor_copy");
f1 = new constructor_copy.Foo1(3);
f11 = new constructor_copy.Foo1(f1);

View file

@ -1,4 +1,4 @@
var cpp_enum = require("./cpp_enum");
var cpp_enum = require("cpp_enum");
var f = new cpp_enum.Foo()

View file

@ -1,4 +1,4 @@
var cpp_namespace = require("./cpp_namespace");
var cpp_namespace = require("cpp_namespace");
var n = cpp_namespace.fact(4);
if (n != 24){

View file

@ -1,4 +1,4 @@
var cpp_static = require("./cpp_static");
var cpp_static = require("cpp_static");
cpp_static.StaticFunctionTest.static_func();
cpp_static.StaticFunctionTest.static_func_2(1);

View file

@ -1,4 +1,4 @@
var director_alternating = require("./director_alternating");
var director_alternating = require("director_alternating");
id = director_alternating.getBar().id();
if (id != director_alternating.idFromGetBar())

View file

@ -1,4 +1,4 @@
var disown = require("./disown");
var disown = require("disown");
var a = new disown.A();
var tmp = a.thisown;

View file

@ -1,4 +1,4 @@
var dynamic_cast = require("./dynamic_cast");
var dynamic_cast = require("dynamic_cast");
var f = new dynamic_cast.Foo();
var b = new dynamic_cast.Bar();

View file

@ -1 +1 @@
var empty = require("./empty");
var empty = require("empty");

View file

@ -1,4 +1,4 @@
var enum_template = require("./enum_template");
var enum_template = require("enum_template");
if (enum_template.MakeETest() != 1)
throw "RuntimeError";

View file

@ -1,4 +1,4 @@
var infinity = require("./infinity");
var infinity = require("infinity");
var my_infinity = infinity.INFINITY;
var ret_val = infinity.use_infinity(my_infinity);

View file

@ -1,3 +1,3 @@
var namespace_virtual_method = require("./namespace_virtual_method");
var namespace_virtual_method = require("namespace_virtual_method");
x = new namespace_virtual_method.Spam();

View file

@ -3,7 +3,7 @@
{
"target_name": "$testcase",
"sources":[ "../$testcase_wrap.cxx" ],
"include_dirs": ["../.."],
"include_dirs": ["../$srcdir/.."],
'defines': [
'BUILDING_NODE_EXTENSION=1',
],

View file

@ -1,4 +1,4 @@
var nspace_extend = require("./nspace_extend");
var nspace_extend = require("nspace_extend");
// constructors and destructors
var color1 = new nspace_extend.Outer.Inner1.Color();

View file

@ -1,4 +1,4 @@
var nspace = require("./nspace");
var nspace = require("nspace");
var color1 = new nspace.Outer.Inner1.Color();
var color = new nspace.Outer.Inner1.Color(color1);

View file

@ -1,4 +1,4 @@
var overload_copy = require("./overload_copy");
var overload_copy = require("overload_copy");
f = new overload_copy.Foo();
g = new overload_copy.Foo(f);

View file

@ -1,4 +1,4 @@
var preproc_include = require("./preproc_include");
var preproc_include = require("preproc_include");
if (preproc_include.multiply10(10) != 100)
throw "RuntimeError";

View file

@ -1,4 +1,4 @@
var preproc = require("./preproc");
var preproc = require("preproc");
if (preproc.endif != 1)
throw "RuntimeError";

View file

@ -1,4 +1,4 @@
var rename = require("./rename1");
var rename = require("rename1");
function part1() {
var xyz = new rename.XYZInt();

View file

@ -1,4 +1,4 @@
var rename = require("./rename2");
var rename = require("rename2");
function part1() {
var xyz = new rename.XYZInt();

View file

@ -1,4 +1,4 @@
var rename = require("./rename3");
var rename = require("rename3");
function part1() {
var xyz = new rename.XYZInt();

View file

@ -1,4 +1,4 @@
var rename = require("./rename4");
var rename = require("rename4");
function part1() {
var xyz = new rename.XYZInt();

View file

@ -1,4 +1,4 @@
var rename_scope = require("./rename_scope");
var rename_scope = require("rename_scope");
var a = new rename_scope.Natural_UP();
var b = new rename_scope.Natural_BP();

View file

@ -1,4 +1,4 @@
var rename_simple = require("./rename_simple");
var rename_simple = require("rename_simple");
var NewStruct = rename_simple.NewStruct;
var s = new NewStruct();

View file

@ -1,4 +1,4 @@
var ret_by_value = require("./ret_by_value");
var ret_by_value = require("ret_by_value");
a = ret_by_value.get_test();
if (a.myInt != 100)

View file

@ -1,6 +0,0 @@
#!/bin/sh
if [ ! -d $1 ]; then
mkdir $1;
fi
sed -e "s/\$testcase/$1/" -e "s/\$cflags/$2/" < node_template/binding.gyp.in > $1/binding.gyp
sed s/\$testcase/$1/ node_template/index.js.in > $1/index.js

View file

@ -1,4 +1,4 @@
var string_simple = require("./string_simple");
var string_simple = require("string_simple");
// Test unicode string
var str = "olé";

View file

@ -1,4 +1,4 @@
var struct_value = require("./struct_value");
var struct_value = require("struct_value");
b = new struct_value.Bar();

View file

@ -1,3 +1,3 @@
var template_static = require("./template_static");
var template_static = require("template_static");
template_static.Foo.bar_double(1);

View file

@ -1,4 +1,4 @@
var typedef_class = require("./typedef_class");
var typedef_class = require("typedef_class");
a = new typedef_class.RealA();
a.a = 3;

View file

@ -1,4 +1,4 @@
var typedef_inherit = require("./typedef_inherit");
var typedef_inherit = require("typedef_inherit");
a = new typedef_inherit.Foo();
b = new typedef_inherit.Bar();

View file

@ -1,4 +1,4 @@
var typedef_scope = require("./typedef_scope");
var typedef_scope = require("typedef_scope");
b = new typedef_scope.Bar();
x = b.test1(42,"hello");

View file

@ -1,4 +1,4 @@
var typemap_arrays = require("./typemap_arrays");
var typemap_arrays = require("typemap_arrays");
if (typemap_arrays.sumA(null) != 60)
throw "RuntimeError, Sum is wrong";

View file

@ -1,4 +1,4 @@
var typemap_delete = require("./typemap_delete");
var typemap_delete = require("typemap_delete");
r = new typemap_delete.Rect(123);
if (r.val != 123)

View file

@ -1,4 +1,4 @@
var typemap_namespace = require("./typemap_namespace");
var typemap_namespace = require("typemap_namespace");
if (typemap_namespace.test1("hello") != "hello")
throw "RuntimeError";

View file

@ -1,4 +1,4 @@
var typemap_ns_using = require("./typemap_ns_using");
var typemap_ns_using = require("typemap_ns_using");
if (typemap_ns_using.spam(37) != 37)
throw "RuntimeError";

View file

@ -1,4 +1,4 @@
var using1 = require("./using1");
var using1 = require("using1");
if (using1.spam(37) != 37)
throw "RuntimeError";

View file

@ -1,4 +1,4 @@
var using2 = require("./using2");
var using2 = require("using2");
if (using2.spam(37) != 37)
throw "RuntimeError";

View file

@ -1,4 +1,4 @@
var varargs = require("./varargs");
var varargs = require("varargs");
if (varargs.test("Hello") != "Hello") {
throw new Error("Failed");