]> git.saurik.com Git - cycript.git/commitdiff
Fix compilation errors using gcc from Android NDK.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 2 Jan 2016 22:20:43 +0000 (14:20 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 2 Jan 2016 22:20:43 +0000 (14:20 -0800)
17 files changed:
Analysis.cpp
Console.cpp
Decode.cpp
Execute.cpp
Handler.cpp
JavaScript.hpp
Makefile.am
Makefile.in
Parser.ypp.in
android-configure.sh
android.sh
configure
configure.ac
sig/copy.cpp
sig/ffi_type.cpp
sig/parse.cpp
sig/types.hpp

index 6bacfa0954789caf4ce22178a48c32371976b44e..8a03ebf43769b2efc37cfbe51f9e7f83fc58c1c3 100644 (file)
 #define __USE_EXTERN_INLINES
 
 #include <dlfcn.h>
 #define __USE_EXTERN_INLINES
 
 #include <dlfcn.h>
+#include <fcntl.h>
 #include <unistd.h>
 
 #include <unistd.h>
 
+#include <sys/mman.h>
 #include <sys/stat.h>
 
 #include <sqlite3.h>
 #include <sys/stat.h>
 
 #include <sqlite3.h>
index 6587106bd0c3ac2378e476947fe4348f8ea7995f..31a2dbbc6fc4eb348b7862dbabf786979c34d965 100644 (file)
@@ -219,7 +219,9 @@ static void sigint(int) {
         case Parsing:
             longjmp(ctrlc_, 1);
         case Running:
         case Parsing:
             longjmp(ctrlc_, 1);
         case Running:
+#ifndef __ANDROID__
             CYCancel();
             CYCancel();
+#endif
             return;
         case Sending:
             return;
             return;
         case Sending:
             return;
@@ -1024,7 +1026,7 @@ int Main(int argc, char * const argv[], char const * const envp[]) {
             }
         } file(address.sun_path);
 
             }
         } file(address.sun_path);
 
-        _syscall(bind(server, reinterpret_cast<sockaddr *>(&address), SUN_LEN(&address)));
+        _syscall(bind(server, reinterpret_cast<sockaddr *>(&address), sizeof(address)));
         _syscall(chmod(address.sun_path, 0777));
 
         _syscall(listen(server, 1));
         _syscall(chmod(address.sun_path, 0777));
 
         _syscall(listen(server, 1));
index b4998b4bae09bcf3d8a118e8dceafff99f58d8b4..823e6b4b35a0d55642a16df86bec47f0939bec68 100644 (file)
@@ -108,6 +108,7 @@ CYTypedIdentifier *String::Decode(CYPool &pool) const {
     return $ CYTypedIdentifier($ CYTypeCharacter(CYTypeNeutral), $ CYTypePointerTo());
 }
 
     return $ CYTypedIdentifier($ CYTypeCharacter(CYTypeNeutral), $ CYTypePointerTo());
 }
 
+#ifdef CY_OBJECTIVEC
 CYTypedIdentifier *Meta::Decode(CYPool &pool) const {
     return $ CYTypedIdentifier($ CYTypeVariable("Class"));
 }
 CYTypedIdentifier *Meta::Decode(CYPool &pool) const {
     return $ CYTypedIdentifier($ CYTypeVariable("Class"));
 }
@@ -115,6 +116,7 @@ CYTypedIdentifier *Meta::Decode(CYPool &pool) const {
 CYTypedIdentifier *Selector::Decode(CYPool &pool) const {
     return $ CYTypedIdentifier($ CYTypeVariable("SEL"));
 }
 CYTypedIdentifier *Selector::Decode(CYPool &pool) const {
     return $ CYTypedIdentifier($ CYTypeVariable("SEL"));
 }
+#endif
 
 CYTypedIdentifier *Bits::Decode(CYPool &pool) const {
     _assert(false);
 
 CYTypedIdentifier *Bits::Decode(CYPool &pool) const {
     _assert(false);
@@ -128,12 +130,14 @@ CYTypedIdentifier *Array::Decode(CYPool &pool) const {
     return CYDecodeType(pool, &type)->Modify($ CYTypeArrayOf($D(size)));
 }
 
     return CYDecodeType(pool, &type)->Modify($ CYTypeArrayOf($D(size)));
 }
 
+#ifdef CY_OBJECTIVEC
 CYTypedIdentifier *Object::Decode(CYPool &pool) const {
     if (name == NULL)
         return $ CYTypedIdentifier($ CYTypeVariable("id"));
     else
         return $ CYTypedIdentifier($ CYTypeVariable(name), $ CYTypePointerTo());
 }
 CYTypedIdentifier *Object::Decode(CYPool &pool) const {
     if (name == NULL)
         return $ CYTypedIdentifier($ CYTypeVariable("id"));
     else
         return $ CYTypedIdentifier($ CYTypeVariable(name), $ CYTypePointerTo());
 }
+#endif
 
 CYTypedIdentifier *Aggregate::Decode(CYPool &pool) const {
     _assert(!overlap);
 
 CYTypedIdentifier *Aggregate::Decode(CYPool &pool) const {
     _assert(!overlap);
@@ -162,6 +166,7 @@ CYTypedIdentifier *Function::Modify(CYPool &pool, CYTypedIdentifier *result, CYT
     return result->Modify($ CYTypeFunctionWith(variadic, parameters));
 }
 
     return result->Modify($ CYTypeFunctionWith(variadic, parameters));
 }
 
+#ifdef CY_OBJECTIVEC
 CYTypedIdentifier *Block::Modify(CYPool &pool, CYTypedIdentifier *result, CYTypedParameter *parameters) const {
     return result->Modify($ CYTypeBlockWith(parameters));
 }
 CYTypedIdentifier *Block::Modify(CYPool &pool, CYTypedIdentifier *result, CYTypedParameter *parameters) const {
     return result->Modify($ CYTypeBlockWith(parameters));
 }
@@ -171,6 +176,7 @@ CYTypedIdentifier *Block::Decode(CYPool &pool) const {
         return $ CYTypedIdentifier($ CYTypeVariable("NSBlock"), $ CYTypePointerTo());
     return Callable::Decode(pool);
 }
         return $ CYTypedIdentifier($ CYTypeVariable("NSBlock"), $ CYTypePointerTo());
     return Callable::Decode(pool);
 }
+#endif
 
 }
 
 
 }
 
index ea882eb40a3732c203e37238ade71da9a39564ec..784c20e6a97329bb60424a68e618465a3fad4044 100644 (file)
@@ -1465,8 +1465,12 @@ static JSValueRef Type_callAsFunction_arrayOf(JSContextRef context, JSObjectRef
 } CYCatch(NULL) }
 
 static JSValueRef Type_callAsFunction_blockWith(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) {
 } CYCatch(NULL) }
 
 static JSValueRef Type_callAsFunction_blockWith(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) {
+#ifdef CY_OBJECTIVEC
     sig::Block type;
     return Type_callAsFunction_$With(context, object, _this, count, arguments, type, exception);
     sig::Block type;
     return Type_callAsFunction_$With(context, object, _this, count, arguments, type, exception);
+#else
+    _assert(false);
+#endif
 }
 
 static JSValueRef Type_callAsFunction_constant(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
 }
 
 static JSValueRef Type_callAsFunction_constant(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
@@ -1857,18 +1861,22 @@ class ExecutionHandle {
     }
 };
 
     }
 };
 
+#ifndef __ANDROID__
 static volatile bool cancel_;
 
 static bool CYShouldTerminate(JSContextRef context, void *arg) {
     return cancel_;
 }
 static volatile bool cancel_;
 
 static bool CYShouldTerminate(JSContextRef context, void *arg) {
     return cancel_;
 }
+#endif
 
 _visible const char *CYExecute(JSContextRef context, CYPool &pool, CYUTF8String code) {
     ExecutionHandle handle(context);
 
 
 _visible const char *CYExecute(JSContextRef context, CYPool &pool, CYUTF8String code) {
     ExecutionHandle handle(context);
 
+#ifndef __ANDROID__
     cancel_ = false;
     if (&JSContextGroupSetExecutionTimeLimit != NULL)
         JSContextGroupSetExecutionTimeLimit(JSContextGetGroup(context), 0.5, &CYShouldTerminate, NULL);
     cancel_ = false;
     if (&JSContextGroupSetExecutionTimeLimit != NULL)
         JSContextGroupSetExecutionTimeLimit(JSContextGetGroup(context), 0.5, &CYShouldTerminate, NULL);
+#endif
 
     try {
         JSValueRef result(_jsccall(JSEvaluateScript, context, CYJSString(code), NULL, NULL, 0));
 
     try {
         JSValueRef result(_jsccall(JSEvaluateScript, context, CYJSString(code), NULL, NULL, 0));
@@ -1885,9 +1893,11 @@ _visible const char *CYExecute(JSContextRef context, CYPool &pool, CYUTF8String
     }
 }
 
     }
 }
 
+#ifndef __ANDROID__
 _visible void CYCancel() {
     cancel_ = true;
 }
 _visible void CYCancel() {
     cancel_ = true;
 }
+#endif
 
 const char *CYPoolLibraryPath(CYPool &pool);
 
 
 const char *CYPoolLibraryPath(CYPool &pool);
 
index 1201951c9a04974dfb97ed2db9d52ab209be8a28..da458d6e7bb5ca4fedc4e3a8ebe92ed00c5fc98e 100644 (file)
@@ -166,7 +166,7 @@ static void CYHandleSocket(const char *path) {
     address.sun_family = AF_UNIX;
     strcpy(address.sun_path, path);
 
     address.sun_family = AF_UNIX;
     strcpy(address.sun_path, path);
 
-    _syscall(connect(socket, reinterpret_cast<sockaddr *>(&address), SUN_LEN(&address)));
+    _syscall(connect(socket, reinterpret_cast<sockaddr *>(&address), sizeof(address)));
 
     CYInitializeDynamic();
     CYHandleClient(socket);
 
     CYInitializeDynamic();
     CYHandleClient(socket);
@@ -189,7 +189,11 @@ _extern char *MSmain0(int argc, char *argv[]) { try {
     if (handle == NULL) {
         Dl_info info;
         _assert(dladdr(reinterpret_cast<void *>(&MSmain0), &info) != 0);
     if (handle == NULL) {
         Dl_info info;
         _assert(dladdr(reinterpret_cast<void *>(&MSmain0), &info) != 0);
+#ifdef __ANDROID__
+        handle = dlopen(info.dli_fname, 0);
+#else
         handle = dlopen(info.dli_fname, RTLD_NOLOAD);
         handle = dlopen(info.dli_fname, RTLD_NOLOAD);
+#endif
     }
 
     return NULL;
     }
 
     return NULL;
index 7fa57f26f83708f64583d5d8c49fb74792c08d19..04c1e2f3260107b2b93ed30e7a43bdf782b34abe 100644 (file)
@@ -63,7 +63,10 @@ JSObjectRef CYGetGlobalObject(JSContextRef context);
 
 extern "C" void CYSetupContext(JSGlobalContextRef context);
 const char *CYExecute(JSContextRef context, CYPool &pool, CYUTF8String code);
 
 extern "C" void CYSetupContext(JSGlobalContextRef context);
 const char *CYExecute(JSContextRef context, CYPool &pool, CYUTF8String code);
+
+#ifndef __ANDROID__
 void CYCancel();
 void CYCancel();
+#endif
 
 void CYSetArgs(int argc, const char *argv[]);
 
 
 void CYSetArgs(int argc, const char *argv[]);
 
index a3b08203630ce4f24b8b0516563d6f8576417d2b..681e63579199eae339ddde4f49cc445ac0b5a72b 100644 (file)
@@ -126,6 +126,7 @@ libcycript_la_LIBADD += $(LTPYTHON)
 endif
 
 if CY_OBJECTIVEC
 endif
 
 if CY_OBJECTIVEC
+AM_CPPFLAGS += -DCY_OBJECTIVEC
 filters += ObjectiveC
 libcycript_la_SOURCES += ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
 libcycript_la_LIBADD += $(LTOBJECTIVEC)
 filters += ObjectiveC
 libcycript_la_SOURCES += ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
 libcycript_la_LIBADD += $(LTOBJECTIVEC)
index 3a9a49ce00e8e03d4fc345cbcc8f554c22d761df..d984ebcfd6daca58ace44048c0a35bbef29d90b5 100644 (file)
@@ -132,12 +132,13 @@ host_triplet = @host@
 @CY_PYTHON_TRUE@am__append_19 = Python
 @CY_PYTHON_TRUE@am__append_20 = Python/Execute.cpp
 @CY_PYTHON_TRUE@am__append_21 = $(LTPYTHON)
 @CY_PYTHON_TRUE@am__append_19 = Python
 @CY_PYTHON_TRUE@am__append_20 = Python/Execute.cpp
 @CY_PYTHON_TRUE@am__append_21 = $(LTPYTHON)
-@CY_OBJECTIVEC_TRUE@am__append_22 = ObjectiveC
-@CY_OBJECTIVEC_TRUE@am__append_23 = ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
-@CY_OBJECTIVEC_TRUE@am__append_24 = $(LTOBJECTIVEC)
-@CY_ATTACH_TRUE@am__append_25 = Handler.cpp
-@CY_ATTACH_TRUE@@CY_CONSOLE_TRUE@am__append_26 = Inject.cpp
-@CY_ATTACH_TRUE@@CY_CONSOLE_TRUE@am__append_27 = -DCY_ATTACH
+@CY_OBJECTIVEC_TRUE@am__append_22 = -DCY_OBJECTIVEC
+@CY_OBJECTIVEC_TRUE@am__append_23 = ObjectiveC
+@CY_OBJECTIVEC_TRUE@am__append_24 = ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
+@CY_OBJECTIVEC_TRUE@am__append_25 = $(LTOBJECTIVEC)
+@CY_ATTACH_TRUE@am__append_26 = Handler.cpp
+@CY_ATTACH_TRUE@@CY_CONSOLE_TRUE@am__append_27 = Inject.cpp
+@CY_ATTACH_TRUE@@CY_CONSOLE_TRUE@am__append_28 = -DCY_ATTACH
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
@@ -588,7 +589,7 @@ SUBDIRS =
 ACLOCAL_AMFLAGS = -I m4
 AM_CPPFLAGS = -DYYDEBUG=1 -DCY_SYSTEM="\"$(CY_SYSTEM)\"" -include \
        config.h -include $(srcdir)/unconfig.h $(am__append_5) \
 ACLOCAL_AMFLAGS = -I m4
 AM_CPPFLAGS = -DYYDEBUG=1 -DCY_SYSTEM="\"$(CY_SYSTEM)\"" -include \
        config.h -include $(srcdir)/unconfig.h $(am__append_5) \
-       $(am__append_27)
+       $(am__append_22) $(am__append_28)
 AM_CFLAGS = -fvisibility=hidden
 AM_CXXFLAGS = -fvisibility=hidden
 AM_OBJCXXFLAGS = -fvisibility=hidden -fobjc-exceptions
 AM_CFLAGS = -fvisibility=hidden
 AM_CXXFLAGS = -fvisibility=hidden
 AM_OBJCXXFLAGS = -fvisibility=hidden -fobjc-exceptions
@@ -600,15 +601,15 @@ lib_LTLIBRARIES = libcycript.la
 libcycript_la_LDFLAGS = $(CY_LDFLAGS)
 libcycript_la_LIBADD = $(LTLIBUV) $(LTLIBFFI) $(LTLIBSQLITE3) \
        $(LTLIBGCC) -ldl $(am__append_3) $(am__append_13) \
 libcycript_la_LDFLAGS = $(CY_LDFLAGS)
 libcycript_la_LIBADD = $(LTLIBUV) $(LTLIBFFI) $(LTLIBSQLITE3) \
        $(LTLIBGCC) -ldl $(am__append_3) $(am__append_13) \
-       $(am__append_18) $(am__append_21) $(am__append_24)
+       $(am__append_18) $(am__append_21) $(am__append_25)
 libcycript_la_SOURCES = ConvertUTF.c Decode.cpp Driver.cpp Error.cpp \
        Highlight.cpp Library.cpp Network.cpp Output.cpp Replace.cpp \
        Syntax.cpp Parser.cpp Scanner.cpp $(am__append_1) \
        $(am__append_2) $(am__append_12) $(am__append_17) \
 libcycript_la_SOURCES = ConvertUTF.c Decode.cpp Driver.cpp Error.cpp \
        Highlight.cpp Library.cpp Network.cpp Output.cpp Replace.cpp \
        Syntax.cpp Parser.cpp Scanner.cpp $(am__append_1) \
        $(am__append_2) $(am__append_12) $(am__append_17) \
-       $(am__append_20) $(am__append_23) $(am__append_25)
+       $(am__append_20) $(am__append_24) $(am__append_26)
 filters = $(am__append_6) $(am__append_11) $(am__append_16) \
 filters = $(am__append_6) $(am__append_11) $(am__append_16) \
-       $(am__append_19) $(am__append_22)
-@CY_CONSOLE_TRUE@cycript_SOURCES = Console.cpp $(am__append_26)
+       $(am__append_19) $(am__append_23)
+@CY_CONSOLE_TRUE@cycript_SOURCES = Console.cpp $(am__append_27)
 @CY_CONSOLE_TRUE@cycript_LDADD = libcycript.la $(LTLIBREADLINE) $(LTLIBTERMCAP) $(LTLIBGCC) $(PTHREAD_CFLAGS) -ldl
 @CY_EXECUTE_TRUE@@CY_PRELINK_TRUE@CY_LANGFLAGS = -DCY_JAVA=$(CY_JAVA) -DCY_PYTHON=$(CY_PYTHON) -DCY_OBJECTIVEC=$(CY_OBJECTIVEC)
 all: config.h
 @CY_CONSOLE_TRUE@cycript_LDADD = libcycript.la $(LTLIBREADLINE) $(LTLIBTERMCAP) $(LTLIBGCC) $(PTHREAD_CFLAGS) -ldl
 @CY_EXECUTE_TRUE@@CY_PRELINK_TRUE@CY_LANGFLAGS = -DCY_JAVA=$(CY_JAVA) -DCY_PYTHON=$(CY_PYTHON) -DCY_OBJECTIVEC=$(CY_OBJECTIVEC)
 all: config.h
index 9866a39110710bccec44d5e8f839b7ee401c4fc9..5239ff127735be7b3bef4c3ed8f799087d50dae2 100644 (file)
@@ -27,6 +27,7 @@
 #include "Driver.hpp"
 #include "Parser.hpp"
 #include "Stack.hpp"
 #include "Driver.hpp"
 #include "Parser.hpp"
 #include "Stack.hpp"
+#include "Syntax.hpp"
 #define CYNew new(driver.pool_)
 
 @begin ObjectiveC
 #define CYNew new(driver.pool_)
 
 @begin ObjectiveC
index c91f69b9035512da958e82f42e9994c71652dbc8..c3d9d6504a771b48a7ba910d9c35ed5988a2c2f0 100755 (executable)
@@ -4,4 +4,6 @@ source ./android.sh
 rm -rf build.and-armeabi
 mkdir -p build.and-armeabi
 cd build.and-armeabi
 rm -rf build.and-armeabi
 mkdir -p build.and-armeabi
 cd build.and-armeabi
-cfg ../configure CPPFLAGS="-I../ncurses.and/include -I../readline.and -I../android -I../libffi.and/include" LDFLAGS="-L../ncurses.and/lib -L../readline.and -L../android/armeabi -L../libffi.and ${ldf[*]}"
+cpp+=(-I../ncurses.and/include -I../readline.and -I../android -I../libffi.and/include)
+ldf+=(-L../ncurses.and/lib -L../readline.and -L../android/armeabi -L../libffi.and/.libs)
+cfg ../configure "$@"
index 8cac85329a2608e26366aeab4ef4f236c49c93eb..d155b1b02321f33342c0e7c4d8c3a50d0931758e 100755 (executable)
@@ -2,10 +2,12 @@
 ndk=~/bin/android-ndk
 abi=armeabi
 ver=4.9
 ndk=~/bin/android-ndk
 abi=armeabi
 ver=4.9
-bin=${ndk}/toolchains/arm-linux-androideabi-${ver}/prebuilt/darwin-x86_64/bin
+api=9
+bld=darwin-x86_64
+bin=${ndk}/toolchains/arm-linux-androideabi-${ver}/prebuilt/${bld}/bin
 #export PATH=${bin}:$PATH
 flg=()
 #export PATH=${bin}:$PATH
 flg=()
-flg+=(--sysroot=${ndk}/platforms/android-9/arch-arm)
+flg+=(--sysroot=${ndk}/platforms/android-${api}/arch-arm)
 flg+=(-I${ndk}/sources/cxx-stl/gnu-libstdc++/${ver}/include)
 flg+=(-I${ndk}/sources/cxx-stl/gnu-libstdc++/${ver}/libs/${abi}/include)
 ldf=()
 flg+=(-I${ndk}/sources/cxx-stl/gnu-libstdc++/${ver}/include)
 flg+=(-I${ndk}/sources/cxx-stl/gnu-libstdc++/${ver}/libs/${abi}/include)
 ldf=()
@@ -14,8 +16,11 @@ ldf+=(-lgnustl_static)
 tgt=arm-linux-androideabi
 cc=${bin}/${tgt}-gcc
 cxx=${bin}/${tgt}-g++
 tgt=arm-linux-androideabi
 cc=${bin}/${tgt}-gcc
 cxx=${bin}/${tgt}-g++
+cpp=()
+cpp+=(-fPIE)
+ldf+=(-rdynamic -fPIE -pie)
 function cfg() {
     cfg=$1
     shift
 function cfg() {
     cfg=$1
     shift
-    CC="${cc} ${flg[*]}" CXX="${cxx} ${flg[*]}" OBJCXX="${cxx} ${flg[*]}" "${cfg}" --host="${tgt}" LDFLAGS="${ldf[*]}" "$@"
+    CC="${cc} ${flg[*]}" CXX="${cxx} ${flg[*]}" OBJCXX="${cxx} ${flg[*]}" "${cfg}" --host="${tgt}" CPPFLAGS="${cpp[*]}" LDFLAGS="${ldf[*]}" "$@"
 }
 }
index 8f9f3d83982c8c522a025b366dc74fd04db3cbc7..0326e92060dff363c3ec0017cabf873f7cdd9d28 100755 (executable)
--- a/configure
+++ b/configure
@@ -22670,7 +22670,7 @@ return sqlite3_open_v2 ();
   return 0;
 }
 _ACEOF
   return 0;
 }
 _ACEOF
-for ac_lib in '' sqlite3; do
+for ac_lib in '' sqlite3 sqlite; do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
@@ -23150,7 +23150,7 @@ return JNI_GetCreatedJavaVMs ();
   return 0;
 }
 _ACEOF
   return 0;
 }
 _ACEOF
-for ac_lib in '' dvm; do
+for ac_lib in '' art dvm; do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
@@ -23791,6 +23791,7 @@ $as_echo "$ac_cv_framework_CoreFoundation" >&6; }
   done
 
 
   done
 
 
+            CY_OBJECTIVEC=1
 
 
 
 
 
 
@@ -23911,6 +23912,7 @@ done
 
             if test "x$GNUSTEP_CONFIG" != x; then :
 
 
             if test "x$GNUSTEP_CONFIG" != x; then :
 
+                CY_OBJECTIVEC=1
 
 
   for element in `$GNUSTEP_CONFIG --objc-flags`; do
 
 
   for element in `$GNUSTEP_CONFIG --objc-flags`; do
 
 
 
 
 
 
+else
+
+        CY_OBJECTIVEC=0
+
+
 fi
 
     ac_ext=cpp
 fi
 
     ac_ext=cpp
index 52a6ee502d364183e2726e53848b1dbdf676d965..0ee1cb24e7c970afe53c72c36df2182d85a71349 100644 (file)
@@ -206,7 +206,7 @@ AS_CASE([$CY_EXECUTE], [1], [
     ])])
 
     CY_LT_LIB([LTLIBSQLITE3], [AC_CHECK_HEADERS([sqlite3.h], [
     ])])
 
     CY_LT_LIB([LTLIBSQLITE3], [AC_CHECK_HEADERS([sqlite3.h], [
-        AC_SEARCH_LIBS([sqlite3_open_v2], [sqlite3])
+        AC_SEARCH_LIBS([sqlite3_open_v2], [sqlite3 sqlite])
     ])])
 
     AC_CHECK_HEADERS([ffi.h ffi/ffi.h], [break])
     ])])
 
     AC_CHECK_HEADERS([ffi.h ffi/ffi.h], [break])
@@ -225,7 +225,7 @@ AS_CASE([$CY_EXECUTE], [1], [
         AC_SUBST([CY_JAVA], [1])
     ], [AC_CHECK_HEADER([jni.h], [
         AC_SUBST([CY_JAVA], [1])
         AC_SUBST([CY_JAVA], [1])
     ], [AC_CHECK_HEADER([jni.h], [
         AC_SUBST([CY_JAVA], [1])
-        AC_SEARCH_LIBS([JNI_GetCreatedJavaVMs], [dvm], [
+        AC_SEARCH_LIBS([JNI_GetCreatedJavaVMs], [art dvm], [
         ])
     ], [
         AC_SUBST([CY_JAVA], [0])
         ])
     ], [
         AC_SUBST([CY_JAVA], [0])
@@ -273,7 +273,7 @@ AS_CASE([$CY_EXECUTE], [1], [
         CY_LT_LIB([LTOBJECTIVEC], [AC_CHECK_FRAMEWORK([CoreFoundation], [
             #include <CoreFoundation/CFBase.h>
         ], [CFAllocatorGetDefault();], [
         CY_LT_LIB([LTOBJECTIVEC], [AC_CHECK_FRAMEWORK([CoreFoundation], [
             #include <CoreFoundation/CFBase.h>
         ], [CFAllocatorGetDefault();], [
-            AC_SUBST([CY_OBJECTIVEC])
+            AC_SUBST([CY_OBJECTIVEC], [1])
 
             AC_CHECK_FRAMEWORK([Foundation], [
                 #include <Foundation/NSObject.h>
 
             AC_CHECK_FRAMEWORK([Foundation], [
                 #include <Foundation/NSObject.h>
@@ -283,11 +283,13 @@ AS_CASE([$CY_EXECUTE], [1], [
             AC_CHECK_PROGS([GNUSTEP_CONFIG], [gnustep-config])
 
             AS_IF([test "x$GNUSTEP_CONFIG" != x], [
             AC_CHECK_PROGS([GNUSTEP_CONFIG], [gnustep-config])
 
             AS_IF([test "x$GNUSTEP_CONFIG" != x], [
-                AC_SUBST([CY_OBJECTIVEC])
+                AC_SUBST([CY_OBJECTIVEC], [1])
                 AC_LIB_APPENDTOVAR([OBJCXXFLAGS], [`$GNUSTEP_CONFIG --objc-flags`])
                 AC_LIB_APPENDTOVAR([LIBS], [`$GNUSTEP_CONFIG --base-libs`])
             ], [AC_SUBST([CY_OBJECTIVEC], [0])])
         ])])
                 AC_LIB_APPENDTOVAR([OBJCXXFLAGS], [`$GNUSTEP_CONFIG --objc-flags`])
                 AC_LIB_APPENDTOVAR([LIBS], [`$GNUSTEP_CONFIG --base-libs`])
             ], [AC_SUBST([CY_OBJECTIVEC], [0])])
         ])])
+    ], [
+        AC_SUBST([CY_OBJECTIVEC], [0])
     ])
 
     AC_LANG_POP([Objective C++])
     ])
 
     AC_LANG_POP([Objective C++])
index 3338cd67a824bb28ce9a09df5d930eadbc80a740..664039f7f35507f0767fc479bd33787f4f280018 100644 (file)
@@ -57,6 +57,7 @@ String *String::Copy(CYPool &pool, const char *rename) const {
     return new(pool) String();
 }
 
     return new(pool) String();
 }
 
+#ifdef CY_OBJECTIVEC
 Meta *Meta::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Meta();
 }
 Meta *Meta::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Meta();
 }
@@ -64,6 +65,7 @@ Meta *Meta::Copy(CYPool &pool, const char *rename) const {
 Selector *Selector::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Selector();
 }
 Selector *Selector::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Selector();
 }
+#endif
 
 Bits *Bits::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Bits(size);
 
 Bits *Bits::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Bits(size);
@@ -77,9 +79,11 @@ Array *Array::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Array(*type.Copy(pool), size);
 }
 
     return new(pool) Array(*type.Copy(pool), size);
 }
 
+#ifdef CY_OBJECTIVEC
 Object *Object::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Object(pool.strdup(name));
 }
 Object *Object::Copy(CYPool &pool, const char *rename) const {
     return new(pool) Object(pool.strdup(name));
 }
+#endif
 
 Aggregate *Aggregate::Copy(CYPool &pool, const char *rename) const {
     Aggregate *copy(new(pool) Aggregate(overlap, rename ?: pool.strdup(name)));
 
 Aggregate *Aggregate::Copy(CYPool &pool, const char *rename) const {
     Aggregate *copy(new(pool) Aggregate(overlap, rename ?: pool.strdup(name)));
@@ -93,11 +97,13 @@ Function *Function::Copy(CYPool &pool, const char *rename) const {
     return copy;
 }
 
     return copy;
 }
 
+#ifdef CY_OBJECTIVEC
 Block *Block::Copy(CYPool &pool, const char *rename) const {
     Block *copy(new(pool) Block());
     sig::Copy(pool, copy->signature, signature);
     return copy;
 }
 Block *Block::Copy(CYPool &pool, const char *rename) const {
     Block *copy(new(pool) Block());
     sig::Copy(pool, copy->signature, signature);
     return copy;
 }
+#endif
 
 void Copy(CYPool &pool, ffi_type &lhs, ffi_type &rhs) {
     lhs.size = rhs.size;
 
 void Copy(CYPool &pool, ffi_type &lhs, ffi_type &rhs) {
     lhs.size = rhs.size;
index 5d31b0f70b757e941f1b53239fa928bb911f1208..35700e9e598fd1e9e133540da9003004bf0b7347 100644 (file)
@@ -111,6 +111,7 @@ ffi_type *String::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
 
     return &ffi_type_pointer;
 }
 
+#ifdef CY_OBJECTIVEC
 ffi_type *Meta::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
 ffi_type *Meta::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
@@ -118,6 +119,7 @@ ffi_type *Meta::GetFFI(CYPool &pool) const {
 ffi_type *Selector::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
 ffi_type *Selector::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
+#endif
 
 ffi_type *Bits::GetFFI(CYPool &pool) const {
     /* XXX: we can totally make this work */
 
 ffi_type *Bits::GetFFI(CYPool &pool) const {
     /* XXX: we can totally make this work */
@@ -145,9 +147,11 @@ ffi_type *Array::GetFFI(CYPool &pool) const {
     return ffi;
 }
 
     return ffi;
 }
 
+#ifdef CY_OBJECTIVEC
 ffi_type *Object::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
 ffi_type *Object::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
+#endif
 
 ffi_type *Aggregate::GetFFI(CYPool &pool) const {
     // XXX: we can totally make overlap work
 
 ffi_type *Aggregate::GetFFI(CYPool &pool) const {
     // XXX: we can totally make overlap work
@@ -177,9 +181,11 @@ ffi_type *Function::GetFFI(CYPool &pool) const {
     _assert(false);
 }
 
     _assert(false);
 }
 
+#ifdef CY_OBJECTIVEC
 ffi_type *Block::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
 ffi_type *Block::GetFFI(CYPool &pool) const {
     return &ffi_type_pointer;
 }
+#endif
 
 void sig_ffi_cif(CYPool &pool, size_t variadic, const Signature &signature, ffi_cif *cif) {
     _assert(signature.count != 0);
 
 void sig_ffi_cif(CYPool &pool, size_t variadic, const Signature &signature, ffi_cif *cif) {
     _assert(signature.count != 0);
index 8eb081873e1a7d16ee9ea88f1c8813e650ad42a5..b78015dbdc17ba96414b9979fcf7602108c712a7 100644 (file)
@@ -91,7 +91,10 @@ Type *Parse_(CYPool &pool, const char **encoding, char eos, bool named, Callback
   parse:
     switch (next) {
         case '?': type = new(pool) Unknown(); break;
   parse:
     switch (next) {
         case '?': type = new(pool) Unknown(); break;
+
+#ifdef CY_OBJECTIVEC
         case '#': type = new(pool) Meta(); break;
         case '#': type = new(pool) Meta(); break;
+#endif
 
         case '(':
             type = new(pool) Aggregate(true);
 
         case '(':
             type = new(pool) Aggregate(true);
@@ -99,6 +102,8 @@ Type *Parse_(CYPool &pool, const char **encoding, char eos, bool named, Callback
         goto aggregate;
 
         case '*': type = new(pool) String(); break;
         goto aggregate;
 
         case '*': type = new(pool) String(); break;
+
+#ifdef CY_OBJECTIVEC
         case ':': type = new(pool) Selector(); break;
 
         case '@': {
         case ':': type = new(pool) Selector(); break;
 
         case '@': {
@@ -128,6 +133,7 @@ Type *Parse_(CYPool &pool, const char **encoding, char eos, bool named, Callback
             }
 
         } break;
             }
 
         } break;
+#endif
 
         case 'B': type = new(pool) Primitive<bool>(); break;
         case 'C': type = new(pool) Primitive<unsigned char>(); break;
 
         case 'B': type = new(pool) Primitive<bool>(); break;
         case 'C': type = new(pool) Primitive<unsigned char>(); break;
@@ -151,10 +157,12 @@ Type *Parse_(CYPool &pool, const char **encoding, char eos, bool named, Callback
                 _assert(false); // XXX: why is this here?!?
             else {
                 type = Parse_(pool, encoding, eos, named, callback);
                 _assert(false); // XXX: why is this here?!?
             else {
                 type = Parse_(pool, encoding, eos, named, callback);
+#ifdef CY_OBJECTIVEC
                 Aggregate *aggregate(dynamic_cast<Aggregate *>(type));
                 if (aggregate != NULL && strcmp(aggregate->name, "_objc_class") == 0)
                     type = new(pool) Meta();
                 else
                 Aggregate *aggregate(dynamic_cast<Aggregate *>(type));
                 if (aggregate != NULL && strcmp(aggregate->name, "_objc_class") == 0)
                     type = new(pool) Meta();
                 else
+#endif
                     type = new(pool) Pointer(*type);
             }
         break;
                     type = new(pool) Pointer(*type);
             }
         break;
@@ -326,6 +334,7 @@ const char *String::Encode(CYPool &pool) const {
     return "*";
 }
 
     return "*";
 }
 
+#ifdef CY_OBJECTIVEC
 const char *Meta::Encode(CYPool &pool) const {
     return "#";
 }
 const char *Meta::Encode(CYPool &pool) const {
     return "#";
 }
@@ -333,6 +342,7 @@ const char *Meta::Encode(CYPool &pool) const {
 const char *Selector::Encode(CYPool &pool) const {
     return ":";
 }
 const char *Selector::Encode(CYPool &pool) const {
     return ":";
 }
+#endif
 
 const char *Bits::Encode(CYPool &pool) const {
     return pool.strcat("b", pool.itoa(size), NULL);
 
 const char *Bits::Encode(CYPool &pool) const {
     return pool.strcat("b", pool.itoa(size), NULL);
@@ -346,9 +356,11 @@ const char *Array::Encode(CYPool &pool) const {
     return pool.strcat("[", pool.itoa(size), type.Encode(pool), "]", NULL);
 }
 
     return pool.strcat("[", pool.itoa(size), type.Encode(pool), "]", NULL);
 }
 
+#ifdef CY_OBJECTIVEC
 const char *Object::Encode(CYPool &pool) const {
     return name == NULL ? "@" : pool.strcat("@\"", name, "\"", NULL);
 }
 const char *Object::Encode(CYPool &pool) const {
     return name == NULL ? "@" : pool.strcat("@\"", name, "\"", NULL);
 }
+#endif
 
 const char *Aggregate::Encode(CYPool &pool) const {
     return pool.strcat(overlap ? "(" : "{", name == NULL ? "?" : name, "=", Unparse(pool, &signature), overlap ? ")" : "}", NULL);
 
 const char *Aggregate::Encode(CYPool &pool) const {
     return pool.strcat(overlap ? "(" : "{", name == NULL ? "?" : name, "=", Unparse(pool, &signature), overlap ? ")" : "}", NULL);
@@ -358,9 +370,11 @@ const char *Function::Encode(CYPool &pool) const {
     return "?";
 }
 
     return "?";
 }
 
+#ifdef CY_OBJECTIVEC
 const char *Block::Encode(CYPool &pool) const {
     return "@?";
 }
 const char *Block::Encode(CYPool &pool) const {
     return "@?";
 }
+#endif
 
 const char *Unparse(CYPool &pool, const struct Type *type) {
     const char *base(type->Encode(pool));
 
 const char *Unparse(CYPool &pool, const struct Type *type) {
     const char *base(type->Encode(pool));
index b7547fa206ad6bd13ae8ada5559df7da1fe61c88..ea0a307ade3d2b32b6dc63d624b86e6e50118be3 100644 (file)
@@ -134,6 +134,7 @@ struct String :
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
 
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
 
+#ifdef CY_OBJECTIVEC
 struct Meta :
     Type
 {
 struct Meta :
     Type
 {
@@ -159,6 +160,7 @@ struct Selector :
     void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
     void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
+#endif
 
 struct Bits :
     Type
 
 struct Bits :
     Type
@@ -222,6 +224,7 @@ struct Array :
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
 
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
 
+#ifdef CY_OBJECTIVEC
 struct Object :
     Type
 {
 struct Object :
     Type
 {
@@ -241,6 +244,7 @@ struct Object :
     void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
     void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
+#endif
 
 struct Aggregate :
     Type
 
 struct Aggregate :
     Type
@@ -295,6 +299,7 @@ struct Function :
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
 
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
 
+#ifdef CY_OBJECTIVEC
 struct Block :
     Callable
 {
 struct Block :
     Callable
 {
@@ -308,6 +313,7 @@ struct Block :
     void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
     void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;
     JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
 };
+#endif
 
 Type *joc_parse_type(char **name, char eos, bool variable, bool signature);
 void joc_parse_signature(Signature *signature, char **name, char eos, bool variable);
 
 Type *joc_parse_type(char **name, char eos, bool variable, bool signature);
 void joc_parse_signature(Signature *signature, char **name, char eos, bool variable);