1 # NOTE This line prevents multiple definitions of tensorflow-lite target
2 if(TARGET tensorflow-lite)
3 set(TensorFlowLite_FOUND TRUE)
5 endif(TARGET tensorflow-lite)
7 if(BUILD_TENSORFLOW_LITE)
8 macro(return_unless VAR)
10 set(TensorFlowLite_FOUND PARENT_SCOPE)
13 endmacro(return_unless)
16 nnfw_find_package(AbslSource QUIET)
17 return_unless(AbslSource_FOUND)
18 nnfw_find_package(Eigen QUIET)
19 return_unless(Eigen_FOUND)
20 nnfw_find_package(FarmhashSource QUIET)
21 return_unless(FarmhashSource_FOUND)
22 nnfw_find_package(FlatBuffersSource QUIET)
23 return_unless(FlatBuffersSource_FOUND)
24 nnfw_find_package(GEMMLowpSource QUIET)
25 return_unless(GEMMLowpSource_FOUND)
26 nnfw_find_package(TensorFlowSource QUIET)
27 return_unless(TensorFlowSource_FOUND)
30 nnfw_find_package(NEON2SSESource QUIET)
32 nnas_include(ExternalProjectTools)
33 add_extdirectory("${CMAKE_CURRENT_LIST_DIR}/TensorFlowLite" tflite)
35 set(TensorFlowLite_FOUND TRUE)
37 endif(BUILD_TENSORFLOW_LITE)
39 # Use pre-built TensorFlow Lite
40 find_path(TFLITE_INCLUDE_DIR NAMES tensorflow/lite/interpreter.h)
41 find_library(TFLITE_LIB NAMES tensorflow-lite)
43 if(NOT TFLITE_INCLUDE_DIR)
44 set(TensorFlowLite_FOUND FALSE)
46 endif(NOT TFLITE_INCLUDE_DIR)
49 set(TensorFlowLite_FOUND FALSE)
53 message(STATUS "Found TensorFlow Lite: TRUE (include: ${TFLITE_INCLUDE_DIR}, lib: ${TFLITE_LIB}")
55 # TODO Use IMPORTED target
56 add_library(tensorflow-lite INTERFACE)
57 target_include_directories(tensorflow-lite SYSTEM INTERFACE ${TFLITE_INCLUDE_DIR})
58 target_link_libraries(tensorflow-lite INTERFACE ${TFLITE_LIB})
60 # Prefer -pthread to -lpthread
61 set(THREADS_PREFER_PTHREAD_FLAG TRUE)
62 set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
63 find_package(Threads QUIET)
66 target_link_libraries(tensorflow-lite INTERFACE ${CMAKE_THREAD_LIBS_INIT})
69 set(TensorFlowLite_FOUND TRUE)