Allow tensorflow-lite to be build for both aarch64 and x86-64

This commit is contained in:
j1nx 2023-04-25 13:16:50 +02:00
parent 24bea768f7
commit cb23c45f92
36 changed files with 371 additions and 196 deletions

View File

@ -23,7 +23,7 @@ $(TARGETS_CONFIG): %-config:
$(TARGETS): %: $(RELEASE_DIR) %-config
@echo "build $@"
$(MAKE) -C $(BUILDROOT) BR2_EXTERNAL=../$(BUILDROOT_EXTERNAL) 2>&1 | tee logs/buildroot_$@_output.txt
rsync -ah --progress $(BUILDROOT)/output/images/sdcard.img $(RELEASE_DIR)/OpenVoiceOS_$@.img
rsync -ah --progress $(BUILDROOT)/output/images/disk.img $(RELEASE_DIR)/OpenVoiceOS_$@.img
xz -3 -T0 -v -f $(RELEASE_DIR)/OpenVoiceOS_$@.img
# Do not clean when building for one target

View File

@ -98,7 +98,6 @@ endmenu
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/librem/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/lottie-qml/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ncpamixer/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/neon2sse/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/opencl_headers/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/openfec/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/openfst/Config.in"

View File

@ -339,6 +339,7 @@ BR2_PACKAGE_PYTHON_FLASK_JSONRPC=y
BR2_PACKAGE_PYTHON_FLASK_LOGIN=y
BR2_PACKAGE_PYTHON_FLASK_SQLALCHEMY=y
BR2_PACKAGE_PYTHON_FLATBUFFERS=y
BR2_PACKAGE_PYTHON_GREENLET=y
BR2_PACKAGE_PYTHON_HUMANIZE=y
BR2_PACKAGE_PYTHON_JSON_SCHEMA_VALIDATOR=y
BR2_PACKAGE_PYTHON_JSONMODELS=y
@ -546,6 +547,7 @@ BR2_PACKAGE_PA_VOLUME=y
BR2_PACKAGE_PICOTTS=y
BR2_PACKAGE_SNAPCAST=y
BR2_PACKAGE_SNAPCAST_SERVER=y
BR2_PACKAGE_TENSORFLOW_LITE=y
BR2_PACKAGE_PYTHON_ADAPT_PARSER=y
BR2_PACKAGE_PYTHON_ASTRAL=y
BR2_PACKAGE_PYTHON_AUDIO_METADATA=y

View File

@ -0,0 +1,40 @@
From 66dbf4fbe202318860caeab3b1ef9c2fe70e2c4c Mon Sep 17 00:00:00 2001
From: James Hilliard <james.hilliard1@gmail.com>
Date: Sun, 29 Jan 2023 16:55:08 -0700
Subject: [PATCH] Enable CXX only when needed for tests/benchmarks
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
[Upstream status:
https://github.com/pytorch/cpuinfo/pull/133]
---
CMakeLists.txt | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9f4d1d1..9e1c153 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR)
# ---[ Setup project
PROJECT(
cpuinfo
- LANGUAGES C CXX
+ LANGUAGES C
)
# ---[ Options.
@@ -103,6 +103,12 @@ ELSEIF(NOT CMAKE_SYSTEM_NAME MATCHES "^(Windows|WindowsStore|CYGWIN|MSYS|Darwin|
ENDIF()
ENDIF()
+IF(CPUINFO_SUPPORTED_PLATFORM)
+ IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS OR CPUINFO_BUILD_BENCHMARKS)
+ ENABLE_LANGUAGE(CXX)
+ ENDIF()
+ENDIF()
+
# ---[ Download deps
SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
CACHE PATH "Confu-style dependencies source directory")
--
2.34.1

View File

@ -1,8 +1,17 @@
config BR2_PACKAGE_CPUINFO_ARCH_SUPPORTS
bool
default y if BR2_aarch64
default y if BR2_arm
default y if BR2_i386
default y if BR2_x86_64
config BR2_PACKAGE_CPUINFO
bool "cpuinfo"
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_PACKAGE_CPUINFO_ARCH_SUPPORTS
depends on BR2_TOOLCHAIN_HAS_THREADS
help
cpuinfo is a library to detect essential for performance
optimization information about host CPU.
CPU INFOrmation library, cpuinfo is a library to detect
essential for performance optimization information about
host CPU.
https://github.com/pytorch/cpuinfo

View File

@ -1,4 +1,4 @@
# Locally calculated
sha256 0936848904943381b2c01321101614776e43d583840ee0f3ceeea1e3fb7405f7 cpuinfo-de2fa78ebb431db98489e78603e4f77c1f6c5c57.tar.gz
sha256 cf243e7ac07cd5e2ac58dcb29f8a9047b7887452212aead2ddf1ceda45cc66dd cpuinfo-eb4a6674bfe9cf91b63b9817412ae5f6862c8432.tar.gz
# License files, locally calculated
sha256 8e7e60636c3aa0cb03571a1a841ce5697f9551ff92b3c426c2561613d15ade70 LICENSE

View File

@ -4,15 +4,16 @@
#
################################################################################
CPUINFO_VERSION = de2fa78ebb431db98489e78603e4f77c1f6c5c57
CPUINFO_VERSION = eb4a6674bfe9cf91b63b9817412ae5f6862c8432
CPUINFO_SITE = $(call github,pytorch,cpuinfo,$(CPUINFO_VERSION))
CPUINFO_LICENSE = BSD-2-Clause
CPUINFO_LICENSE_FILES = LICENSE
CPUINFO_INSTALL_STAGING = YES
CPUINFO_SUPPORTS_IN_SOURCE_BUILD = NO
CPUINFO_CONF_OPTS = -DCPUINFO_BUILD_UNIT_TESTS=OFF \
-DCPUINFO_BUILD_MOCK_TESTS=OFF \
-DCPUINFO_BUILD_BENCHMARKS=OFF
CPUINFO_CONF_OPTS = \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCPUINFO_LIBRARY_TYPE:STRING=shared \
-DCPUINFO_BUILD_UNIT_TESTS=OFF \
-DCPUINFO_BUILD_MOCK_TESTS=OFF \
-DCPUINFO_BUILD_BENCHMARKS=OFF
$(eval $(cmake-package))

View File

@ -1,7 +1,12 @@
config BR2_PACKAGE_FARMHASH
bool "farmhash"
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
help
FarmHash, a family of hash functions.
https://github.com/google/farmhash
comment "farmhash needs a toolchain w/ C++11"
depends on !BR2_INSTALL_LIBSTDCPP || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

View File

@ -0,0 +1,48 @@
From eba14b5277ed8f155eb333f4bbe9f99366e3dece Mon Sep 17 00:00:00 2001
From: James Hilliard <james.hilliard1@gmail.com>
Date: Sun, 29 Jan 2023 21:43:50 -0700
Subject: [PATCH] CMake: don't enable CXX unless building tests/benchmarks
We only need CXX support when building tests/benchmarks.
Fixes:
CMake Error at CMakeLists.txt:6 (PROJECT):
No CMAKE_CXX_COMPILER could be found.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
[Upstream status:
https://github.com/Maratyszcza/FP16/pull/22]
---
CMakeLists.txt | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5e7d127..8028c07 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,13 +3,17 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
INCLUDE(GNUInstallDirs)
# ---[ Project
-PROJECT(FP16 C CXX)
+PROJECT(FP16 C)
# ---[ Options.
OPTION(FP16_BUILD_TESTS "Build FP16 unit tests" ON)
OPTION(FP16_BUILD_BENCHMARKS "Build FP16 micro-benchmarks" ON)
# ---[ CMake options
+IF(FP16_BUILD_TESTS OR FP16_BUILD_BENCHMARKS)
+ ENABLE_LANGUAGE(CXX)
+ENDIF()
+
IF(FP16_BUILD_TESTS)
ENABLE_TESTING()
ENDIF()
--
2.34.1

View File

@ -1 +1,4 @@
# Locally calculated
sha256 a91f4770ff9c39f4d72e339c379f566b3bbb359fa66122d85fc0bae3dde7abc7 fp16-0a92994d729ff76a58f692d3028ca1b64b145d91.tar.gz
# License files, locally calculated
sha256 17e4f539024be2749ee729d1e2f01d24cef12ece8c9bf18e91a4349be29c80bf LICENSE

View File

@ -6,18 +6,15 @@
FP16_VERSION = 0a92994d729ff76a58f692d3028ca1b64b145d91
FP16_SITE = $(call github,Maratyszcza,FP16,$(FP16_VERSION))
FP16_LICENSE = BSD-2-Clause
FP16_LICENSE = MIT
FP16_LICENSE_FILES = LICENSE
FP16_SUPPORTS_IN_SOURCE_BUILD = NO
FP16_DEPENDENCIES = psimd
FP16_CONF_OPTS = -DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
-DFP16_BUILD_TESTS=OFF \
-DFP16_BUILD_BENCHMARKS=OFF
FP16_INSTALL_STAGING = YES
# Only installs a header
FP16_INSTALL_TARGET = NO
FP16_DEPENDENCIES = psimd
FP16_CONF_OPTS = \
-DFP16_BUILD_TESTS=OFF \
-DFP16_BUILD_BENCHMARKS=OFF \
-DPSIMD_SOURCE_DIR="$(PSIMD_DIR)"
$(eval $(cmake-package))

View File

@ -1,7 +1,12 @@
config BR2_PACKAGE_GEMMLOWP
bool "gemmlowp"
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
help
Low-precision matrix multiplication.
https://github.com/google/gemmlowp
comment "gemmlowp needs a toolchain w/ C++11"
depends on !BR2_INSTALL_LIBSTDCPP || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

View File

@ -9,6 +9,7 @@ GEMMLOWP_SITE = $(call github,google,gemmlowp,$(GEMMLOWP_VERSION))
GEMMLOWP_LICENSE = Apache-2.0
GEMMLOWP_LICENSE_FILES = LICENSE
GEMMLOWP_INSTALL_STAGING = YES
# Only installs a header
GEMMLOWP_INSTALL_TARGET = NO
GEMMLOWP_SUBDIR = contrib

View File

@ -1,6 +0,0 @@
config BR2_PACKAGE_NEON2SSE
bool "neon2sse"
help
NEON_2_SSE.h file is intended to simplify ARM->IA32 porting.
https://github.com/intel/ARM_NEON_2_x86_SSE

View File

@ -1,4 +0,0 @@
# Locally calculated
sha256 019fbc7ec25860070a1d90e12686fc160cfb33e22aa063c80f52b363f1361e9d neon2sse-a15b489e1222b2087007546b4912e21293ea86ff.tar.gz
# License files, locally calculated
sha256 7022f51b439a5915e933ecc270c83e24ca0cb2cceeb08b0132dcd4dbb03ed2dc LICENSE

View File

@ -1,16 +0,0 @@
################################################################################
#
# neon2see
#
################################################################################
NEON2SSE_VERSION = a15b489e1222b2087007546b4912e21293ea86ff
NEON2SSE_SITE = $(call github,intel,arm_neon_2_x86_sse,$(NEON2SSE_VERSION))
NEON2SSE_LICENSE = BSD-2-Clause
NEON2SSE_LICENSE_FILES = LICENSE
NEON2SSE_INSTALL_STAGING = YES
NEON2SSE_INSTALL_TARGET = NO
$(eval $(cmake-package))

View File

@ -1 +0,0 @@
sha256 x fp16-0a92994d729ff76a58f692d3028ca1b64b145d91.tar.gz

View File

@ -0,0 +1,4 @@
# Locally calculated
sha256 f6c4dab91ae9a03b3019e7cab0572743afd0e1b6e75b97fcca50259c737c924e psimd-072586a71b55b7f8c584153d223e95687148a900.tar.gz
# License files, locally calculated
sha256 984ce1e0b8ee89d234e28b960381f240e03a07a8031f35012f9c3256f56964e2 LICENSE

View File

@ -6,12 +6,10 @@
PSIMD_VERSION = 072586a71b55b7f8c584153d223e95687148a900
PSIMD_SITE = $(call github,Maratyszcza,psimd,$(PSIMD_VERSION))
PSIMD_LICENSE = BSD-2-Clause
PSIMD_LICENSE = MIT
PSIMD_LICENSE_FILES = LICENSE
PSIMD_SUPPORTS_IN_SOURCE_BUILD = NO
PSIMD_INSTALL_STAGING = YES
# Only installs a header
PSIMD_INSTALL_TARGET = NO
$(eval $(cmake-package))

View File

@ -1 +1,4 @@
sha256 b4ad5741bec475b695afe90f94bdb5b8e3d23197e9dd144a7d3230b6e5f5eb56 pthreadpool-545ebe9f225aec6dca49109516fac02e973a3de2.tar.gz
# Locally calculated
sha256 6b0018ce7c926b718ed3ecbed1e48c8a083df60529b33ef2c7232260d3c32f61 pthreadpool-edeb5d6b967bef092ff195ab40e216fa5ac11f61.tar.gz
# License files, locally calculated
sha256 57814a606b4d0fb087d9a534919084b6c11b58a4174cb5a4aef200187780dc3a LICENSE

View File

@ -4,20 +4,30 @@
#
################################################################################
PTHREADPOOL_VERSION = 545ebe9f225aec6dca49109516fac02e973a3de2
PTHREADPOOL_VERSION = edeb5d6b967bef092ff195ab40e216fa5ac11f61
PTHREADPOOL_SITE = $(call github,Maratyszcza,pthreadpool,$(PTHREADPOOL_VERSION))
PTHREADPOOL_LICENSE = BSD-2-Clause
PTHREADPOOL_LICENSE_FILES = LICENSE
PTHREADPOOL_DEPENDENCIES = fxdiv
PTHREADPOOL_SUPPORTS_IN_SOURCE_BUILD = NO
PTHREADPOOL_CONF_OPTS = -DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
-DPTHREADPOOL_LIBRARY_TYPE=shared \
-DPTHREADPOOL_BUILD_TESTS=OFF \
-DPTHREADPOOL_BUILD_BENCHMARKS=OFF
PTHREADPOOL_INSTALL_STAGING = YES
PTHREADPOOL_DEPENDENCIES = fxdiv
PTHREADPOOL_CFLAGS = $(TARGET_CFLAGS)
PTHREADPOOL_CXXFLAGS = $(TARGET_CXXFLAGS)
ifeq ($(BR2_PACKAGE_CPUINFO),y)
PTHREADPOOL_DEPENDENCIES += cpuinfo
PTHREADPOOL_CFLAGS += -DPTHREADPOOL_USE_CPUINFO=1
PTHREADPOOL_CXXFLAGS += -DPTHREADPOOL_USE_CPUINFO=1
else
PTHREADPOOL_CFLAGS += -DPTHREADPOOL_USE_CPUINFO=0
PTHREADPOOL_CXXFLAGS += -DPTHREADPOOL_USE_CPUINFO=0
endif
PTHREADPOOL_CONF_OPTS = \
-DCMAKE_C_FLAGS="$(PTHREADPOOL_CFLAGS)" \
-DCMAKE_CXX_FLAGS="$(PTHREADPOOL_CXXFLAGS)" \
-DFXDIV_SOURCE_DIR="$(FXDIV_DIR)" \
-DPTHREADPOOL_BUILD_TESTS=OFF \
-DPTHREADPOOL_BUILD_BENCHMARKS=OFF
$(eval $(cmake-package))

View File

@ -1,13 +1,22 @@
config BR2_PACKAGE_RUY_ARCH_SUPPORTS
bool
default y if BR2_PACKAGE_CPUINFO_ARCH_SUPPORTS
config BR2_PACKAGE_RUY
bool "ruy"
depends on BR2_PACKAGE_CPUINFO_ARCH_SUPPORTS
depends on BR2_INSTALL_LIBSTDCPP
select BR2_PACKAGE_CPUINFO
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14
depends on BR2_TOOLCHAIN_HAS_THREADS # cpuinfo
select BR2_PACKAGE_CPUINFO
help
ruy is a matrix multiplication library.
Its focus is to cover the matrix multiplication
needs of neural network inference engines.
Its initial user has been TensorFlow Lite, where
it is used by default on the ARM CPU architecture.
Ruy is a matrix multiplication library. Its focus is to cover
the matrix multiplication needs of neural network inference
engines. Its initial user has been TensorFlow Lite, where it
is used by default on the ARM CPU architecture.
https://github.com/google/ruy
comment "ruy needs a toolchain w/ C++14, threads"
depends on !BR2_INSTALL_LIBSTDCPP || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_TOOLCHAIN_HAS_THREADS

View File

@ -1,4 +1,4 @@
# Locally calculated
sha256 4da8572946007603378c5d0280f48c5b77f4d38763209f5306b57c7513d9a82e ruy-3168a5c8f4c447fd8cea94078121ee2e2cd87df0.tar.gz
sha256 e151a5b55059a6e83ded001787e1a8889ba1e5e4eaa5bc836b9b660e7e1cb519 ruy-21a85fef159f9942f636a43b14c64b481c2a05b2.tar.gz
# License files, locally calculated
sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE

View File

@ -4,16 +4,14 @@
#
################################################################################
RUY_VERSION = 3168a5c8f4c447fd8cea94078121ee2e2cd87df0
RUY_VERSION = 21a85fef159f9942f636a43b14c64b481c2a05b2
RUY_SITE = $(call github,google,ruy,$(RUY_VERSION))
RUY_LICENSE = Apache-2
RUY_LICENSE_FILES = LICENSE
RUY_INSTALL_STAGING = YES
RUY_DEPENDENCIES = cpuinfo
RUY_SUPPORTS_IN_SOURCE_BUILD = NO
RUY_CONF_OPTS = -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DRUY_FIND_CPUINFO=ON \
-DRUY_MINIMAL_BUILD=ON
RUY_INSTALL_STAGING = YES
$(eval $(cmake-package))

View File

@ -0,0 +1,74 @@
From d8451a9048d09692994c40a6f9bc928e70ed79b5 Mon Sep 17 00:00:00 2001
From: James Hilliard <james.hilliard1@gmail.com>
Date: Mon, 28 Nov 2022 21:36:34 -0700
Subject: [PATCH] Add SYSTEM_FARMHASH cmake config flag
Since farmhash does not install a cmake package we need to
search for the library and headers to use the provided
version.
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
[james.hilliard1@gmail.com: backport from upstream commit
d8451a9048d09692994c40a6f9bc928e70ed79b5]
---
tensorflow/lite/g3doc/guide/build_cmake.md | 1 +
.../tools/cmake/modules/Findfarmhash.cmake | 30 +++++++++++++++----
2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/tensorflow/lite/g3doc/guide/build_cmake.md b/tensorflow/lite/g3doc/guide/build_cmake.md
index 6950a365bb8..6de955e70b0 100644
--- a/tensorflow/lite/g3doc/guide/build_cmake.md
+++ b/tensorflow/lite/g3doc/guide/build_cmake.md
@@ -81,6 +81,7 @@ variables to point to your library installations.
```sh
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_INSTALL=ON \
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON \
+ -DSYSTEM_FARMHASH=ON \
-Dabsl_DIR=<install path>/lib/cmake/absl \
-DEigen3_DIR=<install path>/share/eigen3/cmake \
-DFlatbuffers_DIR=<install path>/lib/cmake/flatbuffers \
diff --git a/tensorflow/lite/tools/cmake/modules/Findfarmhash.cmake b/tensorflow/lite/tools/cmake/modules/Findfarmhash.cmake
index 1b0dc28f624..97b43298f13 100644
--- a/tensorflow/lite/tools/cmake/modules/Findfarmhash.cmake
+++ b/tensorflow/lite/tools/cmake/modules/Findfarmhash.cmake
@@ -13,12 +13,32 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# tensorflow-lite uses find_package for this package, so override the system
-# installation and build from source instead.
-include(farmhash)
-if(farmhash_POPULATED)
+# tensorflow-lite uses find_package for this package, so build from
+# source if the system version is not enabled.
+
+if(SYSTEM_FARMHASH)
+ include(FindPackageHandleStandardArgs)
+ find_path(FARMHASH_ROOT_DIR NAMES include/farmhash.h)
+ find_library(FARMHASH_LIB NAMES farmhash PATHS ${FARMHASH_ROOT_DIR}/lib ${FARMHASH_LIB_PATH})
+ find_path(FARMHASH_INCLUDE_DIRS NAMES farmhash.h PATHS ${FARMHASH_ROOT_DIR}/include)
+ find_package_handle_standard_args(farmhash DEFAULT_MSG FARMHASH_LIB FARMHASH_INCLUDE_DIRS)
+endif()
+
+if(farmhash_FOUND)
+ add_library(farmhash SHARED IMPORTED GLOBAL)
+ set_target_properties(farmhash PROPERTIES
+ IMPORTED_LOCATION ${FARMHASH_LIB}
+ INTERFACE_INCLUDE_DIRECTORIES ${FARMHASH_INCLUDE_DIRS}
+ )
+else()
+ include(farmhash)
+ if(farmhash_POPULATED)
+ get_target_property(FARMHASH_INCLUDE_DIRS farmhash INTERFACE_DIRECTORIES)
+ endif()
+endif()
+
+if(farmhash_FOUND OR farmhash_POPULATED)
set(FARMHASH_FOUND TRUE)
- get_target_property(FARMHASH_INCLUDE_DIRS farmhash INTERFACE_DIRECTORIES)
add_library(farmhash::farmhash ALIAS farmhash)
set(FARMHASH_LIBRARIES farmhash::farmhash)
endif()
--
2.34.1

View File

@ -1,28 +0,0 @@
From 5fc3c283ac382e564152d71ad7c711cf758e52a0 Mon Sep 17 00:00:00 2001
From: j1nx <p.steenbergen@j1nx.nl>
Date: Wed, 7 Dec 2022 17:19:58 +0100
Subject: [PATCH 1/1] Do not search for XNNPACK We will take care of that
everything will be installed. (No clue yet how to solve this)
---
tensorflow/lite/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tensorflow/lite/CMakeLists.txt b/tensorflow/lite/CMakeLists.txt
index 273b80de71a..13cd59dac7b 100644
--- a/tensorflow/lite/CMakeLists.txt
+++ b/tensorflow/lite/CMakeLists.txt
@@ -398,8 +398,8 @@ else()
)
endif()
if(TFLITE_ENABLE_XNNPACK)
- find_package(fp16_headers REQUIRED)
- find_package(XNNPACK REQUIRED)
+ #find_package(fp16_headers REQUIRED)
+ #find_package(XNNPACK REQUIRED)
populate_tflite_source_vars("delegates/xnnpack"
TFLITE_DELEGATES_XNNPACK_SRCS
FILTER ".*(_test|_tester)\\.(cc|h)"
--
2.34.1

View File

@ -1,35 +1,36 @@
config BR2_PACKAGE_TENSORFLOW_LITE_ARCH_SUPPORTS
bool
default y if BR2_aarch64
default y if BR2_arm
default y if BR2_i386
default y if BR2_x86_64
depends on BR2_PACKAGE_CPUINFO_ARCH_SUPPORTS
config BR2_PACKAGE_TENSORFLOW_LITE
bool "tensorflow-lite"
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9
depends on BR2_TOOLCHAIN_USES_GLIBC
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_SHARED_LIBS
depends on ( BR2_arm && BR2_ARM_CPU_ARMV7A ) || ( BR2_aarch64 && BR2_ARM_CPU_ARMV8A )
select BR2_PACKAGE_CPUINFO
select BR2_PACKAGE_EIGEN
select BR2_PACKAGE_FARMHASH
select BR2_PACKAGE_FFT2D
select BR2_PACKAGE_FLATBUFFERS
select BR2_PACKAGE_GEMMLOWP
select BR2_PACKAGE_LIBABSEIL_CPP
select BR2_PACKAGE_NEON2SSE
select BR2_PACKAGE_RUY
select BR2_PACKAGE_XNNPACK
select BR2_PACKAGE_OPENCL_HEADERS
select BR2_PACKAGE_VULKAN_HEADERS
help
Tensorflow Lite dynamic library and headers: Inference engine to run previously trained machine learning models.
bool "tensorflow-lite"
depends on BR2_PACKAGE_TENSORFLOW_LITE_ARCH_SUPPORTS
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17
depends on BR2_TOOLCHAIN_HAS_THREADS # cpuinfo
depends on BR2_TOOLCHAIN_USES_GLIBC
depends on BR2_SHARED_LIBS
select BR2_PACKAGE_CPUINFO
select BR2_PACKAGE_EIGEN
select BR2_PACKAGE_FARMHASH
select BR2_PACKAGE_FFT2D
select BR2_PACKAGE_FLATBUFFERS
select BR2_PACKAGE_GEMMLOWP
select BR2_PACKAGE_LIBABSEIL_CPP
select BR2_PACKAGE_NEON_2_SSE
select BR2_PACKAGE_RUY if BR2_PACKAGE_RUY_ARCH_SUPPORTS
select BR2_PACKAGE_XNNPACK if BR2_PACKAGE_XNNPACK_ARCH_SUPPORTS
help
Tensorflow Lite dynamic library and headers: Inference engine
to run previously trained machine learning models.
comment "tensorflow-lite needs needs a toolchain w/ gcc >= 9"
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_9
comment "tensorflow-lite needs a toolchain w/ glibc, C++, threads"
depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP || \
!BR2_TOOLCHAIN_HAS_THREADS
comment "tensorflow-lite needs a toolchain w/ glibc, C++17, threads"
depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_TOOLCHAIN_HAS_THREADS
comment "tensorflow-lite needs a toolchain w/ shared libraries"
depends on !BR2_SHARED_LIBS
comment "tensorflow-lite in buildroot currently only supports arm + armv7a cpu or arm64 + armv8a cpu targets"
depends on ( BR2_arm && !BR2_ARM_CPU_ARMV7A ) || ( BR2_aarch64 && !BR2_ARM_CPU_ARMV8A) || (!BR2_arm && !BR2_aarch64)
depends on !BR2_SHARED_LIBS

View File

@ -1,4 +1,4 @@
# Locally calculated
sha256 99c732b92b1b37fc243a559e02f9aef5671771e272758aa4aec7f34dc92dac48 tensorflow-lite-v2.11.0.tar.gz
sha256 99c732b92b1b37fc243a559e02f9aef5671771e272758aa4aec7f34dc92dac48 tensorflow-lite-2.11.0.tar.gz
# License files, locally calculated
sha256 71c6915d04265772a0339bed47276942c678b45cc01534210ebe6984fd1aec65 LICENSE

View File

@ -4,29 +4,24 @@
#
################################################################################
TENSORFLOW_LITE_VERSION = v2.11.0
TENSORFLOW_LITE_SITE = $(call github,tensorflow,tensorflow,$(TENSORFLOW_LITE_VERSION))
TENSORFLOW_LITE_SUBDIR = tensorflow/lite
TENSORFLOW_LITE_VERSION = 2.11.0
TENSORFLOW_LITE_SITE = $(call github,tensorflow,tensorflow,v$(TENSORFLOW_LITE_VERSION))
TENSORFLOW_LITE_INSTALL_STAGING = YES
TENSORFLOW_LITE_LICENSE = Apache-2.0
TENSORFLOW_LITE_LICENSE_FILES = LICENSE
TENSORFLOW_LITE_INSTALL_STAGING = YES
TENSORFLOW_LITE_SUBDIR = tensorflow/lite
TENSORFLOW_LITE_SUPPORTS_IN_SOURCE_BUILD = NO
TENSORFLOW_LITE_DEPENDENCIES += \
host-pkgconf \
host-flatbuffers \
cpuinfo \
eigen \
farmhash \
fft2d \
flatbuffers \
gemmlowp \
libabseil-cpp \
neon2sse \
ruy \
xnnpack \
opencl_headers \
vulkan-headers
host-flatbuffers \
cpuinfo \
eigen \
farmhash \
fft2d \
flatbuffers \
gemmlowp \
libabseil-cpp \
neon-2-sse
TENSORFLOW_LITE_CONF_OPTS = \
-DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -funsafe-math-optimizations \
@ -39,25 +34,36 @@ TENSORFLOW_LITE_CONF_OPTS = \
-I$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \
-I$(STAGING_DIR)/usr/include/pybind11 \
-I$(STAGING_DIR)/usr/include/gemmlowp" \
-Dabsl_DIR=$(STAGING_DIR)/usr/lib/cmake/absl \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-Dabsl_DIR=$(STAGING_DIR)/usr/lib/cmake/absl \
-DEigen3_DIR=$(STAGING_DIR)/usr/share/eigen3/cmake \
-DFARMHASH_SOURCE_DIR=$(FARMHASH_DIR) \
-Dfarmhash_DIR=$(STAGING_DIR)/usr/lib \
-DFETCHCONTENT_FULLY_DISCONNECTED=ON \
-DFETCHCONTENT_QUIET=OFF \
-DFFT2D_SOURCE_DIR=$(STAGING_DIR)/usr/include/fft2d \
-DFlatBuffers_DIR=$(STAGING_DIR)/usr/lib/cmake/flatbuffers \
-DNEON_2_SSE_DIR=$(STAGING_DIR)/usr/lib/cmake/NEON_2_SSE \
-DTFLITE_ENABLE_EXTERNAL_DELEGATE=ON \
-DTFLITE_ENABLE_GPU=OFF \
-DTFLITE_ENABLE_INSTALL=ON \
-DTFLITE_ENABLE_MMAP=ON \
-DTFLITE_ENABLE_NNAPI=OFF \
-DTFLITE_ENABLE_RUY=ON \
-DTFLITE_ENABLE_XNNPACK=ON
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DEigen3_DIR=$(STAGING_DIR)/usr/share/eigen3/cmake \
-DFETCHCONTENT_FULLY_DISCONNECTED=ON \
-DFETCHCONTENT_QUIET=OFF \
-DFFT2D_SOURCE_DIR=$(STAGING_DIR)/usr/include/fft2d \
-DFlatBuffers_DIR=$(STAGING_DIR)/usr/lib/cmake/flatbuffers \
-DNEON_2_SSE_DIR=$(STAGING_DIR)/usr/lib/cmake/NEON_2_SSE \
-DSYSTEM_FARMHASH=ON \
-DTFLITE_ENABLE_EXTERNAL_DELEGATE=ON \
-DTFLITE_ENABLE_GPU=OFF \
-DTFLITE_ENABLE_INSTALL=ON \
-DTFLITE_ENABLE_MMAP=ON \
-DTFLITE_ENABLE_NNAPI=OFF
ifeq ($(BR2_PACKAGE_RUY),y)
TENSORFLOW_LITE_DEPENDENCIES += ruy
TENSORFLOW_LITE_CONF_OPTS += -DTFLITE_ENABLE_RUY=ON
else
TENSORFLOW_LITE_CONF_OPTS += -DTFLITE_ENABLE_RUY=OFF
endif
ifeq ($(BR2_PACKAGE_XNNPACK),y)
TENSORFLOW_LITE_DEPENDENCIES += xnnpack
TENSORFLOW_LITE_CONF_OPTS += -DTFLITE_ENABLE_XNNPACK=ON -Dxnnpack_POPULATED=ON
else
TENSORFLOW_LITE_CONF_OPTS += -DTFLITE_ENABLE_XNNPACK=OFF
endif
TENSORFLOW_LITE_MAKE_OPTS += _pywrap_tensorflow_interpreter_wrapper benchmark_model
@ -74,7 +80,7 @@ endef
define TENSORFLOW_LITE_INSTALL_TFLITE_RUNTIME
mkdir -p $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime
mkdir -p $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-2.11.0-py3.10.egg-info
mkdir -p $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-${TENSORFLOW_LITE_VERSION}-py$(PYTHON3_VERSION_MAJOR).egg-info
$(INSTALL) -D -m 755 $(@D)/$(TENSORFLOW_LITE_SUBDIR)/buildroot-build/_pywrap_tensorflow_interpreter_wrapper.so \
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime/
@ -95,19 +101,19 @@ define TENSORFLOW_LITE_INSTALL_TFLITE_RUNTIME
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime/
$(INSTALL) -D -m 644 $(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/tensorflow-lite/tflite_runtime/dependency_links.txt \
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-2.11.0-py3.10.egg-info/
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-${TENSORFLOW_LITE_VERSION}-py$(PYTHON3_VERSION_MAJOR).egg-info/
$(INSTALL) -D -m 644 $(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/tensorflow-lite/tflite_runtime/PKG-INFO \
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-2.11.0-py3.10.egg-info/
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-${TENSORFLOW_LITE_VERSION}-py$(PYTHON3_VERSION_MAJOR).egg-info/
$(INSTALL) -D -m 644 $(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/tensorflow-lite/tflite_runtime/requires.txt \
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-2.11.0-py3.10.egg-info/
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-${TENSORFLOW_LITE_VERSION}-py$(PYTHON3_VERSION_MAJOR).egg-info/
$(INSTALL) -D -m 644 $(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/tensorflow-lite/tflite_runtime/SOURCES.txt \
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-2.11.0-py3.10.egg-info/
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-${TENSORFLOW_LITE_VERSION}-py$(PYTHON3_VERSION_MAJOR).egg-info/
$(INSTALL) -D -m 644 $(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/tensorflow-lite/tflite_runtime/top_level.txt \
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-2.11.0-py3.10.egg-info/
$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/tflite_runtime-${TENSORFLOW_LITE_VERSION}-py$(PYTHON3_VERSION_MAJOR).egg-info/
endef

View File

@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: tflite-runtime
Version: 2.10.0
Version: 2.11.0
Summary: TensorFlow Lite is for mobile and embedded devices.
Home-page: https://www.tensorflow.org/lite/
Author: Google, LLC
@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence

View File

@ -1,11 +1,27 @@
config BR2_PACKAGE_XNNPACK_ARCH_SUPPORTS
bool
default y if BR2_aarch64
default y if BR2_arm
default y if BR2_i386
default y if BR2_x86_64
depends on BR2_PACKAGE_CPUINFO_ARCH_SUPPORTS
config BR2_PACKAGE_XNNPACK
bool "xnnpack"
select BR2_PACKAGE_CLOG
depends on BR2_PACKAGE_XNNPACK_ARCH_SUPPORTS
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14
depends on BR2_TOOLCHAIN_HAS_THREADS # cpuinfo
select BR2_PACKAGE_CPUINFO
select BR2_PACKAGE_PTHREADPOOL
select BR2_PACKAGE_FP16
select BR2_PACKAGE_FXDIV
select BR2_PACKAGE_PTHREADPOOL
help
High-efficiency floating-point neural network
inference operators for mobile, server, and Web
XNNPACK is a highly optimized solution for neural network
inference on ARM, x86, WebAssembly, and RISC-V platforms.
https://github.com/google/XNNPACK
comment "xnnpack needs a toolchain w/ C++14, threads"
depends on !BR2_INSTALL_LIBSTDCPP || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_TOOLCHAIN_HAS_THREADS

View File

@ -1 +1,4 @@
sha256 5016bf69478ebbd2ea424f95aa011cebbc820025719ce24e32f4a974ed7e9863 xnnpack-a50369c0fdd15f0f35b1a91c964644327a88d480.tar.gz
# Locally calculated
sha256 fb519d082e5fcaa11e849386ad00e38b9ebde2cc9363032394516cd0d00295c3 xnnpack-e4b2b942b4a6d84b680ed690fee42ae99865945c.tar.gz
# License files, locally calculated
sha256 63f519e15726f4c4f830bd958f694c84fecb4e0a4cacc527d2696bb71ef95ada LICENSE

View File

@ -4,20 +4,17 @@
#
################################################################################
XNNPACK_VERSION = a50369c0fdd15f0f35b1a91c964644327a88d480
XNNPACK_VERSION = e4b2b942b4a6d84b680ed690fee42ae99865945c
XNNPACK_SITE = $(call github,google,XNNPACK,$(XNNPACK_VERSION))
XNNPACK_LICENSE = BSD-2-Clause
XNNPACK_LICENSE = BSD-3-Clause
XNNPACK_LICENSE_FILES = LICENSE
XNNPACK_DEPENDENCIES = clog cpuinfo pthreadpool fp16
XNNPACK_INSTALL_STAGING = YES
XNNPACK_SUPPORTS_IN_SOURCE_BUILD = NO
XNNPACK_CONF_OPTS = -DXNNPACK_BUILD_TESTS=OFF \
-DXNNPACK_BUILD_BENCHMARKS=OFF \
-DXNNPACK_USE_SYSTEM_LIBS=ON \
-DXNNPACK_USE_SYSTEM_LIBS=ON
XNNPACK_DEPENDENCIES = cpuinfo fp16 fxdiv pthreadpool
XNNPACK_CONF_OPTS = \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DXNNPACK_LIBRARY_TYPE:STRING=shared \
-DXNNPACK_BUILD_TESTS=OFF \
-DXNNPACK_BUILD_BENCHMARKS=OFF \
-DXNNPACK_USE_SYSTEM_LIBS=ON
$(eval $(cmake-package))