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..51bd919 --- /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-tidl \ + 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
