]> git.saurik.com Git - cycript.git/commitdiff
Finally got this damned thing actually executing JavaScript on Linux.
authorJay Freeman (saurik) <saurik@saurik.com>
Wed, 28 Oct 2009 03:39:54 +0000 (03:39 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Wed, 28 Oct 2009 03:39:54 +0000 (03:39 +0000)
Darwin.mk
Library.cpp
Linux.mk
makefile

index c37e7700b3439e240b187b4521e101b1ff6392bf..bbb669113dc095cb35eae6d3018b78db761eb986 100644 (file)
--- a/Darwin.mk
+++ b/Darwin.mk
@@ -7,6 +7,6 @@ console += -framework Foundation
 library += -install_name /usr/lib/libcycript.$(dll)
 library += -framework Foundation -framework CFNetwork
 library += -framework JavaScriptCore -framework WebCore
-library += -lsubstrate
+library += -lsubstrate -liconv
 
 include ObjectiveC.mk
index eba549acefd6b1d4eca534ed0bb1da0a2a6533ba..80a17f7510ed3c11733a4390ebe59e8301a329e2 100644 (file)
@@ -146,7 +146,11 @@ static CYUTF8String CYPoolUTF8String(apr_pool_t *pool, JSContextRef context, JSS
     CYUTF16String utf16(CYCastUTF16String(value));
     const char *in(reinterpret_cast<const char *>(utf16.data));
 
+#ifdef __APPLE__
     iconv_t conversion(_syscall(iconv_open("UTF-8", "UCS-2-INTERNAL")));
+#else
+    iconv_t conversion(_syscall(iconv_open("UTF-8", "UCS-2")));
+#endif
 
     size_t size(JSStringGetMaximumUTF8CStringSize(value));
     char *out(new(pool) char[size]);
@@ -1297,9 +1301,14 @@ void CYSetArgs(int argc, const char *argv[]) {
     JSValueRef args[argc];
     for (int i(0); i != argc; ++i)
         args[i] = CYCastJSValue(context, argv[i]);
+#ifdef __APPLE__
     JSValueRef exception(NULL);
     JSObjectRef array(JSObjectMakeArray(context, argc, args, &exception));
     CYThrow(context, exception);
+#else
+    JSValueRef value(CYCallAsFunction(context, Array_, NULL, argc, args));
+    JSObjectRef array(CYCastJSObject(context, value));
+#endif
     CYSetProperty(context, System_, CYJSString("args"), array);
 }
 
@@ -1547,7 +1556,10 @@ JSGlobalContextRef CYGetJSContext() {
 
         Result_ = JSStringCreateWithUTF8CString("_");
 
+// XXX: this is very wrong and sad
+#ifdef __APPLE__
         CYObjectiveC(context, global);
+#endif
     }
 
     return Context_;
index 26b27ed57f88692c18a75bb46bd6d8ae80832665..93e2e94afe6025c380fabd485426e40038700f90 100644 (file)
--- a/Linux.mk
+++ b/Linux.mk
@@ -1,3 +1,5 @@
 export PATH := /usr/local/bin:$(PATH)
 flags += -I/usr/include/webkit-1.0
+flags += -DCY_EXECUTE
 depends += libffi4 libreadline5
+library += -lwebkit-1.0
index 1ca46938349f930994fed0863487f678175e496c..18cea089b773917f2b169354a658758961edc79b 100644 (file)
--- a/makefile
+++ b/makefile
@@ -30,7 +30,7 @@ filters := C #E4X
 ldid := true
 dll := so
 apr := $(shell apr-1-config --link-ld)
-library := $(apr) -lffi -liconv -lsqlite3
+library := $(apr) -lffi -lsqlite3
 console := $(apr) -lreadline
 depends :=
 
@@ -41,7 +41,7 @@ uname_p := $(shell uname -p)
 
 ifeq ($(filter ObjectiveC,$(filters)),)
 ifneq ($(shell which gnustep-config 2>/dev/null),)
-include GNUstep.mk
+#include GNUstep.mk
 endif
 endif