Begin integrating Neko support
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -16,3 +16,6 @@
|
|||||||
[submodule "project/lib/zlib"]
|
[submodule "project/lib/zlib"]
|
||||||
path = project/lib/zlib
|
path = project/lib/zlib
|
||||||
url = https://github.com/native-toolkit/zlib
|
url = https://github.com/native-toolkit/zlib
|
||||||
|
[submodule "project/lib/neko"]
|
||||||
|
path = project/lib/neko
|
||||||
|
url = https://github.com/native-toolkit/neko
|
||||||
|
|||||||
@@ -8,10 +8,11 @@
|
|||||||
|
|
||||||
<set name="ios" value="1" if="iphone" />
|
<set name="ios" value="1" if="iphone" />
|
||||||
|
|
||||||
<set name="LIME_OPENGL" value="1" />
|
|
||||||
<set name="LIME_OPENAL" value="1" />
|
|
||||||
<set name="LIME_CURL" value="1" />
|
<set name="LIME_CURL" value="1" />
|
||||||
|
<!-- <set name="LIME_NEKO" value="1" /> -->
|
||||||
<set name="LIME_OGG" value="1" />
|
<set name="LIME_OGG" value="1" />
|
||||||
|
<set name="LIME_OPENAL" value="1" />
|
||||||
|
<set name="LIME_OPENGL" value="1" />
|
||||||
<set name="LIME_SDL" value="1" />
|
<set name="LIME_SDL" value="1" />
|
||||||
<set name="LIME_VORBIS" value="1" />
|
<set name="LIME_VORBIS" value="1" />
|
||||||
<set name="LIME_ZLIB" value="1" />
|
<set name="LIME_ZLIB" value="1" />
|
||||||
@@ -57,10 +58,14 @@
|
|||||||
<file name="src/ui/TouchEvent.cpp" />
|
<file name="src/ui/TouchEvent.cpp" />
|
||||||
<file name="src/ui/WindowEvent.cpp" />
|
<file name="src/ui/WindowEvent.cpp" />
|
||||||
<file name="src/utils/ByteArray.cpp" />
|
<file name="src/utils/ByteArray.cpp" />
|
||||||
|
<file name="src/vm/Neko.cpp" if="LIME_NEKO" />
|
||||||
|
|
||||||
|
<compilerflag value="-DLIME_NEKO" if="LIME_NEKO" />
|
||||||
|
|
||||||
</files>
|
</files>
|
||||||
|
|
||||||
<include name="lib/curl/files.xml" />
|
<include name="lib/curl/files.xml" />
|
||||||
|
<include name="lib/neko/files.xml" />
|
||||||
<include name="lib/ogg/files.xml" />
|
<include name="lib/ogg/files.xml" />
|
||||||
<include name="lib/openal/files.xml" />
|
<include name="lib/openal/files.xml" />
|
||||||
<include name="lib/sdl/files.xml" />
|
<include name="lib/sdl/files.xml" />
|
||||||
@@ -74,6 +79,7 @@
|
|||||||
<files id="lime" />
|
<files id="lime" />
|
||||||
|
|
||||||
<files id="native-toolkit-curl" if="LIME_CURL" />
|
<files id="native-toolkit-curl" if="LIME_CURL" />
|
||||||
|
<files id="native-toolkit-neko" if="LIME_NEKO" />
|
||||||
<files id="native-toolkit-ogg" if="LIME_OGG" />
|
<files id="native-toolkit-ogg" if="LIME_OGG" />
|
||||||
<files id="native-toolkit-openal" if="LIME_OPENAL" unless="mac || iphone" />
|
<files id="native-toolkit-openal" if="LIME_OPENAL" unless="mac || iphone" />
|
||||||
<files id="native-toolkit-sdl" if="LIME_SDL" />
|
<files id="native-toolkit-sdl" if="LIME_SDL" />
|
||||||
@@ -110,6 +116,10 @@
|
|||||||
<lib name="-lpthread" />
|
<lib name="-lpthread" />
|
||||||
<lib name="-lrt" />
|
<lib name="-lrt" />
|
||||||
|
|
||||||
|
<lib name="-lgc" if="LIME_NEKO" />
|
||||||
|
<lib name="-lm" if="LIME_NEKO" />
|
||||||
|
<!-- <lib name="-Wl,--export-dynamic" if="LIME_NEKO" /> -->
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section if="mac">
|
<section if="mac">
|
||||||
@@ -127,6 +137,10 @@
|
|||||||
<vflag name="-framework" value="AppKit" />
|
<vflag name="-framework" value="AppKit" />
|
||||||
<vflag name="-framework" value="OpenAL"/>
|
<vflag name="-framework" value="OpenAL"/>
|
||||||
|
|
||||||
|
<lib name="/opt/local/lib/libgc.a" if="LIME_NEKO" />
|
||||||
|
<lib name="-lm" if="LIME_NEKO" />
|
||||||
|
<lib name="-Wl,--export-dynamic" if="LIME_NEKO" />
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section if="android">
|
<section if="android">
|
||||||
|
|||||||
20
project/include/vm/Neko.h
Normal file
20
project/include/vm/Neko.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#ifndef LIME_VM_NEKO_H
|
||||||
|
#define LIME_VM_NEKO_H
|
||||||
|
|
||||||
|
|
||||||
|
namespace lime {
|
||||||
|
|
||||||
|
|
||||||
|
class Neko {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
static void Execute (const char *module);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
1
project/lib/neko
Submodule
1
project/lib/neko
Submodule
Submodule project/lib/neko added at f91ea8873a
@@ -19,6 +19,7 @@
|
|||||||
#include <ui/TouchEvent.h>
|
#include <ui/TouchEvent.h>
|
||||||
#include <ui/Window.h>
|
#include <ui/Window.h>
|
||||||
#include <ui/WindowEvent.h>
|
#include <ui/WindowEvent.h>
|
||||||
|
#include <vm/Neko.h>
|
||||||
|
|
||||||
|
|
||||||
namespace lime {
|
namespace lime {
|
||||||
@@ -99,6 +100,16 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
value lime_neko_execute (value module) {
|
||||||
|
|
||||||
|
#ifdef LIME_NEKO
|
||||||
|
Neko::Execute (val_string (module));
|
||||||
|
#endif
|
||||||
|
return alloc_null ();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
value lime_png_decode (value bytes, value imageData) {
|
value lime_png_decode (value bytes, value imageData) {
|
||||||
|
|
||||||
ByteArray byteArray (bytes);
|
ByteArray byteArray (bytes);
|
||||||
@@ -184,6 +195,7 @@ namespace lime {
|
|||||||
DEFINE_PRIM (lime_lzma_encode, 1);
|
DEFINE_PRIM (lime_lzma_encode, 1);
|
||||||
DEFINE_PRIM (lime_lzma_decode, 1);
|
DEFINE_PRIM (lime_lzma_decode, 1);
|
||||||
DEFINE_PRIM (lime_mouse_event_manager_register, 2);
|
DEFINE_PRIM (lime_mouse_event_manager_register, 2);
|
||||||
|
DEFINE_PRIM (lime_neko_execute, 1);
|
||||||
DEFINE_PRIM (lime_png_decode, 2);
|
DEFINE_PRIM (lime_png_decode, 2);
|
||||||
DEFINE_PRIM (lime_renderer_create, 1);
|
DEFINE_PRIM (lime_renderer_create, 1);
|
||||||
DEFINE_PRIM (lime_renderer_flip, 1);
|
DEFINE_PRIM (lime_renderer_flip, 1);
|
||||||
|
|||||||
70
project/src/vm/Neko.cpp
Normal file
70
project/src/vm/Neko.cpp
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
#include <vm/Neko.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <neko_vm.h>
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" { void std_main (); }
|
||||||
|
|
||||||
|
|
||||||
|
namespace lime {
|
||||||
|
|
||||||
|
|
||||||
|
static void report( neko_vm *vm, value exc, int isexc ) {
|
||||||
|
int i;
|
||||||
|
buffer b = alloc_buffer(NULL);
|
||||||
|
value st = neko_exc_stack(vm);
|
||||||
|
for(i=0;i<val_array_size(st);i++) {
|
||||||
|
value s = val_array_ptr(st)[i];
|
||||||
|
buffer_append(b,"Called from ");
|
||||||
|
if( val_is_null(s) )
|
||||||
|
buffer_append(b,"a C function");
|
||||||
|
else if( val_is_string(s) ) {
|
||||||
|
buffer_append(b,val_string(s));
|
||||||
|
buffer_append(b," (no debug available)");
|
||||||
|
} else if( val_is_array(s) && val_array_size(s) == 2 && val_is_string(val_array_ptr(s)[0]) && val_is_int(val_array_ptr(s)[1]) ) {
|
||||||
|
val_buffer(b,val_array_ptr(s)[0]);
|
||||||
|
buffer_append(b," line ");
|
||||||
|
val_buffer(b,val_array_ptr(s)[1]);
|
||||||
|
} else
|
||||||
|
val_buffer(b,s);
|
||||||
|
buffer_append_char(b,'\n');
|
||||||
|
}
|
||||||
|
if( isexc )
|
||||||
|
buffer_append(b,"Uncaught exception - ");
|
||||||
|
val_buffer(b,exc);
|
||||||
|
# ifdef NEKO_STANDALONE
|
||||||
|
neko_standalone_error(val_string(buffer_to_string(b)));
|
||||||
|
# else
|
||||||
|
fprintf(stderr,"%s\n",val_string(buffer_to_string(b)));
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Neko::Execute (const char *modulePath) {
|
||||||
|
|
||||||
|
neko_vm *vm;
|
||||||
|
|
||||||
|
neko_global_init ();
|
||||||
|
vm = neko_vm_alloc (NULL);
|
||||||
|
neko_vm_select (vm);
|
||||||
|
|
||||||
|
std_main ();
|
||||||
|
|
||||||
|
value mload = neko_default_loader(NULL, 0);
|
||||||
|
|
||||||
|
value args2[] = { alloc_string(modulePath), mload };
|
||||||
|
value exc = NULL;
|
||||||
|
|
||||||
|
val_callEx(mload,val_field(mload,val_id("loadmodule")),args2,2,&exc);
|
||||||
|
|
||||||
|
if( exc != NULL ) {
|
||||||
|
|
||||||
|
report(vm,exc,1);
|
||||||
|
//return 1;
|
||||||
|
}
|
||||||
|
//return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user