All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Davis <afd@ti.com>
To: Denys Dmytriyenko <denys@konsulko.com>,
	Ryan Eatmon <reatmon@ti.com>, <meta-arago@lists.yoctoproject.org>
Cc: Andrew Davis <afd@ti.com>
Subject: [meta-arago][scarthgap/master][PATCH 2/2] meta-arago-extras: Add recipe for arm-compute-library
Date: Fri, 20 Dec 2024 10:49:10 -0600	[thread overview]
Message-ID: <20241220164910.318809-3-afd@ti.com> (raw)
In-Reply-To: <20241220164910.318809-1-afd@ti.com>

The Compute Library is a collection of low-level machine learning
functions optimized for Arm. This will be used for ARMNN and
other machine learning applications and frameworks.

Signed-off-by: Andrew Davis <afd@ti.com>
---
 ...-indention-in-cmake-generator-script.patch | 130 ++++++++++++
 ...ENABLE_NEON-in-code-for-checking-NEO.patch | 114 ++++++++++
 ...ENABLE_SVE-in-code-for-checking-SVE-.patch | 197 ++++++++++++++++++
 ...rce-files-at-library-definition-time.patch | 167 +++++++++++++++
 ...ptions-for-SVE-SVE2-and-BF16-support.patch | 112 ++++++++++
 ...SVE2-support-to-be-disabled-in-CMake.patch |  91 ++++++++
 .../0007-Allow-ARMv7-builds-using-CMake.patch |  86 ++++++++
 ...ymbol-error-when-building-TensorInfo.patch |  46 ++++
 .../arm-compute-library_24.12.bb              |  79 +++++++
 .../recipes-core/packagegroups/ti-test.bb     |   1 +
 10 files changed, 1023 insertions(+)
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch
 create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb

diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch
new file mode 100644
index 00000000..9e36d254
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch
@@ -0,0 +1,130 @@
+From 1e4c3016547b5f75e515d4b9a7202733c47f5a18 Mon Sep 17 00:00:00 2001
+From: Andrew Davis <afd@ti.com>
+Date: Wed, 4 Dec 2024 14:46:17 -0600
+Subject: [PATCH] fix: Fix indention in cmake generator script
+
+All other items in these lists use tabs, the first couple
+lines should match. Switch them to tabs then regenerate
+the CMakeLists.txt file.
+
+While here fix the missing ending newline.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrew Davis <afd@ti.com>
+Change-Id: Icab852fc43ae08e7858857881c996d233c835289
+---
+ scripts/generate_build_files.py | 27 ++++++++++++++-------------
+ src/CMakeLists.txt              | 26 +++++++++++++-------------
+ 2 files changed, 27 insertions(+), 26 deletions(-)
+
+diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py
+index f88cf1af44..52a8cc14da 100644
+--- a/scripts/generate_build_files.py
++++ b/scripts/generate_build_files.py
+@@ -168,28 +168,29 @@ def build_from_template_cmake(srcs_graph, srcs_sve, srcs_sve2, srcs_core):
+     template = f"""{get_template_header()}
+ 
+ target_sources(
+-    arm_compute_graph
+-    PRIVATE
+-    {line_separator.join(srcs_graph)}
++	arm_compute_graph
++	PRIVATE
++	{line_separator.join(srcs_graph)}
+ )
+ 
+ target_sources(
+-    arm_compute_sve
+-    PRIVATE
+-    {line_separator.join(srcs_sve)}
++	arm_compute_sve
++	PRIVATE
++	{line_separator.join(srcs_sve)}
+ )
+ 
+ target_sources(
+-    arm_compute_sve2
+-    PRIVATE
+-    {line_separator.join(srcs_sve2)}
++	arm_compute_sve2
++	PRIVATE
++	{line_separator.join(srcs_sve2)}
+ )
+ 
+ target_sources(
+-    arm_compute
+-    PRIVATE
+-    {line_separator.join(srcs_core)}
+-)"""
++	arm_compute
++	PRIVATE
++	{line_separator.join(srcs_core)}
++)
++"""
+     return template
+ 
+ 
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index ff3bed96df..f1b275532a 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -21,9 +21,9 @@
+ # SOFTWARE.
+ 
+ target_sources(
+-    arm_compute_graph
+-    PRIVATE
+-    graph/DataLayerVisitor.cpp
++	arm_compute_graph
++	PRIVATE
++	graph/DataLayerVisitor.cpp
+ 	graph/Graph.cpp
+ 	graph/GraphBuilder.cpp
+ 	graph/GraphContext.cpp
+@@ -101,9 +101,9 @@ target_sources(
+ )
+ 
+ target_sources(
+-    arm_compute_sve
+-    PRIVATE
+-    core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp
++	arm_compute_sve
++	PRIVATE
++	core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp
+ 	core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp
+ 	core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp
+ 	core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_indirect.cpp
+@@ -332,9 +332,9 @@ target_sources(
+ )
+ 
+ target_sources(
+-    arm_compute_sve2
+-    PRIVATE
+-    cpu/kernels/activation/generic/sve2/lut.cpp
++	arm_compute_sve2
++	PRIVATE
++	cpu/kernels/activation/generic/sve2/lut.cpp
+ 	cpu/kernels/activation/generic/sve2/qasymm8.cpp
+ 	cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp
+ 	cpu/kernels/activation/generic/sve2/qsymm16.cpp
+@@ -357,9 +357,9 @@ target_sources(
+ )
+ 
+ target_sources(
+-    arm_compute
+-    PRIVATE
+-    c/AclContext.cpp
++	arm_compute
++	PRIVATE
++	c/AclContext.cpp
+ 	c/AclOperator.cpp
+ 	c/AclQueue.cpp
+ 	c/AclTensor.cpp
+@@ -1049,4 +1049,4 @@ target_sources(
+ 	runtime/experimental/operators/CpuSub.cpp
+ 	runtime/experimental/operators/CpuTranspose.cpp
+ 	runtime/experimental/operators/CpuWinogradConv2d.cpp
+-)
+\ No newline at end of file
++)
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch
new file mode 100644
index 00000000..174327c5
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch
@@ -0,0 +1,114 @@
+From 4350c56d14b7b68acd060d8331f3ade1fb74e167 Mon Sep 17 00:00:00 2001
+From: Andrew Davis <afd@ti.com>
+Date: Thu, 5 Dec 2024 09:21:23 -0600
+Subject: [PATCH] Use ARM_COMPUTE_ENABLE_NEON in code for checking NEON support
+
+ENABLE_NEON is a flag used by the build systems. The flag is not used
+in code, instead ARM_COMPUTE_ENABLE_NEON is used everywhere.
+
+Drop the ENABLE_NEON compiler definition to prevent any accidental
+use in code.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrew Davis <afd@ti.com>
+Change-Id: I65f5e7411c99280e2dd8c187140909cefd1c6892
+---
+ Android.bp                     | 1 -
+ BUILD.bazel                    | 1 -
+ SConscript                     | 2 +-
+ SConstruct                     | 2 +-
+ cmake/Options.cmake            | 6 +-----
+ scripts/generate_android_bp.py | 1 -
+ 6 files changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/Android.bp b/Android.bp
+index 69379472b0..9288bba2d4 100644
+--- a/Android.bp
++++ b/Android.bp
+@@ -157,7 +157,6 @@ arm_compute_library_defaults {
+             "-DEMBEDDED_KERNELS",
+             "-DARM_COMPUTE_ASSERTS_ENABLED",
+             "-DARM_COMPUTE_CPP_SCHEDULER",
+-            "-DENABLE_NEON",
+             "-DARM_COMPUTE_ENABLE_NEON",
+             "-Wno-unused-parameter",
+             "-DNO_DOT_IN_TOOLCHAIN",
+diff --git a/BUILD.bazel b/BUILD.bazel
+index f553b7bfad..2262a09655 100644
+--- a/BUILD.bazel
++++ b/BUILD.bazel
+@@ -170,7 +170,6 @@ config_setting(
+ cc_library(
+     name = "common_defines",
+     defines = [
+-                  "ENABLE_NEON",
+                   "ARM_COMPUTE_CPU_ENABLED",
+                   "ARM_COMPUTE_ENABLE_NEON",
+                   "ARM_COMPUTE_ENABLE_I8MM",
+diff --git a/SConscript b/SConscript
+index 12e8fd1025..69a564873f 100644
+--- a/SConscript
++++ b/SConscript
+@@ -97,7 +97,7 @@ def build_multiisa_lib_objects():
+ 
+     # note that ARM_COMPUTE_ENABLE_FP16 is enabled in update_data_type_layout_flags() to make
+     # sure the environment is progated to the validation suite
+-    arm_compute_env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON',
++    arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON',
+                            'ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16',
+                            'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM'])
+ 
+diff --git a/SConstruct b/SConstruct
+index 8d7bd291e8..7381300fc8 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -302,7 +302,7 @@ if 'v7a' in env['estate'] and env['estate'] == '64':
+     print("ERROR: armv7a architecture has only 32-bit execution state")
+     Exit(1)
+ 
+-env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON'])
++env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON'])
+ 
+ if 'sve' in env['arch']:
+     env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE'])
+diff --git a/cmake/Options.cmake b/cmake/Options.cmake
+index 5d685be48d..121d527718 100644
+--- a/cmake/Options.cmake
++++ b/cmake/Options.cmake
+@@ -53,7 +53,6 @@ option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF)
+ 
+ option(ENABLE_NEON "Enable Arm® Neon™ support" ON)
+ option(ARM_COMPUTE_CPU_ENABLED "" ON)
+-option(ARM_COMPUTE_ENABLE_NEON "" ON)
+ option(ARM_COMPUTE_ENABLE_I8MM "" ON)
+ option(ENABLE_FP32_KERNELS "" ON)
+ option(ENABLE_QASYMM8_KERNELS "" ON)
+@@ -70,14 +69,11 @@ option(ENABLE_FP16_KERNELS "" OFF)
+ option(ARM_COMPUTE_ENABLE_FP16 "" OFF)
+ 
+ if(ENABLE_NEON)
+-  add_definitions(-DENABLE_NEON)
++  add_definitions(-DARM_COMPUTE_ENABLE_NEON)
+ endif()
+ if(ARM_COMPUTE_CPU_ENABLED)
+   add_definitions(-DARM_COMPUTE_CPU_ENABLED)
+ endif()
+-if(ARM_COMPUTE_ENABLE_NEON)
+-  add_definitions(-DARM_COMPUTE_ENABLE_NEON)
+-endif()
+ if(ARM_COMPUTE_ENABLE_FP16)
+   add_definitions(-DARM_COMPUTE_ENABLE_FP16)
+ endif()
+diff --git a/scripts/generate_android_bp.py b/scripts/generate_android_bp.py
+index d5b268f522..99a04e7071 100755
+--- a/scripts/generate_android_bp.py
++++ b/scripts/generate_android_bp.py
+@@ -94,7 +94,6 @@ arm_compute_library_defaults {
+             "-DEMBEDDED_KERNELS",
+             "-DARM_COMPUTE_ASSERTS_ENABLED",
+             "-DARM_COMPUTE_CPP_SCHEDULER",
+-            "-DENABLE_NEON",
+             "-DARM_COMPUTE_ENABLE_NEON",
+             "-Wno-unused-parameter",
+             "-DNO_DOT_IN_TOOLCHAIN",
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch
new file mode 100644
index 00000000..b51e4534
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch
@@ -0,0 +1,197 @@
+From 92a881cebfee5504b188a046a96d39dd9361ddb1 Mon Sep 17 00:00:00 2001
+From: Andrew Davis <afd@ti.com>
+Date: Thu, 5 Dec 2024 08:57:38 -0600
+Subject: [PATCH] Use ARM_COMPUTE_ENABLE_SVE in code for checking SVE support
+
+ENABLE_SVE is a flag used by the build systems. The flag used in code
+is ARM_COMPUTE_ENABLE_SVE. There are just a couple spots where the
+build system flag is used instead causing the need to define both.
+
+Switch these last users of ENABLE_SVE over to ARM_COMPUTE_ENABLE_SVE
+then drop the ENABLE_SVE definition to prevent any more instances
+being added in the future.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrew Davis <afd@ti.com>
+Change-Id: I00da7580c4520647b62c6989bc7fbdd5efc7935e
+---
+ BUILD.bazel                                   |  3 ---
+ SConscript                                    |  2 +-
+ SConstruct                                    |  2 +-
+ .../batchnormalization/impl/SVE/fp16.cpp      |  2 +-
+ .../batchnormalization/impl/SVE/fp32.cpp      |  2 +-
+ tests/BUILD.bazel                             |  1 -
+ tests/validation/NEON/ActivationLayer.cpp     | 24 +++++++++----------
+ tests/validation/NEON/ArithmeticAddition.cpp  |  6 ++---
+ 8 files changed, 19 insertions(+), 23 deletions(-)
+
+diff --git a/BUILD.bazel b/BUILD.bazel
+index 2262a09655..c04a52e084 100644
+--- a/BUILD.bazel
++++ b/BUILD.bazel
+@@ -297,7 +297,6 @@ cc_library(
+         "//conditions:default": [],
+     }),
+     local_defines = [
+-        "ENABLE_SVE",
+         "ARM_COMPUTE_ENABLE_SVE",
+         "ARM_COMPUTE_ENABLE_SVE2",
+         "ARM_COMPUTE_ENABLE_BF16",
+@@ -348,7 +347,6 @@ cc_library(
+         "//conditions:default": [],
+     }),
+     local_defines = [
+-        "ENABLE_SVE",
+         "ARM_COMPUTE_ENABLE_SVE",
+         "ARM_COMPUTE_ENABLE_BF16",
+     ],
+@@ -409,7 +407,6 @@ cc_library(
+         "//conditions:default": [],
+     }),
+     local_defines = [
+-        "ENABLE_SVE",
+         "ARM_COMPUTE_ENABLE_SVE",
+         "ARM_COMPUTE_ENABLE_BF16",
+     ],
+diff --git a/SConscript b/SConscript
+index 69a564873f..c2ca549b71 100644
+--- a/SConscript
++++ b/SConscript
+@@ -98,7 +98,7 @@ def build_multiisa_lib_objects():
+     # note that ARM_COMPUTE_ENABLE_FP16 is enabled in update_data_type_layout_flags() to make
+     # sure the environment is progated to the validation suite
+     arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON',
+-                           'ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16',
++                                         'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16',
+                            'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM'])
+ 
+     # Build all the common files for the base architecture
+diff --git a/SConstruct b/SConstruct
+index 7381300fc8..17f5615acf 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -305,7 +305,7 @@ if 'v7a' in env['estate'] and env['estate'] == '64':
+ env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON'])
+ 
+ if 'sve' in env['arch']:
+-    env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE'])
++    env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE'])
+     if 'sve2' in env['arch']:
+         env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE2'])
+ 
+diff --git a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp
+index 48caaa3e63..e07593312c 100644
+--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp
++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp
+@@ -128,4 +128,4 @@ void fp16_sve_batch_normalization(ITensor             *src,
+ }
+ } // namespace cpu
+ } // namespace arm_compute
+-#endif // ENABLE_SVE
++#endif // ARM_COMPUTE_ENABLE_SVE
+diff --git a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp
+index df4fbfe607..0d52d2c3c0 100644
+--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp
++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp
+@@ -128,4 +128,4 @@ void fp32_sve_batch_normalization(ITensor             *src,
+ }
+ } // namespace cpu
+ } // namespace arm_compute
+-#endif // ENABLE_SVE
++#endif // ARM_COMPUTE_ENABLE_SVE
+diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel
+index 7085f1facc..4b4be8b257 100644
+--- a/tests/BUILD.bazel
++++ b/tests/BUILD.bazel
+@@ -114,7 +114,6 @@ cc_binary(
+               }) +
+         select({
+                 "//:sve_validation_flag": [
+-                "ENABLE_SVE",
+                 "ARM_COMPUTE_ENABLE_SVE",
+                 ],
+                 "//conditions:default": [],
+diff --git a/tests/validation/NEON/ActivationLayer.cpp b/tests/validation/NEON/ActivationLayer.cpp
+index 119d51808a..69a8b52354 100644
+--- a/tests/validation/NEON/ActivationLayer.cpp
++++ b/tests/validation/NEON/ActivationLayer.cpp
+@@ -73,11 +73,11 @@ RelativeTolerance<float> relative_tolerance(DataType data_type, ActivationLayerI
+             switch(data_type)
+             {
+                 case DataType::F16:
+-#if defined(ENABLE_SVE)
++#if defined(ARM_COMPUTE_ENABLE_SVE)
+                     return RelativeTolerance<float>(0.25f);
+-#else  // !defined(ENABLE_SVE)
++#else  // !defined(ARM_COMPUTE_ENABLE_SVE)
+                     return RelativeTolerance<float>(0.1f);
+-#endif // defined(ENABLE_SVE)
++#endif // defined(ARM_COMPUTE_ENABLE_SVE)
+                 default:
+                     return RelativeTolerance<float>(0.05f);
+             }
+@@ -85,11 +85,11 @@ RelativeTolerance<float> relative_tolerance(DataType data_type, ActivationLayerI
+             switch(data_type)
+             {
+                 case DataType::F16:
+-#if defined(ENABLE_SVE)
++#if defined(ARM_COMPUTE_ENABLE_SVE)
+                     return RelativeTolerance<float>(0.9f);
+-#else  // !defined(ENABLE_SVE)
++#else  // !defined(ARM_COMPUTE_ENABLE_SVE)
+                     return RelativeTolerance<float>(0.01f);
+-#endif // defined(ENABLE_SVE)
++#endif // defined(ARM_COMPUTE_ENABLE_SVE)
+                 default:
+                     return RelativeTolerance<float>(0.00001f);
+             }
+@@ -117,11 +117,11 @@ AbsoluteTolerance<float> absolute_tolerance(DataType data_type, ActivationLayerI
+             switch(data_type)
+             {
+                 case DataType::F16:
+-#if defined(ENABLE_SVE)
++#if defined(ARM_COMPUTE_ENABLE_SVE)
+                     return AbsoluteTolerance<float>(0.25f);
+-#else  // !defined(ENABLE_SVE)
++#else  // !defined(ARM_COMPUTE_ENABLE_SVE)
+                     return AbsoluteTolerance<float>(0.01f);
+-#endif // defined(ENABLE_SVE)
++#endif // defined(ARM_COMPUTE_ENABLE_SVE)
+                 default:
+                     return AbsoluteTolerance<float>(0.00001f);
+             }
+@@ -129,11 +129,11 @@ AbsoluteTolerance<float> absolute_tolerance(DataType data_type, ActivationLayerI
+             switch(data_type)
+             {
+                 case DataType::F16:
+-#if defined(ENABLE_SVE)
++#if defined(ARM_COMPUTE_ENABLE_SVE)
+                     return AbsoluteTolerance<float>(0.9f);
+-#else  // !defined(ENABLE_SVE)
++#else  // !defined(ARM_COMPUTE_ENABLE_SVE)
+                     return AbsoluteTolerance<float>(0.01f);
+-#endif // defined(ENABLE_SVE)
++#endif // defined(ARM_COMPUTE_ENABLE_SVE)
+                 default:
+                     return AbsoluteTolerance<float>(0.00001f);
+             }
+diff --git a/tests/validation/NEON/ArithmeticAddition.cpp b/tests/validation/NEON/ArithmeticAddition.cpp
+index c0033daab0..bae8535ff3 100644
+--- a/tests/validation/NEON/ArithmeticAddition.cpp
++++ b/tests/validation/NEON/ArithmeticAddition.cpp
+@@ -48,11 +48,11 @@ namespace validation
+ using framework::dataset::make;
+ namespace
+ {
+-#if !defined(__aarch64__) || defined(ENABLE_SVE)
++#if !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE)
+ constexpr AbsoluteTolerance<float> tolerance_quant(1); /**< Tolerance value for comparing reference's output against implementation's output for quantized data types */
+-#else                                                  // !defined(__aarch64__) || defined(ENABLE_SVE)
++#else                                                  // !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE)
+ constexpr AbsoluteTolerance<float> tolerance_quant(1);
+-#endif                                                 // !defined(__aarch64__) || defined(ENABLE_SVE)
++#endif                                                 // !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE)
+ const auto InPlaceDataSet    = framework::dataset::make("InPlace", { false, true });
+ const auto OutOfPlaceDataSet = framework::dataset::make("InPlace", { false });
+ } // namespace
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch
new file mode 100644
index 00000000..971658b4
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch
@@ -0,0 +1,167 @@
+From a3c7d6aefc289dcce6656fc6d9f9c8c9b1af8f0b Mon Sep 17 00:00:00 2001
+From: Andrew Davis <afd@ti.com>
+Date: Thu, 5 Dec 2024 09:38:26 -0600
+Subject: [PATCH] Add source files at library definition time
+
+This allows for easier conditional disabling of these libraries.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrew Davis <afd@ti.com>
+Change-Id: I442aaa03060f2cb7db4ed0c1d93e64dbc223fdc6
+---
+ CMakeLists.txt                  | 20 ++++++++++----------
+ scripts/generate_build_files.py | 16 ++++------------
+ src/CMakeLists.txt              | 16 ++++------------
+ 3 files changed, 18 insertions(+), 34 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e8bdf2af1a..4073e06b17 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -46,6 +46,12 @@ set(CMAKE_CXX_EXTENSIONS OFF)
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+ include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Options.cmake)
+ include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.cmake)
++include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists.txt)
++
++list(TRANSFORM ARM_COMPUTE_GRAPH_SOURCES PREPEND "src/")
++list(TRANSFORM ARM_COMPUTE_SVE_SOURCES PREPEND "src/")
++list(TRANSFORM ARM_COMPUTE_SVE2_SOURCES PREPEND "src/")
++list(TRANSFORM ARM_COMPUTE_SOURCES PREPEND "src/")
+ 
+ # Require at least gcc/g++ 11) CMAKE_CXX_COMPILER_VERSION OR
+ if(CMAKE_C_COMPILER_VERSION VERSION_LESS 10.2 OR CMAKE_CXX_COMPILER_VERSION
+@@ -139,8 +145,7 @@ endif()
+ 
+ # ---------------------------------------------------------------------
+ # SVE Object Library
+-
+-add_library(arm_compute_sve OBJECT "")
++add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES})
+ target_compile_options(arm_compute_sve
+                        PRIVATE "-march=armv8.2-a+sve+fp16+dotprod"
+                        PRIVATE "-fPIC")
+@@ -162,8 +167,7 @@ target_include_directories(
+ 
+ # ---------------------------------------------------------------------
+ # SVE2 Object Library
+-
+-add_library(arm_compute_sve2 OBJECT "")
++add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES})
+ target_compile_options(arm_compute_sve2
+                        PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod"
+                        PRIVATE "-fPIC")
+@@ -187,7 +191,7 @@ target_include_directories(
+ # ---------------------------------------------------------------------
+ # Core Library
+ 
+-add_library(arm_compute "")
++add_library(arm_compute ${ARM_COMPUTE_SOURCES})
+ target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}")
+ target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16)
+ target_compile_definitions(arm_compute PRIVATE ENABLE_SVE)
+@@ -216,7 +220,7 @@ target_link_libraries(
+ # ---------------------------------------------------------------------
+ # Graph Library
+ 
+-add_library(arm_compute_graph "")
++add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES})
+ target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}")
+ target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE)
+ target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE)
+@@ -238,10 +242,6 @@ target_compile_options(arm_compute_graph PUBLIC ${COMMON_CXX_FLAGS})
+ 
+ add_library(ArmCompute::Graph ALIAS arm_compute_graph)
+ 
+-# ---------------------------------------------------------------------
+-# Library Target Sources
+-add_subdirectory(src)
+-
+ if(ARM_COMPUTE_BUILD_TESTING)
+   # ---------------------------------------------------------------------
+   # Validation Framework Library
+diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py
+index 52a8cc14da..4c4a14623f 100644
+--- a/scripts/generate_build_files.py
++++ b/scripts/generate_build_files.py
+@@ -167,27 +167,19 @@ def build_from_template_cmake(srcs_graph, srcs_sve, srcs_sve2, srcs_core):
+ 
+     template = f"""{get_template_header()}
+ 
+-target_sources(
+-	arm_compute_graph
+-	PRIVATE
++set(ARM_COMPUTE_GRAPH_SOURCES
+ 	{line_separator.join(srcs_graph)}
+ )
+ 
+-target_sources(
+-	arm_compute_sve
+-	PRIVATE
++set(ARM_COMPUTE_SVE_SOURCES
+ 	{line_separator.join(srcs_sve)}
+ )
+ 
+-target_sources(
+-	arm_compute_sve2
+-	PRIVATE
++set(ARM_COMPUTE_SVE2_SOURCES
+ 	{line_separator.join(srcs_sve2)}
+ )
+ 
+-target_sources(
+-	arm_compute
+-	PRIVATE
++set(ARM_COMPUTE_SOURCES
+ 	{line_separator.join(srcs_core)}
+ )
+ """
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index f1b275532a..73871563e1 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,9 +20,7 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ # SOFTWARE.
+ 
+-target_sources(
+-	arm_compute_graph
+-	PRIVATE
++set(ARM_COMPUTE_GRAPH_SOURCES
+ 	graph/DataLayerVisitor.cpp
+ 	graph/Graph.cpp
+ 	graph/GraphBuilder.cpp
+@@ -100,9 +98,7 @@ target_sources(
+ 	graph/printers/DotGraphPrinter.cpp
+ )
+ 
+-target_sources(
+-	arm_compute_sve
+-	PRIVATE
++set(ARM_COMPUTE_SVE_SOURCES
+ 	core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp
+ 	core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp
+ 	core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp
+@@ -331,9 +327,7 @@ target_sources(
+ 	cpu/kernels/softmax/generic/sve/impl_bf16.cpp
+ )
+ 
+-target_sources(
+-	arm_compute_sve2
+-	PRIVATE
++set(ARM_COMPUTE_SVE2_SOURCES
+ 	cpu/kernels/activation/generic/sve2/lut.cpp
+ 	cpu/kernels/activation/generic/sve2/qasymm8.cpp
+ 	cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp
+@@ -356,9 +350,7 @@ target_sources(
+ 	cpu/kernels/softmax/generic/sve2/impl.cpp
+ )
+ 
+-target_sources(
+-	arm_compute
+-	PRIVATE
++set(ARM_COMPUTE_SOURCES
+ 	c/AclContext.cpp
+ 	c/AclOperator.cpp
+ 	c/AclQueue.cpp
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch
new file mode 100644
index 00000000..29ca02f5
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch
@@ -0,0 +1,112 @@
+From cdb765df59d8ce5f388ac2a820b5da76eb8d610c Mon Sep 17 00:00:00 2001
+From: Andrew Davis <afd@ti.com>
+Date: Thu, 5 Dec 2024 09:47:25 -0600
+Subject: [PATCH] Add CMake options for SVE, SVE2, and BF16 support
+
+These should be optional, add options for these. Remove the hard-coded
+definitions of these for the libraries. This also makes it so validation
+options are not needed, if SVE is enabled it will be validated.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrew Davis <afd@ti.com>
+Change-Id: I03182ac6ece843e813c027ef6a573cbba254dee9
+---
+ CMakeLists.txt      | 19 -------------------
+ cmake/Options.cmake | 16 +++++++++++++---
+ 2 files changed, 13 insertions(+), 22 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4073e06b17..4d95fb1bfd 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -149,9 +149,6 @@ add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES})
+ target_compile_options(arm_compute_sve
+                        PRIVATE "-march=armv8.2-a+sve+fp16+dotprod"
+                        PRIVATE "-fPIC")
+-target_compile_definitions(arm_compute_sve PRIVATE ARM_COMPUTE_ENABLE_BF16)
+-target_compile_definitions(arm_compute_sve PRIVATE ENABLE_SVE)
+-target_compile_definitions(arm_compute_sve PRIVATE ARM_COMPUTE_ENABLE_SVE)
+ target_include_directories(
+   arm_compute_sve
+   PUBLIC $<INSTALL_INTERFACE:include>
+@@ -171,10 +168,6 @@ add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES})
+ target_compile_options(arm_compute_sve2
+                        PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod"
+                        PRIVATE "-fPIC")
+-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_SVE2)
+-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_BF16)
+-target_compile_definitions(arm_compute_sve2 PRIVATE ENABLE_SVE)
+-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_SVE)
+ target_include_directories(
+   arm_compute_sve2
+   PUBLIC $<INSTALL_INTERFACE:include>
+@@ -193,9 +186,6 @@ target_include_directories(
+ 
+ add_library(arm_compute ${ARM_COMPUTE_SOURCES})
+ target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}")
+-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16)
+-target_compile_definitions(arm_compute PRIVATE ENABLE_SVE)
+-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_SVE)
+ target_include_directories(
+   arm_compute
+   PUBLIC $<INSTALL_INTERFACE:include>
+@@ -222,8 +212,6 @@ target_link_libraries(
+ 
+ add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES})
+ target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}")
+-target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE)
+-target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE)
+ # add_subdirectory(src/graph)
+ 
+ target_include_directories(
+@@ -268,13 +256,6 @@ if(ARM_COMPUTE_BUILD_TESTING)
+ 
+   add_executable(arm_compute_validation "")
+   target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}")
+-  if(ARM_COMPUTE_ENABLE_BF16_VALIDATION)
+-    target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_BF16)
+-  endif()
+-  if(ARM_COMPUTE_ENABLE_SVE_VALIDATION)
+-    target_compile_definitions(arm_compute_validation PRIVATE ENABLE_SVE)
+-    target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_SVE)
+-  endif()
+   add_subdirectory(tests/validation)
+   target_compile_options(arm_compute_validation PUBLIC ${COMMON_CXX_FLAGS})
+   set_target_properties(
+diff --git a/cmake/Options.cmake b/cmake/Options.cmake
+index 121d527718..5c23fcb490 100644
+--- a/cmake/Options.cmake
++++ b/cmake/Options.cmake
+@@ -48,11 +48,12 @@ set(ARM_COMPUTE_ARCH armv8-a CACHE STRING "Architecture to use")
+ # ---------------------------------------------------------------------
+ # Backends
+ 
+-option(ARM_COMPUTE_ENABLE_BF16_VALIDATION "" ON)
+-option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF)
+-
+ option(ENABLE_NEON "Enable Arm® Neon™ support" ON)
++option(ENABLE_SVE "Enable Arm® SVE support" ON)
++option(ENABLE_SVE2 "Enable Arm® SVE2 support" ON)
++
+ option(ARM_COMPUTE_CPU_ENABLED "" ON)
++option(ARM_COMPUTE_ENABLE_BF16 "" ON)
+ option(ARM_COMPUTE_ENABLE_I8MM "" ON)
+ option(ENABLE_FP32_KERNELS "" ON)
+ option(ENABLE_QASYMM8_KERNELS "" ON)
+@@ -74,6 +75,15 @@ endif()
+ if(ARM_COMPUTE_CPU_ENABLED)
+   add_definitions(-DARM_COMPUTE_CPU_ENABLED)
+ endif()
++if(ENABLE_SVE)
++  add_definitions(-DARM_COMPUTE_ENABLE_SVE)
++endif()
++if(ENABLE_SVE2)
++  add_definitions(-DARM_COMPUTE_ENABLE_SVE2)
++endif()
++if(ARM_COMPUTE_ENABLE_BF16)
++  add_definitions(-DARM_COMPUTE_ENABLE_BF16)
++endif()
+ if(ARM_COMPUTE_ENABLE_FP16)
+   add_definitions(-DARM_COMPUTE_ENABLE_FP16)
+ endif()
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch
new file mode 100644
index 00000000..06370adb
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch
@@ -0,0 +1,91 @@
+From ab5bf5b8f86337a31bfd48277650f583a040e658 Mon Sep 17 00:00:00 2001
+From: Andrew Davis <afd@ti.com>
+Date: Thu, 5 Dec 2024 09:59:48 -0600
+Subject: [PATCH] Allow SVE and SVE2 support to be disabled in CMake
+
+Currently these are hard-coded as enabled. The SVE and SVE2 libraries
+are built unconditionally. These should only be built when SVE or
+SVE2 is available.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrew Davis <afd@ti.com>
+Change-Id: I176259f872a84f736028622694d65d4c5b57e379
+---
+ CMakeLists.txt | 25 ++++++++++++++++++-------
+ 1 file changed, 18 insertions(+), 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4d95fb1bfd..d233d6bc67 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -145,6 +145,7 @@ endif()
+ 
+ # ---------------------------------------------------------------------
+ # SVE Object Library
++if(ENABLE_SVE)
+ add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES})
+ target_compile_options(arm_compute_sve
+                        PRIVATE "-march=armv8.2-a+sve+fp16+dotprod"
+@@ -161,9 +162,11 @@ target_include_directories(
+          src/core/cpu/kernels/assembly
+          src/cpu/kernels/assembly
+          src/core/NEON/kernels/arm_gemm/merges)
++endif() # ENABLE_SVE
+ 
+ # ---------------------------------------------------------------------
+ # SVE2 Object Library
++if(ENABLE_SVE2)
+ add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES})
+ target_compile_options(arm_compute_sve2
+                        PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod"
+@@ -180,6 +183,7 @@ target_include_directories(
+          src/core/cpu/kernels/assembly
+          src/cpu/kernels/assembly
+          src/core/NEON/kernels/arm_gemm/merges)
++endif() # ENABLE_SVE2
+ 
+ # ---------------------------------------------------------------------
+ # Core Library
+@@ -203,9 +207,12 @@ target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS})
+ add_library(ArmCompute::Core ALIAS arm_compute)
+ 
+ # arm_compute_sve and arm_compute_sve2 obj files will not be public in the arm_compute.so
+-target_link_libraries(
+-  arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve>
+-              PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>)
++if(ENABLE_SVE)
++  target_link_libraries(arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve>)
++endif()
++if(ENABLE_SVE2)
++  target_link_libraries(arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>)
++endif()
+ 
+ # ---------------------------------------------------------------------
+ # Graph Library
+@@ -263,8 +270,10 @@ if(ARM_COMPUTE_BUILD_TESTING)
+                                       "${CMAKE_BINARY_DIR}/validation")
+   target_link_libraries(
+     arm_compute_validation
+-    PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework
+-           arm_compute_sve)
++    PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework)
++    if(ENABLE_SVE)
++      target_link_libraries(arm_compute_validation PUBLIC arm_compute_sve)
++    endif()
+   target_link_directories(arm_compute_validation PUBLIC tests)
+ 
+   # ---------------------------------------------------------------------
+@@ -299,8 +308,10 @@ if(ARM_COMPUTE_BUILD_EXAMPLES)
+     set_target_properties(
+       ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
+                               "${CMAKE_BINARY_DIR}/examples")
+-    target_link_libraries(${test_name} PUBLIC arm_compute
+-                                              arm_compute_graph arm_compute_sve)
++    target_link_libraries(${test_name} PUBLIC arm_compute arm_compute_graph)
++    if(ENABLE_SVE)
++      target_link_libraries(${test_name} PUBLIC arm_compute_sve)
++    endif()
+   endforeach()
+ 
+   # NEON Examples
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch
new file mode 100644
index 00000000..07dd4bee
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch
@@ -0,0 +1,86 @@
+From 416cffe2a75a4ec66a75e00bc00297f2f0187e0f Mon Sep 17 00:00:00 2001
+From: Andrew Davis <afd@ti.com>
+Date: Thu, 5 Dec 2024 10:05:03 -0600
+Subject: [PATCH] Allow ARMv7 builds using CMake
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrew Davis <afd@ti.com>
+Change-Id: Ib6bae5820569a8eadd53afdfe31e611a3089140e
+---
+ CMakeLists.txt                                | 25 +++++++++++++++++--
+ .../fixtures/CpuGemmAssemblyDispatchFixture.h |  3 +++
+ 2 files changed, 26 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d233d6bc67..4fc27553f3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -148,7 +148,7 @@ endif()
+ if(ENABLE_SVE)
+ add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES})
+ target_compile_options(arm_compute_sve
+-                       PRIVATE "-march=armv8.2-a+sve+fp16+dotprod"
++                       PRIVATE "-march=${ARM_COMPUTE_ARCH}"
+                        PRIVATE "-fPIC")
+ target_include_directories(
+   arm_compute_sve
+@@ -169,7 +169,7 @@ endif() # ENABLE_SVE
+ if(ENABLE_SVE2)
+ add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES})
+ target_compile_options(arm_compute_sve2
+-                       PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod"
++                       PRIVATE "-march=${ARM_COMPUTE_ARCH}"
+                        PRIVATE "-fPIC")
+ target_include_directories(
+   arm_compute_sve2
+@@ -204,6 +204,15 @@ target_include_directories(
+           src/core/NEON/kernels/convolution/winograd)
+ target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS})
+ 
++if(ARM_COMPUTE_ARCH MATCHES "armv7")
++  target_sources(
++    arm_compute
++    PRIVATE
++      src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a53.cpp
++      src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a55r1.cpp
++      src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/generic.cpp)
++endif()
++
+ add_library(ArmCompute::Core ALIAS arm_compute)
+ 
+ # arm_compute_sve and arm_compute_sve2 obj files will not be public in the arm_compute.so
+@@ -264,6 +273,18 @@ if(ARM_COMPUTE_BUILD_TESTING)
+   add_executable(arm_compute_validation "")
+   target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}")
+   add_subdirectory(tests/validation)
++  target_include_directories(
++    arm_compute_validation
++    PUBLIC $<INSTALL_INTERFACE:include>
++          $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
++          ${CMAKE_CURRENT_SOURCE_DIR}
++    PRIVATE src
++          src/cpu/kernels/assembly
++          src/core/NEON/kernels/arm_gemm
++          src/core/NEON/kernels/assembly
++          src/core/NEON/kernels/convolution/common
++          src/core/NEON/kernels/arm_conv/depthwise
++          src/core/NEON/kernels/convolution/winograd)
+   target_compile_options(arm_compute_validation PUBLIC ${COMMON_CXX_FLAGS})
+   set_target_properties(
+     arm_compute_validation PROPERTIES RUNTIME_OUTPUT_DIRECTORY
+diff --git a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h
+index 5d74e210d5..0b45cdf356 100644
+--- a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h
++++ b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h
+@@ -25,7 +25,10 @@
+ #define ACL_TESTS_VALIDATION_FIXTURES_CPUGEMMASSEMBLYDISPATCHFIXTURE_H
+ 
+ #include "arm_compute/core/Helpers.h"
++
++#ifdef ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS
+ #include "arm_compute/runtime/NEON/functions/NEReorderLayer.h"
++#endif //ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS
+ #include "arm_compute/runtime/NEON/functions/NETranspose.h"
+ 
+ #include "src/core/NEON/kernels/arm_gemm/utils.hpp"
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch
new file mode 100644
index 00000000..9883a44d
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch
@@ -0,0 +1,46 @@
+From 58698788adaeb2f74cf9fcddf06f3e9a2e78b984 Mon Sep 17 00:00:00 2001
+From: Andrew Davis <afd@ti.com>
+Date: Mon, 16 Dec 2024 09:42:22 -0600
+Subject: [PATCH] Fix undefined symbol error when building TensorInfo
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrew Davis <afd@ti.com>
+Change-Id: I657d1b7faaad94147c685c4826916d3c21da82e1
+---
+ arm_compute/core/TensorInfo.h | 5 +----
+ src/core/TensorInfo.cpp       | 5 +++++
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/arm_compute/core/TensorInfo.h b/arm_compute/core/TensorInfo.h
+index e4c9cbe879..2bfe83c4b1 100644
+--- a/arm_compute/core/TensorInfo.h
++++ b/arm_compute/core/TensorInfo.h
+@@ -242,10 +242,7 @@ public:
+     {
+         return _num_channels;
+     }
+-    const TensorShape &tensor_shape() const override
+-    {
+-        return _tensor_shape;
+-    }
++    const TensorShape &tensor_shape() const override;
+     const TensorDimsState &tensor_dims_state() const override
+     {
+         return _dims_state;
+diff --git a/src/core/TensorInfo.cpp b/src/core/TensorInfo.cpp
+index 31bddbde40..884203fd7c 100644
+--- a/src/core/TensorInfo.cpp
++++ b/src/core/TensorInfo.cpp
+@@ -395,6 +395,11 @@ ITensorInfo &TensorInfo::set_tensor_dims_state(const TensorDimsState &state)
+     return *this;
+ }
+ 
++const TensorShape &TensorInfo::tensor_shape() const
++{
++    return _tensor_shape;
++}
++
+ ITensorInfo &TensorInfo::set_quantization_info(const QuantizationInfo &quantization_info)
+ {
+     _quantization_info = quantization_info;
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb
new file mode 100644
index 00000000..d069da4c
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb
@@ -0,0 +1,79 @@
+SUMMARY = "The ARM Computer Vision and Machine Learning library"
+DESCRIPTION = "The ARM Computer Vision and Machine Learning library is a set of functions optimised for both ARM CPUs and GPUs."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSES/MIT.txt;md5=35f8944fae972976691f3483b0ac9dba"
+
+SRC_URI = " \
+    git://github.com/ARM-software/ComputeLibrary.git;branch=main;protocol=https \
+    file://0001-fix-Fix-indention-in-cmake-generator-script.patch \
+    file://0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch \
+    file://0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch \
+    file://0004-Add-source-files-at-library-definition-time.patch \
+    file://0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch \
+    file://0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch \
+    file://0007-Allow-ARMv7-builds-using-CMake.patch \
+    file://0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch \
+"
+SRCREV = "32bcced2af7feea6969dd1d22e58d0718dc488e3"
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST = "(arm|aarch64).*-linux"
+
+inherit cmake
+
+PACKAGECONFIG ??= "examples tests cppthreads openmp"
+
+PACKAGECONFIG[Werror] = "-DARM_COMPUTE_WERROR=ON,-DARM_COMPUTE_WERROR=OFF"
+PACKAGECONFIG[examples] = "-DARM_COMPUTE_BUILD_EXAMPLES=ON,-DARM_COMPUTE_BUILD_EXAMPLES=OFF"
+PACKAGECONFIG[tests] = "-DARM_COMPUTE_BUILD_TESTING=ON,-DARM_COMPUTE_BUILD_TESTING=OFF"
+PACKAGECONFIG[cppthreads] = "-DARM_COMPUTE_CPPTHREADS=ON,-DARM_COMPUTE_CPPTHREADS=OFF"
+PACKAGECONFIG[openmp] = "-DARM_COMPUTE_OPENMP=ON,-DARM_COMPUTE_OPENMP=OFF"
+
+EXTRA_OECMAKE:append:aarch64 = " \
+	-DARM_COMPUTE_ARCH=armv8-a \
+	-DENABLE_NEON=ON \
+	-DENABLE_SVE=OFF \
+	-DENABLE_SVE2=OFF \
+"
+EXTRA_OECMAKE:append:arm = " \
+	-DARM_COMPUTE_ARCH=armv7-a \
+	-DENABLE_NEON=ON \
+	-DENABLE_SVE=OFF \
+	-DENABLE_SVE2=OFF \
+	-DARM_COMPUTE_ENABLE_BF16=OFF \
+	-DARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS=OFF \
+"
+
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+
+# package unversioned .so files in PN (they are not dev symlinks)
+FILES_SOLIBSDEV = ""
+FILES:${PN} += "${libdir}/*.so"
+
+# Install headers and examples
+do_install:append() {
+	# Install headers
+	CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership"
+	install -d ${D}${includedir}
+	cp $CP_ARGS ${S}/arm_compute ${D}${includedir}
+	cp $CP_ARGS ${S}/support ${D}${includedir}/support
+
+	# Install examples
+	if ${@bb.utils.contains('PACKAGECONFIG', 'examples', 'true', 'false', d)}; then
+		install -d ${D}${bindir}/${PN}-${PV}/examples
+		for example in ${B}/examples/*; do
+			if [ -d "$example" ]; then
+				continue
+			fi
+			case "$example" in
+				(*.o|*.a|*.cmake) continue;;
+			esac
+			install -m 0555 $example ${D}${bindir}/${PN}-${PV}/examples
+		done
+	fi
+}
+
+PACKAGES =+ "${PN}-tests ${PN}-examples"
+FILES:${PN}-tests += "${libdir}/tests"
+FILES:${PN}-examples += "${bindir}/*/examples"
diff --git a/meta-arago-test/recipes-core/packagegroups/ti-test.bb b/meta-arago-test/recipes-core/packagegroups/ti-test.bb
index e8458cef..37f75a39 100644
--- a/meta-arago-test/recipes-core/packagegroups/ti-test.bb
+++ b/meta-arago-test/recipes-core/packagegroups/ti-test.bb
@@ -61,6 +61,7 @@ TI_TEST_EXTRAS = " \
     piglit \
     python3-numpy \
     wayland-utils \
+    arm-compute-library-tests \
 "
 
 TI_TEST_BASE:append:armv7a = " \
-- 
2.39.2



  parent reply	other threads:[~2024-12-20 16:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-20 16:49 [meta-arago][scarthgap/master][PATCH 0/2] Add ARM Compute Library Andrew Davis
2024-12-20 16:49 ` [meta-arago][scarthgap/master][PATCH 1/2] flatbuffers: Remove this recipe Andrew Davis
2024-12-20 17:52   ` Denys Dmytriyenko
2024-12-21 19:52     ` Andrew Davis
2024-12-20 16:49 ` Andrew Davis [this message]
2025-01-09 18:27   ` [meta-arago][scarthgap/master][PATCH 2/2] meta-arago-extras: Add recipe for arm-compute-library Ryan Eatmon
2025-01-09 18:44     ` Andrew Davis
2025-01-09 18:45       ` Ryan Eatmon
2024-12-20 18:04 ` [meta-arago][scarthgap/master][PATCH 0/2] Add ARM Compute Library Denys Dmytriyenko
2024-12-21 20:05   ` Andrew Davis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241220164910.318809-3-afd@ti.com \
    --to=afd@ti.com \
    --cc=denys@konsulko.com \
    --cc=meta-arago@lists.yoctoproject.org \
    --cc=reatmon@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.