Imported Upstream version 1.8.0
[platform/core/ml/nnfw.git] / infra / nnfw / cmake / packages / TensorFlowLite-2.3.0 / CMakeLists.txt
1 # Reference: https://github.com/tensorflow/tensorflow/blob/v2.3.0/tensorflow/lite/tools/make/Makefile
2 #
3 # Tensorflow Lite library 2.3.0
4 #
5 set(TENSORFLOW_LITE_BASE ${TFLiteVanillaTensorFlowSource_DIR}/tensorflow/lite)
6
7 file(GLOB TFLITE_CORE_SRCS "${TENSORFLOW_LITE_BASE}/*.c"
8      "${TENSORFLOW_LITE_BASE}/*.cc"
9      "${TENSORFLOW_LITE_BASE}/core/*.cc")
10
11 file(GLOB_RECURSE TFLITE_KERNEL_SRCS "${TENSORFLOW_LITE_BASE}/kernels/*.cc")
12
13 file(GLOB TFLITE_LIB_SRCS "${TENSORFLOW_LITE_BASE}/c/*.c" "${TENSORFLOW_LITE_BASE}/c/*.cc")
14
15 file(GLOB TFLITE_API_SRCS "${TENSORFLOW_LITE_BASE}/core/api/*.c"
16      "${TENSORFLOW_LITE_BASE}/core/api/*.cc")
17
18 list(APPEND TFLITE_PROFILING_SRCS "${TENSORFLOW_LITE_BASE}/profiling/memory_info.cc")
19 list(APPEND TFLITE_PROFILING_SRCS "${TENSORFLOW_LITE_BASE}/profiling/time.cc")
20
21 file(GLOB TFLITE_EXPERIMENTAL_SRCS "${TENSORFLOW_LITE_BASE}/experimental/resource/*.cc")
22
23 file(GLOB TFLITE_SPARSITY_SRCS "${TENSORFLOW_LITE_BASE}/tools/optimize/sparsity/*.cc")
24
25 list(APPEND TFLITE_SRCS ${TFLITE_CORE_SRCS})
26 list(APPEND TFLITE_SRCS ${TFLITE_KERNEL_SRCS})
27 list(APPEND TFLITE_SRCS ${TFLITE_LIB_SRCS})
28 list(APPEND TFLITE_SRCS ${TFLITE_API_SRCS})
29 list(APPEND TFLITE_SRCS ${TFLITE_PROFILING_SRCS})
30 list(APPEND TFLITE_SRCS ${TFLITE_EXPERIMENTAL_SRCS})
31 list(APPEND TFLITE_SRCS ${TFLITE_SPARSITY_SRCS})
32
33 # externals
34 list(APPEND TFLITE_SRCS "${TFLiteVanillaFarmhashSource_DIR}/src/farmhash.cc")
35 list(APPEND TFLITE_SRCS "${TFLiteVanillaFFT2DSource_DIR}/fftsg.c")
36 list(APPEND TFLITE_SRCS "${TFLiteVanillaFFT2DSource_DIR}/fftsg2d.c")
37 list(APPEND TFLITE_SRCS "${TFLiteVanillaFlatBuffersSource_DIR}/src/util.cpp")
38
39 # externals - absl
40 file(GLOB_RECURSE ABSL_SRCS "${TFLiteVanillaAbslSource_DIR}/absl/*.cc")
41 file(GLOB_RECURSE ABSL_EXCLS "${TFLiteVanillaAbslSource_DIR}/absl/*test*.cc"
42      "${TFLiteVanillaAbslSource_DIR}/absl/*benchmark*.cc"
43      "${TFLiteVanillaAbslSource_DIR}/absl/synchronization/*.cc"
44      "${TFLiteVanillaAbslSource_DIR}/absl/debugging/*.cc"
45      "${TFLiteVanillaAbslSource_DIR}/absl/hash/*.cc"
46      "${TFLiteVanillaAbslSource_DIR}/absl/flags/*.cc"
47      "${TFLiteVanillaAbslSource_DIR}/absl/random/*.cc")
48 list(REMOVE_ITEM ABSL_SRCS ${ABSL_EXCLS})
49 list(APPEND TFLITE_SRCS ${ABSL_SRCS})
50
51 # externals - ruy
52 file(GLOB RUY_SRCS "${TFLiteVanillaRuySource_DIR}/ruy/*.cc")
53 file(GLOB_RECURSE RUY_EXCLS "${TFLiteVanillaRuySource_DIR}/ruy/*test*.cc"
54       "${TFLiteVanillaRuySource_DIR}/ruy/*benchmark*.cc"
55       "${TFLiteVanillaRuySource_DIR}/ruy/*example*.cc")
56 list(REMOVE_ITEM RUY_SRCS ${RUY_EXCLS})
57 # Temporary fix for ruy compilation error.
58 # TODO(b/158800055): Remove this hack once the ruy version is correctly bumped.
59 list(REMOVE_ITEM RUY_SRCS "${TFLiteVanillaRuySource_DIR}/ruy/prepare_packed_matrices.cc")
60 list(APPEND TFLITE_SRCS ${RUY_SRCS})
61
62
63 # Build with mmap? true
64 # caution: v2.3.0's Makefile has wrong code on this part. This is fixed on master branch.
65 set(BUILD_WITH_MMAP TRUE)
66 if(${BUILD_WITH_MMAP})
67   list(REMOVE_ITEM TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/mmap_allocation_disabled.cc")
68 else()
69   list(REMOVE_ITEM TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/mmap_allocation.cc")
70 endif()
71
72 # Build with nnapi? true
73 # caution: this nnapi delegate comes from tflite, not ours.
74 set(BUILD_WITH_NNAPI TRUE)
75 if(${BUILD_WITH_NNAPI})
76   list(APPEND TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/delegates/nnapi/nnapi_delegate.cc")
77   list(APPEND TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/delegates/nnapi/quant_lstm_sup.cc")
78   list(APPEND TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/nnapi/nnapi_implementation.cc")
79   list(APPEND TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/nnapi/nnapi_util.cc")
80 else()
81   list(APPEND TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/delegates/nnapi/nnapi_delegate_disabled.cc")
82   list(APPEND TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/nnapi/nnapi_implementation_disabled.cc")
83 endif()
84
85 # ios: we don't support ios
86 list(REMOVE_ITEM TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/minimal_logging_ios.cc")
87
88 # android
89 if(NOT ANDROID)
90   list(REMOVE_ITEM TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/minimal_logging_android.cc")
91 endif()
92
93 # exclude some source files
94 file(GLOB_RECURSE TFLITE_EXCLS "${TENSORFLOW_LITE_BASE}/*test*.cc"
95      "${TENSORFLOW_LITE_BASE}/*benchmark*.cc"
96      "${TENSORFLOW_LITE_BASE}/*example*.cc"
97      "${TENSORFLOW_LITE_BASE}/*tool*.cc")
98 list(REMOVE_ITEM TFLITE_SRCS ${TFLITE_EXCLS})
99
100 # include headers
101 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaTensorFlowSource_DIR}")
102 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaEigenSource_DIR}")
103 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaAbslSource_DIR}")
104 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaGEMMLowpSource_DIR}")
105 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaNEON2SSESource_DIR}")
106 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaFarmhashSource_DIR}/src")
107 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaFlatBuffersSource_DIR}/include")
108 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaFP16Source_DIR}/include")
109 list(APPEND TFLITE_INCLUDES "${TFLiteVanillaRuySource_DIR}")
110
111 add_library(tensorflow-lite-2.3.0 STATIC ${TFLITE_SRCS})
112 target_include_directories(tensorflow-lite-2.3.0 SYSTEM PUBLIC ${TFLITE_INCLUDES})
113 target_compile_definitions(tensorflow-lite-2.3.0 PUBLIC "GEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK -DTFLITE_WITH_RUY -DTFLITE_WITH_RUY_GEMV")
114 set_property(TARGET tensorflow-lite-2.3.0 PROPERTY POSITION_INDEPENDENT_CODE ON)
115 target_link_libraries(tensorflow-lite-2.3.0 eigen ${LIB_PTHREAD} dl)
116 if(NOT ANDROID AND ${BUILD_WITH_NNAPI})
117   target_link_libraries(tensorflow-lite-2.3.0 rt)
118 endif()
119
120 if(ANDROID)
121   target_link_libraries(tensorflow-lite-2.3.0 log)
122   target_include_directories(tensorflow-lite-2.3.0 PUBLIC "${NDK_DIR}/..")
123 endif()