Build Android TFLite JNI shared library (#1442)
author박세희/동작제어Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Thu, 31 May 2018 01:24:49 +0000 (10:24 +0900)
committer이춘석/동작제어Lab(SR)/Staff Engineer/삼성전자 <chunseok.lee@samsung.com>
Thu, 31 May 2018 01:24:49 +0000 (10:24 +0900)
* Build Android TFLite JNI shared library

This will change cmake to drop Android JNI including Tensorflow Lite
- current drop will work same as vanilla TFLite library

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
* apply comments

externals/CMakeLists.txt

index 5d038bf..004df65 100644 (file)
@@ -50,3 +50,27 @@ add_library(tensorflow-lite ${TFLITE_SRCS})
 target_include_directories(tensorflow-lite PUBLIC ${TFLITE_INCLUDES})
 target_compile_definitions(tensorflow-lite PUBLIC "GEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK")
 target_link_libraries(tensorflow-lite eigen3 ${LIB_PTHREAD} dl)
+
+if("${TARGET_OS}" STREQUAL "android")
+  #
+  # Tensorflow Lite JNI library
+  #
+  set(TFLITE_JNI_BASE ${TENSORFLOW_LITE_BASE}/java/src/main/native)
+  set(TFLITE_JNI_SRCS ${TFLITE_JNI_BASE}/duration_utils_jni.cc
+                      ${TFLITE_JNI_BASE}/exception_jni.cc
+                      ${TFLITE_JNI_BASE}/nativeinterpreterwrapper_jni.cc
+                      ${TFLITE_JNI_BASE}/tensor_jni.cc
+                      ${TFLITE_JNI_BASE}/tensorflow_lite_jni.cc
+                      ${TFLITE_JNI_BASE}/builtin_ops_jni.cc
+                      )
+  set(TFLITE_JNI_INCLUDES ${TENSORFLOW_LITE_BASE}/java/src/native)
+
+  # We need this for running vanilla tflite
+  # TODO remove this when nnfw is used
+  set(TFLITE_SRCS_V ${TENSORFLOW_LITE_BASE}/kernels/register.cc)
+
+  # TODO use tensorflow-lite static library instead of compiling all the sources again
+  add_library(tensorflowlite_jni SHARED ${TFLITE_JNI_SRCS} ${TFLITE_SRCS} ${TFLITE_SRCS_V})
+  target_include_directories(tensorflowlite_jni PUBLIC ${TFLITE_JNI_INCLUDES} ${TFLITE_INCLUDES})
+  target_link_libraries(tensorflowlite_jni eigen3 ${LIB_PTHREAD} dl)
+endif()