1 # Reference: https://github.com/tensorflow/tensorflow/blob/v2.3.0/tensorflow/lite/tools/make/Makefile
3 # Tensorflow Lite library 2.3.0
5 set(TENSORFLOW_LITE_BASE ${TFLiteVanillaTensorFlowSource_DIR}/tensorflow/lite)
7 file(GLOB TFLITE_CORE_SRCS "${TENSORFLOW_LITE_BASE}/*.c"
8 "${TENSORFLOW_LITE_BASE}/*.cc"
9 "${TENSORFLOW_LITE_BASE}/core/*.cc")
11 file(GLOB_RECURSE TFLITE_KERNEL_SRCS "${TENSORFLOW_LITE_BASE}/kernels/*.cc")
13 file(GLOB TFLITE_LIB_SRCS "${TENSORFLOW_LITE_BASE}/c/*.c" "${TENSORFLOW_LITE_BASE}/c/*.cc")
15 file(GLOB TFLITE_API_SRCS "${TENSORFLOW_LITE_BASE}/core/api/*.c"
16 "${TENSORFLOW_LITE_BASE}/core/api/*.cc")
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")
21 file(GLOB TFLITE_EXPERIMENTAL_SRCS "${TENSORFLOW_LITE_BASE}/experimental/resource/*.cc")
23 file(GLOB TFLITE_SPARSITY_SRCS "${TENSORFLOW_LITE_BASE}/tools/optimize/sparsity/*.cc")
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})
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")
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})
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})
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")
69 list(REMOVE_ITEM TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/mmap_allocation.cc")
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")
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")
85 # ios: we don't support ios
86 list(REMOVE_ITEM TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/minimal_logging_ios.cc")
90 list(REMOVE_ITEM TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/minimal_logging_android.cc")
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})
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}")
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)
121 target_link_libraries(tensorflow-lite-2.3.0 log)
122 target_include_directories(tensorflow-lite-2.3.0 PUBLIC "${NDK_DIR}/..")