- TensorFlow Lite is TensorFlow's lightweight solution for mobile
and embedded devices. It enables low-latency inference of on-device
machine learning models with a small binary size.
- The tensorflow-lite v2.18 recipe in meta-arago currently supports,
* CPU delegate (with RUY enabled), XNNPACK delegate & ArmNN
via external delegate for ARMv8 based Cortex-A platforms.
* CPU delegate (with RUY enabled) & ArmNN via external delegate
for ARMv7 based Cortex-A platforms.
Signed-off-by: Chirag Shilwant <[email protected]>
---
...eLists-for-building-_pywrap_tensorfl.patch | 37 +++
...eLists-for-building-shared-object-li.patch | 61 +++++
...uild-issues-observed-in-TFlite-v2.18.patch | 36 +++
.../tensorflow-lite/tensorflow2-lite.pc.in | 6 +
.../tensorflow-lite/tensorflow-lite_2.18.0.bb | 232 ++++++++++++++++++
5 files changed, 372 insertions(+)
create mode 100644
meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0001-lite-Update-CMakeLists-for-building-_pywrap_tensorfl.patch
create mode 100644
meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0002-lite-Update-CMakeLists-for-building-shared-object-li.patch
create mode 100644
meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0003-CMakeLists-Fix-build-issues-observed-in-TFlite-v2.18.patch
create mode 100644
meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/tensorflow2-lite.pc.in
create mode 100644
meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb
diff --git
a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0001-lite-Update-CMakeLists-for-building-_pywrap_tensorfl.patch
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0001-lite-Update-CMakeLists-for-building-_pywrap_tensorfl.patch
new file mode 100644
index 00000000..e277beb3
--- /dev/null
+++
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0001-lite-Update-CMakeLists-for-building-_pywrap_tensorfl.patch
@@ -0,0 +1,37 @@
+From 050127548d7f28464cbe5dc9caa83c8023676d80 Mon Sep 17 00:00:00 2001
+From: Chirag Shilwant <[email protected]>
+Date: Thu, 13 Feb 2025 14:33:50 +0530
+Subject: [PATCH 1/3] lite: Update CMakeLists for building
+ _pywrap_tensorflow_interpreter_wrapper
+
+- Update the CMakeLists.txt file for TensorFlow Lite to include the paths for
+PYTHON, Numpy, and PYBIND11 headers.
+
+- This ensures that these headers are available during the build process,
+which is necessary for building the _pywrap_tensorflow_interpreter_wrapper
+target that relies on these dependencies.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Chirag Shilwant <[email protected]>
+---
+ tensorflow/lite/CMakeLists.txt | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/tensorflow/lite/CMakeLists.txt b/tensorflow/lite/CMakeLists.txt
+index bce9627fbd3..b7bb39869b5 100644
+--- a/tensorflow/lite/CMakeLists.txt
++++ b/tensorflow/lite/CMakeLists.txt
+@@ -810,6 +810,9 @@
set_target_properties(_pywrap_tensorflow_interpreter_wrapper PROPERTIES PREFIX "
+ target_include_directories(_pywrap_tensorflow_interpreter_wrapper
+ PUBLIC
+ ${TENSORFLOW_SOURCE_DIR}
++ ${PYTHON_TARGET_INCLUDE}
++ ${NUMPY_TARGET_INCLUDE}
++ ${PYBIND11_TARGET_INCLUDE}
+ )
+
+ target_link_libraries(_pywrap_tensorflow_interpreter_wrapper
+--
+2.34.1
+
diff --git
a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0002-lite-Update-CMakeLists-for-building-shared-object-li.patch
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0002-lite-Update-CMakeLists-for-building-shared-object-li.patch
new file mode 100644
index 00000000..dce229fd
--- /dev/null
+++
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0002-lite-Update-CMakeLists-for-building-shared-object-li.patch
@@ -0,0 +1,61 @@
+From 339b5a7e5f17a60df1e3d6d2ffe607786ce34978 Mon Sep 17 00:00:00 2001
+From: Chirag Shilwant <[email protected]>
+Date: Thu, 13 Feb 2025 14:38:01 +0530
+Subject: [PATCH 2/3] lite: Update CMakeLists for building shared object
+ library
+
+- When building TFLite with CMake, it builds static library
+(i.e. libtensorflow-lite.a) by default which isn't self-contained
+since all the transitive dependencies are not included [1]
+
+- As documented in [1], there's an update needed in CMake build steps
+inorder to generate a shared object library (i.e. libtensorflow-lite.so)
+
+- This patch adds schema_conversion_utils.cc to TFLite source files
+& updates CMakeLists.txt to build TFLite as a shared library. Additionally,
+it ensures that the properties are set correctly to manage the shared
+object version.
+
+[1]: https://ai.google.dev/edge/litert/build/cmake#step_5_build_litert
+
+Upstream-Status: Inappropriate [enable feature]
+
+Signed-off-by: Chirag Shilwant <[email protected]>
+---
+ tensorflow/lite/CMakeLists.txt | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/tensorflow/lite/CMakeLists.txt b/tensorflow/lite/CMakeLists.txt
+index b7bb39869b5..92b05e42446 100644
+--- a/tensorflow/lite/CMakeLists.txt
++++ b/tensorflow/lite/CMakeLists.txt
+@@ -671,6 +671,7 @@ set(_ALL_TFLITE_SRCS
+ ${TFLITE_SOURCE_DIR}/kernels/internal/utils/sparsity_format_converter.cc
+ ${TFLITE_SOURCE_DIR}/schema/conversion_metadata_generated.h
+ ${TFLITE_SOURCE_DIR}/schema/schema_generated.h
++ ${TFLITE_SOURCE_DIR}/schema/schema_conversion_utils.h
+ ${TF_SOURCE_DIR}/compiler/mlir/lite/schema/schema_utils.cc
+ ${TF_SOURCE_DIR}/compiler/mlir/lite/schema/schema_generated.h
+ ${TF_SOURCE_DIR}/compiler/mlir/lite/schema/conversion_metadata_generated.h
+@@ -697,7 +698,7 @@ else()
+ list(FILTER _ALL_TFLITE_SRCS EXCLUDE REGEX ".*mmap_allocation\\.cc$")
+ endif()
+
+-add_library(tensorflow-lite
++add_library(tensorflow-lite SHARED EXCLUDE_FROM_ALL
+ ${_ALL_TFLITE_SRCS}
+ )
+ set(_ALL_TFLITE_HDRS ${_ALL_TFLITE_SRCS})
+@@ -773,6 +774,9 @@ if(TFLITE_ENABLE_INSTALL)
+ )
+ endif()
+
++# Manage version for shared object (dynamic) library
++set_target_properties(tensorflow-lite PROPERTIES VERSION
"${TFLITE_VERSION_MAJOR}")
++
+ # The kernel tests.
+ if(TFLITE_KERNEL_TEST)
+ enable_testing()
+--
+2.34.1
+
diff --git
a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0003-CMakeLists-Fix-build-issues-observed-in-TFlite-v2.18.patch
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0003-CMakeLists-Fix-build-issues-observed-in-TFlite-v2.18.patch
new file mode 100644
index 00000000..0e21b254
--- /dev/null
+++
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/0003-CMakeLists-Fix-build-issues-observed-in-TFlite-v2.18.patch
@@ -0,0 +1,36 @@
+From 577192caa67660f857f2869896d01db3611b4128 Mon Sep 17 00:00:00 2001
+From: Chirag Shilwant <[email protected]>
+Date: Thu, 13 Feb 2025 14:45:46 +0530
+Subject: [PATCH 3/3] CMakeLists: Fix build issues observed in TFlite v2.18
+
+- Improve regular expression for filtering neon and sse
+related sources. The improved expression avoids missing files
+in case the absolute path contains the terms neon or sse.
+
+- Fixes [1]
+
+[1]: https://github.com/tensorflow/tensorflow/issues/70730
+
+Upstream-Status: Backport from master
+
+Signed-off-by: Chirag Shilwant <[email protected]>
+---
+ tensorflow/lite/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tensorflow/lite/CMakeLists.txt b/tensorflow/lite/CMakeLists.txt
+index 92b05e42446..737f754621f 100644
+--- a/tensorflow/lite/CMakeLists.txt
++++ b/tensorflow/lite/CMakeLists.txt
+@@ -605,7 +605,7 @@
populate_tflite_source_vars("kernels/internal/reference/sparse_ops"
+ )
+ populate_tflite_source_vars("kernels/internal/optimized/4bit"
+ TFLITE_KERNEL_INTERNAL_OPT_4BIT_SRCS
+- FILTER "(.*neon.*|.*sse.*)\\.(cc|h)"
++ FILTER "(.*neon_.*|.*sse_.*)\\.(cc|h)"
+ )
+ set(TFLITE_PROFILER_SRCS
+ ${TFLITE_SOURCE_DIR}/profiling/platform_profiler.cc
+--
+2.34.1
+
diff --git
a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/tensorflow2-lite.pc.in
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/tensorflow2-lite.pc.in
new file mode 100644
index 00000000..8c5bf2e0
--- /dev/null
+++
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite/tensorflow2-lite.pc.in
@@ -0,0 +1,6 @@
+Name: tensorflow lite c++ shared library
+Description: tensorflow lite c++ shared library
+Version: @version@
+Requires:
+Libs: -L@libdir@ -ltensorflowlite -lrt
+Cflags: -I@includedir@
diff --git
a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb
new file mode 100644
index 00000000..a20c090a
--- /dev/null
+++
b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb
@@ -0,0 +1,232 @@
+DESCRIPTION = "TensorFlow Lite is an open source deep learning framework for \
+on-device inference."
+AUTHOR = "Google Inc. and Yuan Tang"
+SUMMARY = "TensorFlow Lite C++ Library, Python interpreter & Benchmark Model"
+HOMEPAGE = "https://www.tensorflow.org/lite"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4158a261ca7f2525513e31ba9c50ae98"
+
+# Get major of the PV variable
+MAJOR = "${@d.getVar('PV').split('.')[0]}"
+
+SRC_URI = " \
+ git://github.com/tensorflow/tensorflow.git;protocol=https;branch=r2.18 \
+ file://0001-lite-Update-CMakeLists-for-building-_pywrap_tensorfl.patch \
+ file://0002-lite-Update-CMakeLists-for-building-shared-object-li.patch \
+ file://0003-CMakeLists-Fix-build-issues-observed-in-TFlite-v2.18.patch \
+ file://tensorflow2-lite.pc.in \
+"
+
+SRC_URI += " \
+
git://github.com/abseil/abseil-cpp.git;protocol=https;branch=lts_2023_08_02;name=abseil-cpp;destsuffix=${S}/external/abseil-cpp
\
+
git://gitlab.com/libeigen/eigen.git;protocol=https;branch=master;name=eigen;destsuffix=${S}/external/eigen
\
+
git://github.com/google/farmhash.git;protocol=https;branch=master;name=farmhash;destsuffix=${S}/external/farmhash
\
+
git://github.com/petewarden/OouraFFT.git;protocol=https;branch=master;name=fft2d;destsuffix=${S}/external/fft2d
\
+
git://github.com/google/gemmlowp.git;branch=master;protocol=https;name=gemmlowp;destsuffix=${S}/external/gemmlowp
\
+
git://github.com/pytorch/cpuinfo.git;branch=main;protocol=https;name=cpuinfo;destsuffix=${S}/external/cpuinfo
\
+
git://github.com/jax-ml/ml_dtypes.git;branch=main;protocol=https;name=ml_dtypes;destsuffix=${S}/external/ml_dtypes
\
+
git://github.com/google/ruy.git;branch=master;protocol=https;name=ruy;destsuffix=${S}/external/ruy
\
+
git://github.com/google/flatbuffers;branch=master;protocol=https;name=flatbuffers;destsuffix=${S}/external/flatbuffers
\
+
git://github.com/Maratyszcza/pthreadpool.git;branch=master;protocol=https;name=pthreadpool-source;destsuffix=${S}/external/pthreadpool-source
\
+
git://github.com/google/XNNPACK.git;branch=master;protocol=https;name=xnnpack;destsuffix=${S}/external/xnnpack
\
+
git://github.com/Maratyszcza/FXdiv.git;branch=master;protocol=https;name=FXdiv-source;destsuffix=${S}/external/FXdiv-source
\
+
git://github.com/Maratyszcza/FP16.git;branch=master;protocol=https;name=FP16-source;destsuffix=${S}/external/FP16-source
\
+
git://git.gitlab.arm.com/kleidi/kleidiai.git;branch=main;protocol=https;name=kleidiai;destsuffix=${S}/external/kleidiai
\
+
git://github.com/Maratyszcza/psimd.git;branch=master;protocol=https;name=psimd;destsuffix=${S}/external/psimd
\
+
git://github.com/protocolbuffers/protobuf.git;branch=25.x;protocol=https;name=protobuf;destsuffix=${S}/external/protobuf
\
+"
+
+SRCREV_FORMAT = "default"
+
+# Matches v${PV} tag
+SRCREV = "6550e4bd80223cdb8be6c3afd1f81e86a4d433c3"
+SRCREV_abseil-cpp = "fb3621f4f897824c0dbe0615fa94543df6192f30"
+SRCREV_eigen = "33d0937c6bdf5ec999939fb17f2a553183d14a74"
+SRCREV_farmhash = "0d859a811870d10f53a594927d0d0b97573ad06d"
+SRCREV_fft2d = "c6fd2dd6d21397baa6653139d31d84540d5449a2"
+SRCREV_gemmlowp = "16e8662c34917be0065110bfcd9cc27d30f52fdf"
+SRCREV_cpuinfo = "b73ae6ce38d5dd0b7fe46dbe0a4b5f4bab91c7ea"
+SRCREV_ml_dtypes = "24084d9ed2c3d45bf83b7a9bff833aa185bf9172"
+SRCREV_ruy = "3286a34cc8de6149ac6844107dfdffac91531e72"
+SRCREV_flatbuffers = "e6463926479bd6b330cbcf673f7e917803fd5831"
+SRCREV_pthreadpool-source = "4fe0e1e183925bf8cfa6aae24237e724a96479b8"
+SRCREV_xnnpack = "6b83f69d4938da4dc9ad63c00bd13e9695659a51"
+SRCREV_FXdiv-source = "63058eff77e11aa15bf531df5dd34395ec3017c8"
+SRCREV_FP16-source = "0a92994d729ff76a58f692d3028ca1b64b145d91"
+SRCREV_kleidiai = "cddf991af5de49fd34949fa39690e4e906e04074"
+SRCREV_psimd = "072586a71b55b7f8c584153d223e95687148a900"
+SRCREV_protobuf = "4a2aef570deb2bfb8927426558701e8bfc26f2a4"
+
+S = "${WORKDIR}/git"
+
+inherit setuptools3 cmake
+
+DEPENDS = " \
+ flatbuffers-native \
+ python3-numpy-native \
+ python3-pybind11-native \
+ python3-numpy \
+ python3 \
+ gzip-native \
+ protobuf-native \
+ python3-pybind11 \
+"
+
+# Set building environment variables
+TENSORFLOW_TARGET="linux"
+TENSORFLOW_TARGET_ARCH:aarch64="aarch64"
+TENSORFLOW_TARGET_ARCH:arm="armv7"
+
+PACKAGECONFIG ??= "xnnpack ruy"
+PACKAGECONFIG[xnnpack] = "-DTFLITE_ENABLE_XNNPACK=ON,
-DTFLITE_ENABLE_XNNPACK=OFF"
+PACKAGECONFIG[ruy] = "-DTFLITE_ENABLE_RUY=ON, -DTFLITE_ENABLE_RUY=OFF"
+
+# XNNPACK is not supported in Linux armv7-a
[https://github.com/tensorflow/tensorflow/issues/64358]
+# Hence, turning it off
+PACKAGECONFIG:remove:arm = "xnnpack"
+
+OECMAKE_SOURCEPATH = "${S}/tensorflow/lite"
+
+# The -O3 flag enables high-level optimizations for performance
+# and the -DNDEBUG flag disables debugging code, such as assertions
+# to further optimize the build for production use.
+# Hence, activate -O3 optimization and disable debug symbols.
+OECMAKE_C_FLAGS_RELEASE = "-O3 -DNDEBUG"
+OECMAKE_CXX_FLAGS_RELEASE = "-O3 -DNDEBUG -flax-vector-conversions"
+
+OECMAKE_C_FLAGS_RELEASE:append:arm = " -march=armv7-a -mfpu=neon"
+OECMAKE_CXX_FLAGS_RELEASE:append:arm = " -march=armv7-a -mfpu=neon"
+
+do_generate_toolchain_file:append:arm() {
+ # Even if we set TENSORFLOW_TARGET_ARCH:arm as armv7, the TFLite CMake
+ # build system still uses CMAKE_SYSTEM_PROCESSOR as arm in toolchain.cmake
file
+ # which leads to build failures. Hence, change it to armv7.
+ sed -i 's:CMAKE_SYSTEM_PROCESSOR arm:CMAKE_SYSTEM_PROCESSOR armv7:g'
${WORKDIR}/toolchain.cmake
+}
+
+# Build tensorflow-lite.so library, _pywrap_tensorflow_interpreter_wrapper.so
library and the benchmark_model application
+OECMAKE_TARGET_COMPILE = "tensorflow-lite benchmark_model
_pywrap_tensorflow_interpreter_wrapper"
+
+EXTRA_OECMAKE:append = " \
+ -DFETCHCONTENT_FULLY_DISCONNECTED=ON \
+ -DCMAKE_SYSTEM_NAME=${TENSORFLOW_TARGET} \
+ -DCMAKE_SYSTEM_PROCESSOR=${TENSORFLOW_TARGET_ARCH} \
+ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
+ -DPYTHON_TARGET_INCLUDE=${RECIPE_SYSROOT}${includedir}/${PYTHON_DIR} \
+
-DNUMPY_TARGET_INCLUDE=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/numpy/core/include
\
+
-DPYBIND11_TARGET_INCLUDE=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/pybind11/include
\
+ -DTFLITE_VERSION_MAJOR=${MAJOR} \
+ -DTFLITE_HOST_TOOLS_DIR=${STAGING_BINDIR_NATIVE} \
+ -DPTHREADPOOL_SOURCE_DIR=${S}/external/pthreadpool-source \
+ -DFXDIV_SOURCE_DIR=${S}/external/FXdiv-source \
+ -DFP16_SOURCE_DIR=${S}/external/FP16-source \
+ -DCPUINFO_SOURCE_DIR=${S}/external/cpuinfo \
+ -DKLEIDIAI_SOURCE_DIR=${S}/external/kleidiai \
+ -DPSIMD_SOURCE_DIR=${S}/external/psimd \
+ --compile-no-warning-as-error \
+ --log-level=VERBOSE \
+"
+
+do_configure:prepend() {
+ for i in abseil-cpp cpuinfo eigen farmhash fft2d flatbuffers FP16-source
FXdiv-source gemmlowp kleidiai ml_dtypes psimd protobuf pthreadpool-source ruy
xnnpack; do
+ cp -ra ${S}/external/$i ${B}/$i
+ done
+
+ # There is no Fortran compiler in the toolchain, but bitbake sets this
variable anyway with unavailable
+ # binary & it leads to "CMake Error: Could not find compiler set in
environment variable FC:"
+ unset FC
+}
+
+SETUPTOOLS_SETUP_PATH = "${B}"
+
+do_compile:append() {
+ # Build the python wheel (procedure extract form the
build_pip_package_with_cmake.sh)
+ BUILD_DIR=${B}
+ TENSORFLOW_DIR=${S}
+ TENSORFLOW_LITE_DIR="${TENSORFLOW_DIR}/tensorflow/lite"
+ TENSORFLOW_VERSION=$(grep "_VERSION = "
"${TENSORFLOW_DIR}/tensorflow/tools/pip_package/setup.py" | cut -d= -f2 | sed
"s/[ '-]//g")
+ mkdir -p "${B}/tflite_runtime"
+ cp -r "${TENSORFLOW_LITE_DIR}/tools/pip_package/debian" \
+ "${TENSORFLOW_LITE_DIR}/tools/pip_package/MANIFEST.in" \
+ "${B}"
+ cp -r "${TENSORFLOW_LITE_DIR}/python/interpreter_wrapper" "${B}"
+ cp "${TENSORFLOW_LITE_DIR}/tools/pip_package/setup_with_binary.py"
"${B}/setup.py"
+ cp "${TENSORFLOW_LITE_DIR}/python/interpreter.py" \
+ "${TENSORFLOW_LITE_DIR}/python/metrics/metrics_interface.py" \
+ "${TENSORFLOW_LITE_DIR}/python/metrics/metrics_portable.py" \
+ "${B}/tflite_runtime"
+ echo "__version__ = '${TENSORFLOW_VERSION}'" >>
"${BUILD_DIR}/tflite_runtime/__init__.py"
+ echo "__git_version__ = '$(git -C "${TENSORFLOW_DIR}" describe)'" >>
"${BUILD_DIR}/tflite_runtime/__init__.py"
+
+ export PACKAGE_VERSION="${TENSORFLOW_VERSION}"
+ export PROJECT_NAME="tflite_runtime"
+ cp "${B}/_pywrap_tensorflow_interpreter_wrapper.so" "tflite_runtime"
+
+ setuptools3_do_compile
+}
+
+do_install() {
+ # Install tensorflow-lite dynamic library
+ install -d ${D}${libdir}
+ install -m 0644 ${B}/libtensorflow-lite.so.${MAJOR}
${D}${libdir}/libtensorflow-lite.so.${PV}
+
+ ln -sf libtensorflow-lite.so.${PV}
${D}${libdir}/libtensorflow-lite.so.${MAJOR}
+ ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so
+
+ # armnn expects the the dynamic library of tensorflow lite to be named as
"libtensorflowlite.so"
+ # Eg -
https://github.com/ARM-software/armnn/blob/branches/armnn_24_11/delegate/cmake/Modules/FindTfLite.cmake#L19
+ # Hence, create a symbolic link to handle the same
+ ln -snf libtensorflow-lite.so ${D}${libdir}/libtensorflowlite.so
+
+ # Install benchmark_model
+ install -d ${D}/opt/${PN}/tools/
+ install -m 0755 ${B}/tools/benchmark/benchmark_model ${D}/opt/${PN}/tools/
+
+ # Install header files
+ install -d ${D}${includedir}/tensorflow/
+ cd ${S}/tensorflow/
+ cp --parents $(find ./lite -name "*.h*" -not -path "*cmake_build/*")
${D}${includedir}/tensorflow
+ cp --parents $(find ./compiler/mlir/lite -name "*.h*" -not -path
"*cmake_build/*") ${D}${includedir}/tensorflow
+ cd ${B}
+ cp --parents $(find . -name "*.h*") ${D}${includedir}/tensorflow/lite
+
+ # Install TFlite python3 interpreter
+ install -d ${D}${PYTHON_SITEPACKAGES_DIR}/tflite_runtime
+ install -d ${D}${PYTHON_SITEPACKAGES_DIR}/tflite_runtime.egg-info
+ install -m 0755 ${B}/tflite_runtime/*
${D}${PYTHON_SITEPACKAGES_DIR}/tflite_runtime
+ install -m 0755 ${B}/tflite_runtime.egg-info/*
${D}${PYTHON_SITEPACKAGES_DIR}/tflite_runtime.egg-info
+
+ # Install pkgconfig file required for NNstreamer build
+ install -d ${D}${libdir}/pkgconfig
+ install -m 0644 ${WORKDIR}/tensorflow2-lite.pc.in
${D}${libdir}/pkgconfig/tensorflow2-lite.pc
+ sed -i 's:@version@:${PV}:g
+ s:@libdir@:${libdir}:g
+ s:@includedir@:${includedir}:g' \
+ ${D}${libdir}/pkgconfig/tensorflow2-lite.pc
+}
+
+PACKAGES += "${PN}-tools python3-${PN}"
+
+RDEPENDS:${PN} += " \
+ ${PN}-tools \
+ python3-${PN} \
+"
+
+FILES:${PN} = " \
+ ${libdir}/lib*.so* \
+ ${libdir}/pkgconfig/* \
+"
+
+FILES:${PN}-tools = " \
+ /opt/* \
+"
+
+FILES:python3-${PN} = " \
+ ${PYTHON_SITEPACKAGES_DIR}/tflite_runtime \
+ ${PYTHON_SITEPACKAGES_DIR}/tflite_runtime.egg-info \
+"
+
+RDEPENDS:python3-${PN} += " python3-ctypes python3-numpy "
+
+PROVIDES += "python3-${PN}"
--
2.34.1
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#15894):
https://lists.yoctoproject.org/g/meta-arago/message/15894
Mute This Topic: https://lists.yoctoproject.org/mt/111317744/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-