Arm NN SDK is a set of open-source Linux software and tools that enables
machine learning workloads on power-efficient devices. Arm NN takes Caffe,
TensorFlow network frameworks, translate them to the internal Arm NN
formatand then, through the Compute Library, deploy them efficiently on
Cortex-A CPUs.


Signed-off-by: Qin Su <[email protected]>
---
 meta-arago-extras/recipes-support/armnn/armnn.bb   | 47 ++++++++++++++++++
 .../armnn/0001-stdlib-issue-work-around.patch      | 55 ++++++++++++++++++++++
 2 files changed, 102 insertions(+)
 create mode 100644 meta-arago-extras/recipes-support/armnn/armnn.bb
 create mode 100644 
meta-arago-extras/recipes-support/armnn/armnn/0001-stdlib-issue-work-around.patch

diff --git a/meta-arago-extras/recipes-support/armnn/armnn.bb 
b/meta-arago-extras/recipes-support/armnn/armnn.bb
new file mode 100644
index 0000000..6ecf633
--- /dev/null
+++ b/meta-arago-extras/recipes-support/armnn/armnn.bb
@@ -0,0 +1,47 @@
+DESCRIPTION = "Linux software and tools to enable machine learning 
(Caffe/Tensorflow) workloads on power-efficient devices"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3e14a924c16f7d828b8335a59da64074"
+
+SRCREV = "4c7098bfeab1ffe1cdc77f6c15548d3e73274746"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN}-dev += "{libdir}/cmake/*"
+
+inherit cmake
+
+SRC_URI = " \
+    git://github.com/ARM-software/armnn.git \
+    file://0001-stdlib-issue-work-around.patch \
+"
+
+DEPENDS = " \
+           boost \
+           protobuf \
+           stb \
+           arm-compute-library \
+                  armnn-caffe \
+                  armnn-tensorflow \
+"
+
+EXTRA_OECMAKE=" \
+               -DBUILD_SHARED_LIBS=ON -DREGISTER_INSTALL_PREFIX=OFF \
+               
-DARMCOMPUTE_ROOT=${STAGING_DIR_HOST}${datadir}/arm-compute-library \
+               
-DARMCOMPUTE_BUILD_DIR=${STAGING_DIR_HOST}${datadir}/arm-compute-library/build \
+               
-DCAFFE_GENERATED_SOURCES=${STAGING_DIR_HOST}${datadir}/armnn-caffe \
+               
-DTF_GENERATED_SOURCES=${STAGING_DIR_HOST}${datadir}/armnn-tensorflow \
+               -DBUILD_CAFFE_PARSER=1 -DBUILD_TF_PARSER=1 \
+               -DARMCOMPUTENEON=1 \
+               -DBUILD_TESTS=1 -DPROFILING=1 \
+               -DTHIRD_PARTY_INCLUDE_DIRS=${STAGING_DIR_HOST}${includedir} \
+"
+
+CXXFLAGS += "-fopenmp"
+LIBS += "-larmpl_lp64_mp"
+
+INSANE_SKIP_${PN}-dev = "dev-elf"
+
+PACKAGES =+ "${PN}-bash-completion"
+FILES_${PN}-bash-completion += "${bindir}/armnn_completions.sh"
+RDEPENDS_${PN}-bash-completion = "bash bash-completion"
+
diff --git 
a/meta-arago-extras/recipes-support/armnn/armnn/0001-stdlib-issue-work-around.patch
 
b/meta-arago-extras/recipes-support/armnn/armnn/0001-stdlib-issue-work-around.patch
new file mode 100644
index 0000000..eab2902
--- /dev/null
+++ 
b/meta-arago-extras/recipes-support/armnn/armnn/0001-stdlib-issue-work-around.patch
@@ -0,0 +1,55 @@
+From 3691057b51010c1bd979998c460ad7b43f97496f Mon Sep 17 00:00:00 2001
+From: Qin Su <[email protected]>
+Date: Fri, 10 Aug 2018 11:02:14 -0400
+Subject: [PATCH] stdlib issue work around
+
+Signed-off-by: Qin Su <[email protected]>
+---
+ cmake/GlobalConfig.cmake | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+ mode change 100644 => 100755 cmake/GlobalConfig.cmake
+
+diff --git a/cmake/GlobalConfig.cmake b/cmake/GlobalConfig.cmake
+old mode 100644
+new mode 100755
+index 2dbeada..2b88c16
+--- a/cmake/GlobalConfig.cmake
++++ b/cmake/GlobalConfig.cmake
+@@ -47,6 +47,34 @@ elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
+     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP")
+     add_definitions(-DNOMINMAX=1 -DNO_STRICT=1)
+ endif()
++
++# Ensure that the default include system directories are added to the list of 
CMake implicit includes.
++# This workarounds an issue that happens when using GCC 6 and using system 
includes (-isystem).
++# For more details check: https://bugs.webkit.org/show_bug.cgi?id=161697
++macro(DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _compiler _flags _result)
++    file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n")
++    separate_arguments(_buildFlags UNIX_COMMAND "${_flags}")
++    execute_process(COMMAND ${_compiler} ${_buildFlags} -v -E -x ${_lang} -dD 
dummy
++                    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles 
OUTPUT_QUIET
++                    ERROR_VARIABLE _gccOutput)
++    file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy")
++    if ("${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End 
of (search) list")
++        set(${_result} ${CMAKE_MATCH_1})
++        string(REPLACE "\n" " " ${_result} "${${_result}}")
++        separate_arguments(${_result})
++    endif ()
++endmacro()
++
++if (CMAKE_COMPILER_IS_GNUCC)
++   DETERMINE_GCC_SYSTEM_INCLUDE_DIRS("c" "${CMAKE_C_COMPILER}" 
"${CMAKE_C_FLAGS}" SYSTEM_INCLUDE_DIRS)
++   set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES 
${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES} ${SYSTEM_INCLUDE_DIRS})
++endif ()
++
++if (CMAKE_COMPILER_IS_GNUCXX)
++   DETERMINE_GCC_SYSTEM_INCLUDE_DIRS("c++" "${CMAKE_CXX_COMPILER}" 
"${CMAKE_CXX_FLAGS}" SYSTEM_INCLUDE_DIRS)
++   set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES 
${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES} ${SYSTEM_INCLUDE_DIRS})
++endif ()
++
+ if("${CMAKE_SYSTEM_NAME}" STREQUAL Android)
+     set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -llog")
+     set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -llog")
+-- 
+1.9.1
+
-- 
1.9.1

_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago

Reply via email to