summaryrefslogtreecommitdiff
path: root/library/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'library/src/main')
-rw-r--r--library/src/main/cpp/CMakeLists.txt36
-rw-r--r--library/src/main/cpp/akono-jni.cpp (renamed from library/src/main/cpp/akono-jni.c)19
-rw-r--r--library/src/main/kotlin/akono/AkoniJni.kt12
3 files changed, 53 insertions, 14 deletions
diff --git a/library/src/main/cpp/CMakeLists.txt b/library/src/main/cpp/CMakeLists.txt
index b2983d0b..b101f4bf 100644
--- a/library/src/main/cpp/CMakeLists.txt
+++ b/library/src/main/cpp/CMakeLists.txt
@@ -1,15 +1,41 @@
cmake_minimum_required(VERSION 3.4.1)
-add_library(akono-jni SHARED
- akono-jni.c)
+add_library(
+ akono-jni SHARED
+ akono-jni.cpp
+)
+
+set(deps_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../../../deps)
+
+if(NOT EXISTS ${deps_dir})
+ message( FATAL_ERROR "Dependency directory does not exist")
+endif()
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
+
+include_directories(
+ ${deps_dir}/node/src
+ ${deps_dir}/node/deps/v8/include
+)
+
+add_library(node SHARED IMPORTED)
+set_target_properties(node PROPERTIES IMPORTED_LOCATION
+ ${deps_dir}/compiled/${ANDROID_ABI}/libnode.so)
add_library(v8 STATIC IMPORTED)
set_target_properties(v8 PROPERTIES IMPORTED_LOCATION
- ${distribution_DIR}/gperf/lib/${ANDROID_ABI}/libgperf.so)
+ ${deps_dir}/compiled/${ANDROID_ABI}/libv8.cr.so)
+add_library(v8_platform STATIC IMPORTED)
+set_target_properties(v8_platform PROPERTIES IMPORTED_LOCATION
+ ${deps_dir}/compiled/${ANDROID_ABI}/libv8_libplatform.cr.so)
# Include libraries needed for hello-jni lib
target_link_libraries(akono-jni
- android
- log)
+ v8
+ v8_platform
+ node
+ android
+ log)
+
diff --git a/library/src/main/cpp/akono-jni.c b/library/src/main/cpp/akono-jni.cpp
index 49777431..2131e0eb 100644
--- a/library/src/main/cpp/akono-jni.c
+++ b/library/src/main/cpp/akono-jni.cpp
@@ -1,5 +1,7 @@
#include <string.h>
#include <jni.h>
+#include <libplatform/libplatform.h>
+#include <v8.h>
/* This is a trivial JNI example where we use a native method
* to return a new VM String. See the corresponding Java source
@@ -7,9 +9,8 @@
*
* hello-jni/app/src/main/java/com/example/hellojni/HelloJni.java
*/
-JNIEXPORT jstring JNICALL
-Java_akono_AkonoJni_stringFromJNI( JNIEnv* env,
- jobject thiz )
+extern "C" JNIEXPORT jstring JNICALL
+Java_akono_AkonoJni_stringFromJNI(JNIEnv* env, jobject thiz)
{
#if defined(__arm__)
#if defined(__ARM_ARCH_7A__)
@@ -43,5 +44,15 @@ Java_akono_AkonoJni_stringFromJNI( JNIEnv* env,
#define ABI "unknown"
#endif
- return (*env)->NewStringUTF(env, "Hello from JNI ! Compiled with ABI " ABI ".");
+ return env->NewStringUTF("Hello from JNI ! Compiled with ABI " ABI ".");
+}
+
+
+extern "C" JNIEXPORT jstring JNICALL
+Java_akono_AkonoJni_evalJs(JNIEnv* env, jobject thiz, jstring source)
+{
+ std::unique_ptr<v8::Platform> platform = v8::platform::NewDefaultPlatform();
+ v8::V8::InitializePlatform(platform.get());
+ v8::V8::Initialize();
+ return env->NewStringUTF("Hello World");
}
diff --git a/library/src/main/kotlin/akono/AkoniJni.kt b/library/src/main/kotlin/akono/AkoniJni.kt
index d3bc7a72..e37bef0e 100644
--- a/library/src/main/kotlin/akono/AkoniJni.kt
+++ b/library/src/main/kotlin/akono/AkoniJni.kt
@@ -1,11 +1,13 @@
package akono;
class AkonoJni {
- external fun stringFromJNI(): String;
+ external fun stringFromJNI(): String;
- companion object {
- init {
- System.loadLibrary("akono-jni")
+ external fun evalJs(source: String): String;
+
+ companion object {
+ init {
+ System.loadLibrary("akono-jni")
+ }
}
- }
}