aboutsummaryrefslogtreecommitdiff
path: root/demos
diff options
context:
space:
mode:
authorChad Austin <chad@imvu.com>2013-05-17 12:52:32 -0700
committerChad Austin <chad@imvu.com>2013-05-17 13:04:09 -0700
commit184ff9ea2d18c09988226afb90328679e9818d0d (patch)
tree876b10b0db3ea1d44c45152c735fe6d488110411 /demos
parentec19fe482bf564de68a076ed093af131d502bb30 (diff)
Add a demo that showcases using scons to build an embind library you can load from JavaScript.
Diffstat (limited to 'demos')
-rw-r--r--demos/scons-embind/SConstruct23
-rw-r--r--demos/scons-embind/bar.cpp2
-rw-r--r--demos/scons-embind/foo.cpp11
-rw-r--r--demos/scons-embind/test.js2
4 files changed, 38 insertions, 0 deletions
diff --git a/demos/scons-embind/SConstruct b/demos/scons-embind/SConstruct
new file mode 100644
index 00000000..8afc3e27
--- /dev/null
+++ b/demos/scons-embind/SConstruct
@@ -0,0 +1,23 @@
+env = Environment(
+ toolpath=['../../scons-tools'],
+ tools=['cc', 'c++', 'ar', 'emscripten', 'llvm', 'closure'],
+ LLVM_ROOT='/opt/local/bin',
+ CLANG='clang-mp-3.2',
+ CLANGXX='clang++-mp-3.2',
+ LLVM_LINK='llvm-link-mp-3.2',
+ LLVM_OPT='opt-mp-3.2',
+ LLVM_DIS='llvm-dis-mp-3.2',
+ EMSCRIPTEN_VERSION_FILE=File('build/version_file'),
+ EMSCRIPTEN_SETTINGS={
+ 'ASM_JS': 0,
+ })
+env['BUILDERS']['WrapInModule'] = Builder(
+ action='cp $SOURCE $TARGET',
+)
+
+env.Append()
+a1 = env.Object('build/foo.bc', 'foo.cpp')
+a2 = env.Object('build/bar.bc', 'bar.cpp')
+total = env.LLVMLink('build/thelibrary.bc', [a1, a2])
+
+env.emscripten('build/thelibrary.js', total)
diff --git a/demos/scons-embind/bar.cpp b/demos/scons-embind/bar.cpp
new file mode 100644
index 00000000..a3908014
--- /dev/null
+++ b/demos/scons-embind/bar.cpp
@@ -0,0 +1,2 @@
+void foo() {
+}
diff --git a/demos/scons-embind/foo.cpp b/demos/scons-embind/foo.cpp
new file mode 100644
index 00000000..61be501a
--- /dev/null
+++ b/demos/scons-embind/foo.cpp
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <emscripten/bind.h>
+
+void print_some_stuff(int a, float b, const std::string& s) {
+ printf("print_some_stuff: %d, %f, %s\n", a, b, s.c_str());
+}
+
+EMSCRIPTEN_BINDINGS(foo) {
+ emscripten::function("print_some_stuff", &print_some_stuff);
+}
+
diff --git a/demos/scons-embind/test.js b/demos/scons-embind/test.js
new file mode 100644
index 00000000..a6252fd8
--- /dev/null
+++ b/demos/scons-embind/test.js
@@ -0,0 +1,2 @@
+var thelibrary = require('./build/thelibrary.js');
+thelibrary.Module.print_some_stuff(1, 2, 'hello world');