diff options
Diffstat (limited to 'library/src/main')
-rw-r--r-- | library/src/main/cpp/CMakeLists.txt | 36 | ||||
-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.kt | 12 |
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") + } } - } } |