]> git.saurik.com Git - cycript.git/commitdiff
Detect jni.h and link Android build against Dalvik.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 11 Oct 2014 11:50:29 +0000 (04:50 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 11 Oct 2014 11:50:29 +0000 (04:50 -0700)
Makefile.am
Makefile.in
configure
configure.ac

index ef426a222943fcad455524d9611c6c7eecfe2bf1..eaf4c4e0e45f3e37dcbcb4ffdbc66a7ec8b6668b 100644 (file)
@@ -69,6 +69,12 @@ Bridge.hpp: Bridge.gperf
        $(GPERF) $< | $(SED) -e 's/defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__/0/' >$@
 endif
 
+if CY_JAVA
+filters += Java
+libcycript_la_SOURCES += 
+libcycript_la_LIBADD += $(LTJAVA)
+endif
+
 if CY_OBJECTIVEC
 filters += ObjectiveC
 libcycript_la_SOURCES += ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
index 9e0e3ec8a7b01b800034439a6dbfd1ff3a6afa33..42eb477e067d7ad97134977c69340c4d2da95a61 100644 (file)
@@ -106,13 +106,16 @@ host_triplet = @host@
 @CY_EXECUTE_TRUE@am__append_3 = -DCY_EXECUTE
 @CY_EXECUTE_TRUE@am__append_4 = C
 @CY_EXECUTE_TRUE@am__append_5 = Bridge.gperf Bridge.hpp
-@CY_OBJECTIVEC_TRUE@am__append_6 = ObjectiveC
-@CY_OBJECTIVEC_TRUE@am__append_7 = ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
-@CY_OBJECTIVEC_TRUE@am__append_8 = $(LTOBJECTIVEC)
-@CY_MACH_TRUE@am__append_9 = Handler.mm
-@CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__append_10 = Mach/Inject.cpp
-@CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__append_11 = -DCY_ATTACH
-@CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__append_12 = Trampoline.t.lo \
+@CY_JAVA_TRUE@am__append_6 = Java
+@CY_JAVA_TRUE@am__append_7 = 
+@CY_JAVA_TRUE@am__append_8 = $(LTJAVA)
+@CY_OBJECTIVEC_TRUE@am__append_9 = ObjectiveC
+@CY_OBJECTIVEC_TRUE@am__append_10 = ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
+@CY_OBJECTIVEC_TRUE@am__append_11 = $(LTOBJECTIVEC)
+@CY_MACH_TRUE@am__append_12 = Handler.mm
+@CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__append_13 = Mach/Inject.cpp
+@CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__append_14 = -DCY_ATTACH
+@CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__append_15 = Trampoline.t.lo \
 @CY_CONSOLE_TRUE@@CY_MACH_TRUE@        libTrampoline.t.la \
 @CY_CONSOLE_TRUE@@CY_MACH_TRUE@        Trampoline.t.hpp
 subdir = .
@@ -165,10 +168,11 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 @CY_EXECUTE_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-@CY_OBJECTIVEC_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
+@CY_JAVA_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
+@CY_OBJECTIVEC_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
 libcycript_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
        $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
-       $(am__DEPENDENCIES_3)
+       $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4)
 am__libcycript_la_SOURCES_DIST = ConvertUTF.c Decode.cpp Driver.cpp \
        Highlight.cpp Library.cpp Network.cpp Output.cpp Parser.cpp \
        Replace.cpp Cycript.tab.cc lex.cy.cpp sig/ffi_type.cpp \
@@ -179,14 +183,15 @@ am__dirstamp = $(am__leading_dot)dirstamp
 @CY_EXECUTE_TRUE@am__objects_1 = sig/ffi_type.lo sig/parse.lo \
 @CY_EXECUTE_TRUE@      sig/copy.lo Bridge.lo Execute.lo \
 @CY_EXECUTE_TRUE@      JavaScriptCore.lo
-@CY_OBJECTIVEC_TRUE@am__objects_2 = ObjectiveC/Output.lo \
+am__objects_2 =
+@CY_OBJECTIVEC_TRUE@am__objects_3 = ObjectiveC/Output.lo \
 @CY_OBJECTIVEC_TRUE@   ObjectiveC/Replace.lo \
 @CY_OBJECTIVEC_TRUE@   ObjectiveC/Library.lo
-@CY_MACH_TRUE@am__objects_3 = Handler.lo
+@CY_MACH_TRUE@am__objects_4 = Handler.lo
 am_libcycript_la_OBJECTS = ConvertUTF.lo Decode.lo Driver.lo \
        Highlight.lo Library.lo Network.lo Output.lo Parser.lo \
        Replace.lo Cycript.tab.lo lex.cy.lo $(am__objects_1) \
-       $(am__objects_2) $(am__objects_3)
+       $(am__objects_2) $(am__objects_3) $(am__objects_4)
 libcycript_la_OBJECTS = $(am_libcycript_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -197,9 +202,9 @@ libcycript_la_LINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
        $(OBJCXXFLAGS) $(libcycript_la_LDFLAGS) $(LDFLAGS) -o $@
 PROGRAMS = $(bin_PROGRAMS)
 am__cycript_SOURCES_DIST = Console.cpp Display.cpp Mach/Inject.cpp
-@CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__objects_4 = Mach/Inject.$(OBJEXT)
+@CY_CONSOLE_TRUE@@CY_MACH_TRUE@am__objects_5 = Mach/Inject.$(OBJEXT)
 @CY_CONSOLE_TRUE@am_cycript_OBJECTS = Console.$(OBJEXT) \
-@CY_CONSOLE_TRUE@      Display.$(OBJEXT) $(am__objects_4)
+@CY_CONSOLE_TRUE@      Display.$(OBJEXT) $(am__objects_5)
 cycript_OBJECTS = $(am_cycript_OBJECTS)
 @CY_CONSOLE_TRUE@cycript_DEPENDENCIES = libcycript.la \
 @CY_CONSOLE_TRUE@      $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -385,6 +390,7 @@ CY_ARCH = @CY_ARCH@
 CY_ATTACH_GROUP = @CY_ATTACH_GROUP@
 CY_EXECUTE = @CY_EXECUTE@
 CY_FILTERS = @CY_FILTERS@
+CY_JAVA = @CY_JAVA@
 CY_MACH = @CY_MACH@
 CY_OBJECTIVEC = @CY_OBJECTIVEC@
 DEFS = @DEFS@
@@ -419,6 +425,7 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTFLAGS = @LTFLAGS@
+LTJAVA = @LTJAVA@
 LTJAVASCRIPTCORE = @LTJAVASCRIPTCORE@
 LTLIBFFI = @LTLIBFFI@
 LTLIBGCC = @LTLIBGCC@
@@ -521,25 +528,26 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = subdir-objects
-CLEANFILES = $(am__append_5) $(am__append_12) Cycript.yy Cycript.l \
+CLEANFILES = $(am__append_5) $(am__append_15) Cycript.yy Cycript.l \
        lex.cy.cpp Cycript.tab.cc Cycript.tab.hh location.hh \
        position.hh stack.hh Cycript.output
 SUBDIRS = 
 ACLOCAL_AMFLAGS = -I m4
 AM_CPPFLAGS = -I$(srcdir)/include -DYYDEBUG=1 -include config.h \
-       -include $(srcdir)/unconfig.h $(am__append_3) $(am__append_11)
+       -include $(srcdir)/unconfig.h $(am__append_3) $(am__append_14)
 CY_LDFLAGS = -no-undefined -avoid-version -export-dynamic
 lib_LTLIBRARIES = libcycript.la
 libcycript_la_LDFLAGS = $(CY_LDFLAGS)
 libcycript_la_LIBADD = $(LTLIBFFI) $(LTLIBGCC) -ldl $(am__append_2) \
-       $(am__append_8)
+       $(am__append_8) $(am__append_11)
 libcycript_la_SOURCES = ConvertUTF.c Decode.cpp Driver.cpp \
        Highlight.cpp Library.cpp Network.cpp Output.cpp Parser.cpp \
        Replace.cpp Cycript.tab.cc lex.cy.cpp $(am__append_1) \
-       $(am__append_7) $(am__append_9)
-filters = $(CY_FILTERS) $(am__append_4) $(am__append_6)
+       $(am__append_7) $(am__append_10) $(am__append_12)
+filters = $(CY_FILTERS) $(am__append_4) $(am__append_6) \
+       $(am__append_9)
 @CY_CONSOLE_TRUE@cycript_SOURCES = Console.cpp Display.cpp \
-@CY_CONSOLE_TRUE@      $(am__append_10)
+@CY_CONSOLE_TRUE@      $(am__append_13)
 @CY_CONSOLE_TRUE@cycript_LDADD = libcycript.la $(LTLIBREADLINE) $(LTLIBTERMCAP) $(LTLIBGCC) -ldl
 @CY_CONSOLE_TRUE@ldid = true
 @CY_CONSOLE_TRUE@entitle = $(ldid) -S$(srcdir)/cycript.xml
index b0f2ec2996464c324a677d12393692c1411021f5..3a88c75e283e1c143d76b1563faf5e4f3717f025 100755 (executable)
--- a/configure
+++ b/configure
@@ -655,9 +655,13 @@ LTLIBTERMCAP
 LTLIBREADLINE
 CY_OBJECTIVEC_FALSE
 CY_OBJECTIVEC_TRUE
+CY_JAVA_FALSE
+CY_JAVA_TRUE
 LTOBJECTIVEC
 GNUSTEP_CONFIG
 CY_OBJECTIVEC
+LTJAVA
+CY_JAVA
 LTLIBFFI
 LIBFFI_LIBS
 LIBFFI_CFLAGS
 
 
 
+    ac_fn_cxx_check_header_mongrel "$LINENO" "jni.h" "ac_cv_header_jni_h" "$ac_includes_default"
+if test "x$ac_cv_header_jni_h" = xyes; then :
+
+        CY_JAVA=1
+
+
+    cy_save=$LIBS
+    LIBS=
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing JNI_GetCreatedJavaVMs" >&5
+$as_echo_n "checking for library containing JNI_GetCreatedJavaVMs... " >&6; }
+if ${ac_cv_search_JNI_GetCreatedJavaVMs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char JNI_GetCreatedJavaVMs ();
+int
+main ()
+{
+return JNI_GetCreatedJavaVMs ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dvm; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_search_JNI_GetCreatedJavaVMs=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_JNI_GetCreatedJavaVMs+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_JNI_GetCreatedJavaVMs+:} false; then :
+
+else
+  ac_cv_search_JNI_GetCreatedJavaVMs=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_JNI_GetCreatedJavaVMs" >&5
+$as_echo "$ac_cv_search_JNI_GetCreatedJavaVMs" >&6; }
+ac_res=$ac_cv_search_JNI_GetCreatedJavaVMs
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+
+fi
+
+    LTJAVA=$LIBS
+    LIBS=$cy_save
+
+
+
+else
+
+        CY_JAVA=0
+
+
+fi
+
+
+
     ac_ext=mm
 ac_cpp='$OBJCXXCPP $CPPFLAGS'
 ac_compile='$OBJCXX -c $OBJCXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -19860,6 +19943,14 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
      ;;
 esac
 
+ if test "x$CY_JAVA" = x1; then
+  CY_JAVA_TRUE=
+  CY_JAVA_FALSE='#'
+else
+  CY_JAVA_TRUE='#'
+  CY_JAVA_FALSE=
+fi
+
  if test "x$CY_OBJECTIVEC" = x1; then
   CY_OBJECTIVEC_TRUE=
   CY_OBJECTIVEC_FALSE='#'
@@ -20558,6 +20649,10 @@ if test -z "${CY_EXECUTE_TRUE}" && test -z "${CY_EXECUTE_FALSE}"; then
   as_fn_error $? "conditional \"CY_EXECUTE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${CY_JAVA_TRUE}" && test -z "${CY_JAVA_FALSE}"; then
+  as_fn_error $? "conditional \"CY_JAVA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${CY_OBJECTIVEC_TRUE}" && test -z "${CY_OBJECTIVEC_FALSE}"; then
   as_fn_error $? "conditional \"CY_OBJECTIVEC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
index 382ddf0b7da86067b209172d7e1088a8731284a4..45df5a8172e73b890e954907487cd406e4a843ab 100644 (file)
@@ -218,6 +218,14 @@ AS_CASE([$CY_EXECUTE], [1], [
         AS_CASE([$ac_cv_search_ffi_call], [no], [CY_CHECK_PKG_CONFIG_LIBFFI])
     ]))
 
+    AC_CHECK_HEADER([jni.h], [
+        AC_SUBST([CY_JAVA], [1])
+        CY_LT_LIB([LTJAVA], [AC_SEARCH_LIBS([JNI_GetCreatedJavaVMs], [dvm], [
+        ])])
+    ], [
+        AC_SUBST([CY_JAVA], [0])
+    ])
+
     AC_LANG_PUSH([Objective C++])
 
     AC_MSG_CHECKING([if we really have Objective C++])
@@ -250,6 +258,7 @@ AS_CASE([$CY_EXECUTE], [1], [
     AC_LANG_POP([Objective C++])
 ])
 
+AM_CONDITIONAL([CY_JAVA], [test "x$CY_JAVA" = x1])
 AM_CONDITIONAL([CY_OBJECTIVEC], [test "x$CY_OBJECTIVEC" = x1])
 
 CY_LT_LIB([LTLIBREADLINE], [AX_LIB_READLINE])