Browse Source

Use `make install` for QuickJS. Instead of `git clone`ing in a Makefile target, use git submodules.

tags/v1.1.1
Andrew Belt 5 years ago
parent
commit
550d87f040
4 changed files with 22 additions and 15 deletions
  1. +3
    -0
      .gitmodules
  2. +7
    -11
      Makefile
  3. +1
    -0
      QuickJS
  4. +11
    -4
      src/QuickJSEngine.cpp

+ 3
- 0
.gitmodules View File

@@ -0,0 +1,3 @@
[submodule "QuickJS"]
path = QuickJS
url = https://github.com/JerrySievert/QuickJS

+ 7
- 11
Makefile View File

@@ -35,16 +35,16 @@ $(duktape):
cd dep && $(UNTAR) ../duktape-2.4.0.tar.xz

# QuickJS
quickjs := dep/QuickJS/libquickjs.a
quickjs := dep/lib/quickjs/libquickjs.a
DEPS += $(quickjs)
OBJECTS += $(quickjs)
FLAGS += -Idep/QuickJS
LDFLAGS += -Ldep/QuickJS -lquickjs
MAKEQJSFLAGS :=
QUICKJS_MAKE_FLAGS += prefix="$(DEP_PATH)"
ifdef ARCH_WIN
QUICKJS_MAKE_FLAGS += CONFIG_WIN32=y
endif
$(quickjs):
cd dep && git clone "https://github.com/JerrySievert/QuickJS"
cd dep/QuickJS && $(MAKE) $(MAKEQJSFLAGS)
cd QuickJS && $(MAKE) $(QUICKJS_MAKE_FLAGS)
cd QuickJS && $(MAKE) $(QUICKJS_MAKE_FLAGS) install

# # LuaJIT
# luajit := dep/lib/luajit.a
@@ -99,7 +99,3 @@ $(quickjs):


include $(RACK_DIR)/plugin.mk

ifdef ARCH_WIN
MAKEQJSFLAGS += CONFIG_WIN32=y
endif

+ 1
- 0
QuickJS

@@ -0,0 +1 @@
Subproject commit 3aefcde48ae7698b4d6704b09a071d07a8d8019d

+ 11
- 4
src/QuickJSEngine.cpp View File

@@ -1,5 +1,5 @@
#include "ScriptEngine.hpp"
#include <quickjs.h>
#include <quickjs/quickjs.h>

static JSClassID QuickJSEngineClass;

@@ -189,9 +189,16 @@ struct QuickJSEngine : ScriptEngine {
JS_SetPropertyStr(ctx, global_obj, "block", blockIdx);

// this is a horrible hack to get QuickJS to allocate the correct types
std::string updateTypes = "for (var i = 0; i < 6; i++) { block.inputs[i] = new Float32Array(block.inputs[i]); block.outputs[i] = new Float32Array(block.outputs[i]); " \
"block.lights[i] = new Float32Array(block.lights[i]); block.switchLights[i] = new Float32Array(block.switchLights[i]); } " \
"block.knobs = new Float32Array(block.knobs); block.switches = new Uint8Array(block.switches);";
static const std::string updateTypes = R"(
for (var i = 0; i < 6; i++) {
block.inputs[i] = new Float32Array(block.inputs[i]);
block.outputs[i] = new Float32Array(block.outputs[i]);
block.lights[i] = new Float32Array(block.lights[i]);
block.switchLights[i] = new Float32Array(block.switchLights[i]);
}
block.knobs = new Float32Array(block.knobs);
block.switches = new Uint8Array(block.switches);
)";

JSValue hack = JS_Eval(ctx, updateTypes.c_str(), updateTypes.size(), "QuickJS Hack", 0);
if (JS_IsException(hack)) {


Loading…
Cancel
Save