summaryrefslogtreecommitdiff
path: root/infra/nnfw/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'infra/nnfw/cmake')
-rw-r--r--infra/nnfw/cmake/CfgOptionFlags.cmake4
-rw-r--r--infra/nnfw/cmake/packages/EigenConfig.cmake2
-rw-r--r--infra/nnfw/cmake/packages/TensorFlowLite-2.2.0Config.cmake92
-rw-r--r--infra/nnfw/cmake/packages/TensorFlowLite-2.3.0/CMakeLists.txt (renamed from infra/nnfw/cmake/packages/TensorFlowLite-2.2.0/CMakeLists.txt)83
-rw-r--r--infra/nnfw/cmake/packages/TensorFlowLite-2.3.0Config.cmake100
5 files changed, 151 insertions, 130 deletions
diff --git a/infra/nnfw/cmake/CfgOptionFlags.cmake b/infra/nnfw/cmake/CfgOptionFlags.cmake
index d1395f871..3c6b7d960 100644
--- a/infra/nnfw/cmake/CfgOptionFlags.cmake
+++ b/infra/nnfw/cmake/CfgOptionFlags.cmake
@@ -23,7 +23,7 @@ CMAKE_DEPENDENT_OPTION(BUILD_RUNTIME_NNAPI_TEST "Build Runtime NN API Generated
OFF)
option(BUILD_RUNTIME_NNFW_API_TEST "Build Runtime NNFW API Tests" ON)
option(BUILD_TFLITE_RUN "Build tflite-run" ON)
-option(BUILD_TFLITE_RUN_2_2_0 "Build tflite-run 2.2.0" OFF)
+option(BUILD_TFLITE_VANILLA_RUN "Build tflite-vanilla-run" OFF)
option(BUILD_TFLITE_BENCHMARK_MODEL "Build tflite benchmark model" OFF)
option(BUILD_NNAPI_TEST "Build nnapi_test" ON)
option(BUILD_NNPACKAGE_RUN "Build nnpackge_run" ON)
@@ -70,7 +70,7 @@ option(DOWNLOAD_BOOST "Download boost source" OFF)
option(DOWNLOAD_RUY "Download ruy source" ON)
option(BUILD_BOOST "Build boost source" OFF)
option(BUILD_TENSORFLOW_LITE "Build TensorFlow Lite from the downloaded source" ON)
-option(BUILD_TENSORFLOW_LITE_2_2_0 "Build TensorFlow Lite from the downloaded source" OFF)
+option(BUILD_TENSORFLOW_LITE_2_3_0 "Build TensorFlow Lite 2.3.0 from the downloaded source" OFF)
option(BUILD_GTEST "Download and build Google Test" ON)
option(BUILD_ARMCOMPUTE "Build ARM Compute from the downloaded source" ON)
option(BUILD_RUY "Build ruy library from the downloaded source" ON)
diff --git a/infra/nnfw/cmake/packages/EigenConfig.cmake b/infra/nnfw/cmake/packages/EigenConfig.cmake
index f37d653cf..e71830a16 100644
--- a/infra/nnfw/cmake/packages/EigenConfig.cmake
+++ b/infra/nnfw/cmake/packages/EigenConfig.cmake
@@ -1,5 +1,5 @@
function(_Eigen_import)
- nnas_find_package(TensorFlowEigenSource-2.3.0-rc0 QUIET)
+ nnas_find_package(TensorFlowEigenSource EXACT 2.3.0 QUIET)
if(NOT TensorFlowEigenSource_FOUND)
set(Eigen_FOUND FALSE PARENT_SCOPE)
diff --git a/infra/nnfw/cmake/packages/TensorFlowLite-2.2.0Config.cmake b/infra/nnfw/cmake/packages/TensorFlowLite-2.2.0Config.cmake
deleted file mode 100644
index e698235f4..000000000
--- a/infra/nnfw/cmake/packages/TensorFlowLite-2.2.0Config.cmake
+++ /dev/null
@@ -1,92 +0,0 @@
-if(BUILD_TENSORFLOW_LITE_2_2_0)
- macro(return_unless VAR)
- if(NOT ${VAR})
- message("${VAR} NOT TRUE")
- set(TensorFlowLite_2_2_0_FOUND PARENT_SCOPE)
- return()
- endif(NOT ${VAR})
- endmacro(return_unless)
-
- nnas_include(ExternalSourceTools)
- nnas_include(OptionTools)
-
- # Below urls come from https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/lite/tools/make/Makefile
-
- set(absl_url "https://github.com/abseil/abseil-cpp/archive/43ef2148c0936ebf7cb4be6b19927a9d9d145b8f.tar.gz")
- ExternalSource_Download("tflite220_Absl" ${absl_url})
- set(TFLite220AbslSource_DIR "${tflite220_Absl_SOURCE_DIR}")
- if (NOT TFLite220AbslSource_DIR STREQUAL "")
- set(TFLite220AbslSource_FOUND TRUE)
- endif()
- return_unless(TFLite220AbslSource_FOUND)
-
- set(eigen_url "https://gitlab.com/libeigen/eigen/-/archive/52a2fbbb008a47c5e3fb8ac1c65c2feecb0c511c/eigen-52a2fbbb008a47c5e3fb8ac1c65c2feecb0c511c.tar.gz")
- ExternalSource_Download("tflite220_Eigen" ${eigen_url})
- set(TFLite220EigenSource_DIR "${tflite220_Eigen_SOURCE_DIR}")
- if (NOT TFLite220EigenSource_DIR STREQUAL "")
- set(TFLite220EigenSource_FOUND TRUE)
- endif()
- return_unless(TFLite220EigenSource_FOUND)
-
- set(farmhash_url "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz")
- ExternalSource_Download("tflite220_Farmhash" ${farmhash_url})
- set(TFLite220FarmhashSource_DIR "${tflite220_Farmhash_SOURCE_DIR}")
- if (NOT TFLite220FarmhashSource_DIR STREQUAL "")
- set(TFLite220FarmhashSource_FOUND TRUE)
- endif()
- return_unless(TFLite220FarmhashSource_FOUND)
-
- set(fft2d_url "https://storage.googleapis.com/mirror.tensorflow.org/www.kurims.kyoto-u.ac.jp/~ooura/fft2d.tgz")
- ExternalSource_Download("tflite220_FFT2D" ${fft2d_url})
- set(TFLite220FFT2DSource_DIR "${tflite220_FFT2D_SOURCE_DIR}")
- if (NOT TFLite220FFT2DSource_DIR STREQUAL "")
- set(TFLite220FFT2DSource_FOUND TRUE)
- endif()
- return_unless(TFLite220FFT2DSource_FOUND)
-
- set(flatbuffers_url "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/flatbuffers/archive/v1.11.0.tar.gz")
- ExternalSource_Download("tflite220_FlatBuffers" ${flatbuffers_url})
- set(TFLite220FlatBuffersSource_DIR "${tflite220_FlatBuffers_SOURCE_DIR}")
- if (NOT TFLite220FlatBuffersSource_DIR STREQUAL "")
- set(TFLite220FlatBuffersSource_FOUND TRUE)
- endif()
- return_unless(TFLite220FlatBuffersSource_FOUND)
-
- set(fp16_url "https://github.com/Maratyszcza/FP16/archive/febbb1c163726b5db24bed55cc9dc42529068997.zip")
- ExternalSource_Download("tflite220_FP16" ${fp16_url})
- set(TFLite220FP16Source_DIR "${tflite220_FP16_SOURCE_DIR}")
- if (NOT TFLite220FP16Source_DIR STREQUAL "")
- set(TFLite220FP16Source_FOUND TRUE)
- endif()
- return_unless(TFLite220FP16Source_FOUND)
-
- set(gemmlowp_url "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/gemmlowp/archive/12fed0cd7cfcd9e169bf1925bc3a7a58725fdcc3.zip")
- ExternalSource_Download("tflite220_GEMMLowp" ${gemmlowp_url})
- set(TFLite220GEMMLowpSource_DIR "${tflite220_GEMMLowp_SOURCE_DIR}")
- if (NOT TFLite220GEMMLowpSource_DIR STREQUAL "")
- set(TFLite220GEMMLowpSource_FOUND TRUE)
- endif()
- return_unless(TFLite220GEMMLowpSource_FOUND)
-
- set(neon2sse_url "https://github.com/intel/ARM_NEON_2_x86_SSE/archive/master.zip")
- ExternalSource_Download("tflite220_NEON2SSE" ${neon2sse_url})
- set(TFLite220NEON2SSESource_DIR "${tflite220_NEON2SSE_SOURCE_DIR}")
- if (NOT TFLite220NEON2SSESource_DIR STREQUAL "")
- set(TFLite220NEON2SSESource_FOUND TRUE)
- endif()
- return_unless(TFLite220NEON2SSESource_FOUND)
-
- set(tensorflow_url "https://github.com/tensorflow/tensorflow/archive/v2.2.0.tar.gz")
- ExternalSource_Download("tflite220_TensorFlow" ${tensorflow_url})
- set(TFLite220TensorFlowSource_DIR "${tflite220_TensorFlow_SOURCE_DIR}")
- if (NOT TFLite220TensorFlowSource_DIR STREQUAL "")
- set(TFLite220TensorFlowSource_FOUND TRUE)
- endif()
- return_unless(TFLite220TensorFlowSource_FOUND)
-
- nnas_include(ExternalProjectTools)
- add_extdirectory("${CMAKE_CURRENT_LIST_DIR}/TensorFlowLite-2.2.0" tflite-2.2.0)
-
- set(TensorFlowLite_2_2_0_FOUND TRUE)
- return()
-endif()
diff --git a/infra/nnfw/cmake/packages/TensorFlowLite-2.2.0/CMakeLists.txt b/infra/nnfw/cmake/packages/TensorFlowLite-2.3.0/CMakeLists.txt
index 8e7f78eb1..20547b92d 100644
--- a/infra/nnfw/cmake/packages/TensorFlowLite-2.2.0/CMakeLists.txt
+++ b/infra/nnfw/cmake/packages/TensorFlowLite-2.3.0/CMakeLists.txt
@@ -1,8 +1,8 @@
-# Reference: https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/lite/tools/make/Makefile
+# Reference: https://github.com/tensorflow/tensorflow/blob/v2.3.0/tensorflow/lite/tools/make/Makefile
#
-# Tensorflow Lite library 2.2.0
+# Tensorflow Lite library 2.3.0
#
-set(TENSORFLOW_LITE_BASE ${TFLite220TensorFlowSource_DIR}/tensorflow/lite)
+set(TENSORFLOW_LITE_BASE ${TFLiteVanillaTensorFlowSource_DIR}/tensorflow/lite)
file(GLOB TFLITE_CORE_SRCS "${TENSORFLOW_LITE_BASE}/*.c"
"${TENSORFLOW_LITE_BASE}/*.cc"
@@ -18,8 +18,7 @@ file(GLOB TFLITE_API_SRCS "${TENSORFLOW_LITE_BASE}/core/api/*.c"
list(APPEND TFLITE_PROFILING_SRCS "${TENSORFLOW_LITE_BASE}/profiling/memory_info.cc")
list(APPEND TFLITE_PROFILING_SRCS "${TENSORFLOW_LITE_BASE}/profiling/time.cc")
-file(GLOB TFLITE_EXPERIMENTAL_SRCS "${TENSORFLOW_LITE_BASE}/experimental/resource/*.cc"
- "${TENSORFLOW_LITE_BASE}/experimental/ruy/*.cc")
+file(GLOB TFLITE_EXPERIMENTAL_SRCS "${TENSORFLOW_LITE_BASE}/experimental/resource/*.cc")
file(GLOB TFLITE_SPARSITY_SRCS "${TENSORFLOW_LITE_BASE}/tools/optimize/sparsity/*.cc")
@@ -32,24 +31,37 @@ list(APPEND TFLITE_SRCS ${TFLITE_EXPERIMENTAL_SRCS})
list(APPEND TFLITE_SRCS ${TFLITE_SPARSITY_SRCS})
# externals
-list(APPEND TFLITE_SRCS "${TFLite220FarmhashSource_DIR}/src/farmhash.cc")
-list(APPEND TFLITE_SRCS "${TFLite220FFT2DSource_DIR}/fftsg.c")
-list(APPEND TFLITE_SRCS "${TFLite220FFT2DSource_DIR}/fftsg2d.c")
-list(APPEND TFLITE_SRCS "${TFLite220FlatBuffersSource_DIR}/src/util.cpp")
+list(APPEND TFLITE_SRCS "${TFLiteVanillaFarmhashSource_DIR}/src/farmhash.cc")
+list(APPEND TFLITE_SRCS "${TFLiteVanillaFFT2DSource_DIR}/fftsg.c")
+list(APPEND TFLITE_SRCS "${TFLiteVanillaFFT2DSource_DIR}/fftsg2d.c")
+list(APPEND TFLITE_SRCS "${TFLiteVanillaFlatBuffersSource_DIR}/src/util.cpp")
# externals - absl
-file(GLOB_RECURSE ABSL_SRCS "${TFLite220AbslSource_DIR}/absl/*.cc")
-file(GLOB_RECURSE ABSL_EXCLS "${TFLite220AbslSource_DIR}/absl/*test*.cc"
- "${TFLite220AbslSource_DIR}/absl/*benchmark*.cc"
- "${TFLite220AbslSource_DIR}/absl/synchronization/*.cc"
- "${TFLite220AbslSource_DIR}/absl/debugging/*.cc"
- "${TFLite220AbslSource_DIR}/absl/hash/*.cc"
- "${TFLite220AbslSource_DIR}/absl/flags/*.cc")
+file(GLOB_RECURSE ABSL_SRCS "${TFLiteVanillaAbslSource_DIR}/absl/*.cc")
+file(GLOB_RECURSE ABSL_EXCLS "${TFLiteVanillaAbslSource_DIR}/absl/*test*.cc"
+ "${TFLiteVanillaAbslSource_DIR}/absl/*benchmark*.cc"
+ "${TFLiteVanillaAbslSource_DIR}/absl/synchronization/*.cc"
+ "${TFLiteVanillaAbslSource_DIR}/absl/debugging/*.cc"
+ "${TFLiteVanillaAbslSource_DIR}/absl/hash/*.cc"
+ "${TFLiteVanillaAbslSource_DIR}/absl/flags/*.cc"
+ "${TFLiteVanillaAbslSource_DIR}/absl/random/*.cc")
list(REMOVE_ITEM ABSL_SRCS ${ABSL_EXCLS})
list(APPEND TFLITE_SRCS ${ABSL_SRCS})
+# externals - ruy
+file(GLOB RUY_SRCS "${TFLiteVanillaRuySource_DIR}/ruy/*.cc")
+file(GLOB_RECURSE RUY_EXCLS "${TFLiteVanillaRuySource_DIR}/ruy/*test*.cc"
+ "${TFLiteVanillaRuySource_DIR}/ruy/*benchmark*.cc"
+ "${TFLiteVanillaRuySource_DIR}/ruy/*example*.cc")
+list(REMOVE_ITEM RUY_SRCS ${RUY_EXCLS})
+# Temporary fix for ruy compilation error.
+# TODO(b/158800055): Remove this hack once the ruy version is correctly bumped.
+list(REMOVE_ITEM RUY_SRCS "${TFLiteVanillaRuySource_DIR}/ruy/prepare_packed_matrices.cc")
+list(APPEND TFLITE_SRCS ${RUY_SRCS})
+
+
# Build with mmap? true
-# caution: v2.2.0's Makefile has wrong code on this part. This is fixed on master branch.
+# caution: v2.3.0's Makefile has wrong code on this part. This is fixed on master branch.
set(BUILD_WITH_MMAP TRUE)
if(${BUILD_WITH_MMAP})
list(REMOVE_ITEM TFLITE_SRCS "${TENSORFLOW_LITE_BASE}/mmap_allocation_disabled.cc")
@@ -86,25 +98,26 @@ file(GLOB_RECURSE TFLITE_EXCLS "${TENSORFLOW_LITE_BASE}/*test*.cc"
list(REMOVE_ITEM TFLITE_SRCS ${TFLITE_EXCLS})
# include headers
-list(APPEND TFLITE_INCLUDES "${TFLite220TensorFlowSource_DIR}")
-list(APPEND TFLITE_INCLUDES "${TFLite220EigenSource_DIR}")
-list(APPEND TFLITE_INCLUDES "${TFLite220AbslSource_DIR}")
-list(APPEND TFLITE_INCLUDES "${TFLite220GEMMLowpSource_DIR}")
-list(APPEND TFLITE_INCLUDES "${TFLite220NEON2SSESource_DIR}")
-list(APPEND TFLITE_INCLUDES "${TFLite220FarmhashSource_DIR}/src")
-list(APPEND TFLITE_INCLUDES "${TFLite220FlatBuffersSource_DIR}/include")
-list(APPEND TFLITE_INCLUDES "${TFLite220FP16Source_DIR}/include")
-
-add_library(tensorflow-lite-2.2.0 STATIC ${TFLITE_SRCS})
-target_include_directories(tensorflow-lite-2.2.0 SYSTEM PUBLIC ${TFLITE_INCLUDES})
-target_compile_definitions(tensorflow-lite-2.2.0 PUBLIC "GEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK -DTFLITE_WITH_RUY -DTFLITE_WITH_RUY_GEMV")
-set_property(TARGET tensorflow-lite-2.2.0 PROPERTY POSITION_INDEPENDENT_CODE ON)
-target_link_libraries(tensorflow-lite-2.2.0 eigen ${LIB_PTHREAD} dl)
-if(${BUILD_WITH_NNAPI})
- target_link_libraries(tensorflow-lite-2.2.0 rt)
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaTensorFlowSource_DIR}")
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaEigenSource_DIR}")
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaAbslSource_DIR}")
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaGEMMLowpSource_DIR}")
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaNEON2SSESource_DIR}")
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaFarmhashSource_DIR}/src")
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaFlatBuffersSource_DIR}/include")
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaFP16Source_DIR}/include")
+list(APPEND TFLITE_INCLUDES "${TFLiteVanillaRuySource_DIR}")
+
+add_library(tensorflow-lite-2.3.0 STATIC ${TFLITE_SRCS})
+target_include_directories(tensorflow-lite-2.3.0 SYSTEM PUBLIC ${TFLITE_INCLUDES})
+target_compile_definitions(tensorflow-lite-2.3.0 PUBLIC "GEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK -DTFLITE_WITH_RUY -DTFLITE_WITH_RUY_GEMV")
+set_property(TARGET tensorflow-lite-2.3.0 PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_link_libraries(tensorflow-lite-2.3.0 eigen ${LIB_PTHREAD} dl)
+if(NOT ANDROID AND ${BUILD_WITH_NNAPI})
+ target_link_libraries(tensorflow-lite-2.3.0 rt)
endif()
if(ANDROID)
- target_link_libraries(tensorflow-lite-2.2.0 log)
- target_include_directories(tensorflow-lite-2.2.0 PUBLIC "${NDK_DIR}/..")
+ target_link_libraries(tensorflow-lite-2.3.0 log)
+ target_include_directories(tensorflow-lite-2.3.0 PUBLIC "${NDK_DIR}/..")
endif()
diff --git a/infra/nnfw/cmake/packages/TensorFlowLite-2.3.0Config.cmake b/infra/nnfw/cmake/packages/TensorFlowLite-2.3.0Config.cmake
new file mode 100644
index 000000000..d00ca96a6
--- /dev/null
+++ b/infra/nnfw/cmake/packages/TensorFlowLite-2.3.0Config.cmake
@@ -0,0 +1,100 @@
+if(BUILD_TENSORFLOW_LITE_2_3_0)
+ macro(return_unless VAR)
+ if(NOT ${VAR})
+ message("${VAR} NOT TRUE")
+ set(TensorFlowLite_2_3_0_FOUND PARENT_SCOPE)
+ return()
+ endif(NOT ${VAR})
+ endmacro(return_unless)
+
+ nnas_include(ExternalSourceTools)
+ nnas_include(OptionTools)
+
+ # Below urls come from https://github.com/tensorflow/tensorflow/blob/v2.3.0/tensorflow/lite/tools/make/Makefile
+
+ set(absl_url "https://github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz")
+ ExternalSource_Download("TFLiteVanilla_Absl" ${absl_url})
+ set(TFLiteVanillaAbslSource_DIR "${TFLiteVanilla_Absl_SOURCE_DIR}")
+ if (NOT TFLiteVanillaAbslSource_DIR STREQUAL "")
+ set(TFLiteVanillaAbslSource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaAbslSource_FOUND)
+
+ set(eigen_url "https://gitlab.com/libeigen/eigen/-/archive/386d809bde475c65b7940f290efe80e6a05878c4/eigen-386d809bde475c65b7940f290efe80e6a05878c4.tar.gz")
+ ExternalSource_Download("TFLiteVanilla_Eigen" ${eigen_url})
+ set(TFLiteVanillaEigenSource_DIR "${TFLiteVanilla_Eigen_SOURCE_DIR}")
+ if (NOT TFLiteVanillaEigenSource_DIR STREQUAL "")
+ set(TFLiteVanillaEigenSource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaEigenSource_FOUND)
+
+ set(farmhash_url "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz")
+ ExternalSource_Download("TFLiteVanilla_Farmhash" ${farmhash_url})
+ set(TFLiteVanillaFarmhashSource_DIR "${TFLiteVanilla_Farmhash_SOURCE_DIR}")
+ if (NOT TFLiteVanillaFarmhashSource_DIR STREQUAL "")
+ set(TFLiteVanillaFarmhashSource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaFarmhashSource_FOUND)
+
+ set(fft2d_url "https://storage.googleapis.com/mirror.tensorflow.org/github.com/petewarden/OouraFFT/archive/v1.0.tar.gz")
+ ExternalSource_Download("TFLiteVanilla_FFT2D" ${fft2d_url})
+ set(TFLiteVanillaFFT2DSource_DIR "${TFLiteVanilla_FFT2D_SOURCE_DIR}")
+ if (NOT TFLiteVanillaFFT2DSource_DIR STREQUAL "")
+ set(TFLiteVanillaFFT2DSource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaFFT2DSource_FOUND)
+
+ set(flatbuffers_url "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/flatbuffers/archive/v1.12.0.tar.gz")
+ ExternalSource_Download("TFLiteVanilla_FlatBuffers" ${flatbuffers_url})
+ set(TFLiteVanillaFlatBuffersSource_DIR "${TFLiteVanilla_FlatBuffers_SOURCE_DIR}")
+ if (NOT TFLiteVanillaFlatBuffersSource_DIR STREQUAL "")
+ set(TFLiteVanillaFlatBuffersSource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaFlatBuffersSource_FOUND)
+
+ set(fp16_url "https://github.com/Maratyszcza/FP16/archive/4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip")
+ ExternalSource_Download("TFLiteVanilla_FP16" ${fp16_url})
+ set(TFLiteVanillaFP16Source_DIR "${TFLiteVanilla_FP16_SOURCE_DIR}")
+ if (NOT TFLiteVanillaFP16Source_DIR STREQUAL "")
+ set(TFLiteVanillaFP16Source_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaFP16Source_FOUND)
+
+ set(gemmlowp_url "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/gemmlowp/archive/fda83bdc38b118cc6b56753bd540caa49e570745.zip")
+ ExternalSource_Download("TFLiteVanilla_GEMMLowp" ${gemmlowp_url})
+ set(TFLiteVanillaGEMMLowpSource_DIR "${TFLiteVanilla_GEMMLowp_SOURCE_DIR}")
+ if (NOT TFLiteVanillaGEMMLowpSource_DIR STREQUAL "")
+ set(TFLiteVanillaGEMMLowpSource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaGEMMLowpSource_FOUND)
+
+ set(neon2sse_url "https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz")
+ ExternalSource_Download("TFLiteVanilla_NEON2SSE" ${neon2sse_url})
+ set(TFLiteVanillaNEON2SSESource_DIR "${TFLiteVanilla_NEON2SSE_SOURCE_DIR}")
+ if (NOT TFLiteVanillaNEON2SSESource_DIR STREQUAL "")
+ set(TFLiteVanillaNEON2SSESource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaNEON2SSESource_FOUND)
+
+ set(tensorflow_url "https://github.com/tensorflow/tensorflow/archive/v2.3.0.tar.gz")
+ ExternalSource_Download("TFLiteVanilla_TensorFlow" ${tensorflow_url})
+ set(TFLiteVanillaTensorFlowSource_DIR "${TFLiteVanilla_TensorFlow_SOURCE_DIR}")
+ if (NOT TFLiteVanillaTensorFlowSource_DIR STREQUAL "")
+ set(TFLiteVanillaTensorFlowSource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaTensorFlowSource_FOUND)
+
+ set(ruy_url "https://github.com/google/ruy/archive/34ea9f4993955fa1ff4eb58e504421806b7f2e8f.zip")
+ ExternalSource_Download("TFLiteVanilla_Ruy" ${ruy_url})
+ set(TFLiteVanillaRuySource_DIR "${TFLiteVanilla_Ruy_SOURCE_DIR}")
+ if (NOT TFLiteVanillaRuySource_DIR STREQUAL "")
+ set(TFLiteVanillaRuySource_FOUND TRUE)
+ endif()
+ return_unless(TFLiteVanillaRuySource_FOUND)
+
+ nnas_include(ExternalProjectTools)
+ add_extdirectory("${CMAKE_CURRENT_LIST_DIR}/TensorFlowLite-2.3.0" tflite-2.3.0)
+
+ set(TensorFlowLite_2_3_0_FOUND TRUE)
+ return()
+endif()