diff --git a/armnn-generate-versioned-library.patch b/armnn-generate-versioned-library.patch index 7262752..1c99c3f 100644 --- a/armnn-generate-versioned-library.patch +++ b/armnn-generate-versioned-library.patch @@ -1,7 +1,38 @@ -diff -purN armnn-19.08.orig/CMakeLists.txt armnn-19.08/CMakeLists.txt ---- armnn-19.08.orig/CMakeLists.txt 2019-08-30 07:49:26.000000000 +0000 -+++ armnn-19.08/CMakeLists.txt 2019-09-05 08:13:37.958980306 +0000 -@@ -95,6 +95,7 @@ if(BUILD_CAFFE_PARSER) +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fc68f3af..3616ae8e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,6 +7,7 @@ project(armnn) + + set(additional_cmake_files) + list(APPEND additional_cmake_files ++ cmake/armnnVersion.cmake + cmake/Utils.cmake + cmake/GlobalConfig.cmake + cmake/AddDllCopyCommands.cmake) +@@ -15,6 +16,21 @@ foreach(cmake_file ${additional_cmake_files}) + include(${cmake_file}) + endforeach() + ++ ++# Define LIB version ++set(GENERIC_LIB_VERSION "${ARMNN_MAJOR_VERSION}.${ARMNN_MINOR_VERSION}") ++# Define LIB soversion ++set(GENERIC_LIB_SOVERSION "${ARMNN_MAJOR_VERSION}") ++# Define _ARMNN_VERSION string to be used in include/armnn/Version.hpp for ARMNN_VERSION string ++set(_ARMNN_VERSION ++ "20${ARMNN_MAJOR_VERSION}${ARMNN_MINOR_VERSION}${ARMNN_BUILD_VERSION}") ++if(${CMAKE_VERSION} VERSION_LESS "3.12.0") ++ add_definitions(-D_ARMNN_VERSION=${_ARMNN_VERSION}) ++else() ++ add_compile_definitions(_ARMNN_VERSION=${_ARMNN_VERSION}) ++endif() ++ ++ + if (DYNAMIC_BACKEND_PATHS) + # It's expected to have the format: DYNAMIC_BACKEND_PATHS="PATH_1:PATH_2...:PATH_N" + add_definitions('-DDYNAMIC_BACKEND_PATHS="${DYNAMIC_BACKEND_PATHS}"') +@@ -95,6 +111,7 @@ if(BUILD_CAFFE_PARSER) target_link_libraries(armnnCaffeParser armnn) target_link_libraries(armnnCaffeParser ${PROTOBUF_LIBRARIES}) @@ -9,7 +40,7 @@ diff -purN armnn-19.08.orig/CMakeLists.txt armnn-19.08/CMakeLists.txt endif() -@@ -119,6 +120,7 @@ if(BUILD_ONNX_PARSER) +@@ -119,6 +136,7 @@ if(BUILD_ONNX_PARSER) # Protobuf target_link_libraries(armnnOnnxParser ${PROTOBUF_LIBRARIES}) @@ -17,7 +48,7 @@ diff -purN armnn-19.08.orig/CMakeLists.txt armnn-19.08/CMakeLists.txt endif() if(BUILD_TF_PARSER) -@@ -142,6 +144,7 @@ if(BUILD_TF_PARSER) +@@ -142,6 +160,7 @@ if(BUILD_TF_PARSER) # Protobuf (use the specific version tensorflow wants) target_link_libraries(armnnTfParser ${PROTOBUF_LIBRARIES}) @@ -25,16 +56,16 @@ diff -purN armnn-19.08.orig/CMakeLists.txt armnn-19.08/CMakeLists.txt endif() if(BUILD_ARMNN_QUANTIZER AND ARMNNREF) -@@ -199,6 +202,8 @@ if(BUILD_ARMNN_QUANTIZER AND ARMNNREF) - if(Threads_FOUND AND (NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android))) +@@ -200,6 +219,8 @@ if(BUILD_ARMNN_QUANTIZER AND ARMNNREF) target_link_libraries(ArmnnQuantizer pthread) endif() -+ -+ set_target_properties(ArmnnQuantizer PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) ++ set_target_properties(ArmnnQuantizer PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) ++ endif() -@@ -484,6 +489,7 @@ endif() + +@@ -539,6 +560,7 @@ endif() if(PROFILING_BACKEND_STREAMLINE) target_link_libraries(armnn pthread) endif() @@ -42,18 +73,41 @@ diff -purN armnn-19.08.orig/CMakeLists.txt armnn-19.08/CMakeLists.txt if(BUILD_UNIT_TESTS) set(unittest_sources) -diff -purN armnn-19.08.orig/src/armnnSerializer/CMakeLists.txt armnn-19.08/src/armnnSerializer/CMakeLists.txt ---- armnn-19.08.orig/src/armnnSerializer/CMakeLists.txt 2019-08-30 07:49:26.000000000 +0000 -+++ armnn-19.08/src/armnnSerializer/CMakeLists.txt 2019-09-05 08:18:41.108319913 +0000 +diff --git a/cmake/armnnVersion.cmake b/cmake/armnnVersion.cmake +new file mode 100644 +index 00000000..68783370 +--- /dev/null ++++ b/cmake/armnnVersion.cmake +@@ -0,0 +1,4 @@ ++# ArmNN version number components. ++set(ARMNN_MAJOR_VERSION 19) ++set(ARMNN_MINOR_VERSION 08) ++set(ARMNN_BUILD_VERSION 00) +diff --git a/include/armnn/Version.hpp b/include/armnn/Version.hpp +index 9d73cd54..735be6b9 100644 +--- a/include/armnn/Version.hpp ++++ b/include/armnn/Version.hpp +@@ -9,4 +9,5 @@ + // YYYY = 4-digit year number + // MM = 2-digit month number + // PP = 2-digit patch number +-#define ARMNN_VERSION "20190800" ++// Defined in CMakeLists.txt ++#define ARMNN_VERSION _ARMNN_VERSION +diff --git a/src/armnnSerializer/CMakeLists.txt b/src/armnnSerializer/CMakeLists.txt +index 225999bb..ccc924e6 100755 +--- a/src/armnnSerializer/CMakeLists.txt ++++ b/src/armnnSerializer/CMakeLists.txt @@ -43,4 +43,5 @@ if(BUILD_ARMNN_SERIALIZER) install(TARGETS armnnSerializer LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + set_target_properties(armnnSerializer PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) endif() -diff -purN armnn-19.08.orig/src/armnnTfLiteParser/CMakeLists.txt armnn-19.08/src/armnnTfLiteParser/CMakeLists.txt ---- armnn-19.08.orig/src/armnnTfLiteParser/CMakeLists.txt 2019-08-30 07:49:26.000000000 +0000 -+++ armnn-19.08/src/armnnTfLiteParser/CMakeLists.txt 2019-09-05 08:20:47.788043949 +0000 +diff --git a/src/armnnTfLiteParser/CMakeLists.txt b/src/armnnTfLiteParser/CMakeLists.txt +index 17d4cf68..ae60079a 100755 +--- a/src/armnnTfLiteParser/CMakeLists.txt ++++ b/src/armnnTfLiteParser/CMakeLists.txt @@ -21,6 +21,8 @@ if(BUILD_TF_LITE_PARSER) target_link_libraries(armnnTfLiteParser ${Boost_FILESYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY}) target_link_libraries(armnnTfLiteParser armnn ${FLATBUFFERS_LIBRARY}) diff --git a/armnn.changes b/armnn.changes index 768d9a9..de7510f 100644 --- a/armnn.changes +++ b/armnn.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Mon Oct 7 13:00:59 UTC 2019 - Guillaume GARDET + +- Replace patch with an upstreamable version: + * armnn-generate-versioned-library.patch + +------------------------------------------------------------------- +Tue Oct 1 19:04:50 UTC 2019 - Guillaume GARDET + +- Add ONNX Parser support (disabled by default as there is no + official ONNX package yet) + ------------------------------------------------------------------- Tue Oct 1 14:30:13 UTC 2019 - Guillaume GARDET diff --git a/armnn.spec b/armnn.spec index e8dfa01..f7827ac 100644 --- a/armnn.spec +++ b/armnn.spec @@ -65,6 +65,9 @@ %bcond_with armnn_tf %endif # suse_version +# Disable ONNX +%bcond_with armnn_onnx + %define version_major 19 %define version_minor 08 @@ -77,7 +80,7 @@ Group: Development/Libraries/Other Url: https://developer.arm.com/products/processors/machine-learning/arm-nn Source0: https://github.com/ARM-software/armnn/archive/v%{version}.tar.gz#/armnn-%{version}.tar.gz Source1: armnn-rpmlintrc -# PATCH: based on http://arago-project.org/git/?p=meta-arago.git;a=blob;f=meta-arago-extras/recipes-support/armnn/armnn/0004-generate-versioned-library.patch;hb=master +# PATCH-FIX-UPSTREAM - https://github.com/ARM-software/armnn/issues/275 Patch1: armnn-generate-versioned-library.patch # Patch: http://arago-project.org/git/?p=meta-arago.git;a=blob;f=meta-arago-extras/recipes-support/armnn/armnn/0007-enable-use-of-arm-compute-shared-library.patch;hb=master Patch2: 0007-enable-use-of-arm-compute-shared-library.patch @@ -115,6 +118,9 @@ BuildRequires: Mesa-libOpenCL BuildRequires: ocl-icd-devel BuildRequires: opencl-cpp-headers %endif +%if %{with armnn_onnx} +BuildRequires: python3-onnx-devel +%endif BuildRequires: protobuf-devel BuildRequires: python-rpm-macros %if %{with armnn_tests} @@ -136,6 +142,9 @@ Requires: libarmnnTfLiteParser%{version_major}%{?package_suffix} = %{versi %if %{with armnn_caffe} Requires: libarmnnCaffeParser%{version_major}%{?package_suffix} = %{version} %endif +%if %{with armnn_onnx} +Requires: libarmnnOnnxParser%{version_major}%{?package_suffix} = %{version} +%endif %if %{with armnn_tf} Requires: libarmnnTfParser%{version_major}%{?package_suffix} = %{version} %endif @@ -166,6 +175,9 @@ Requires: libarmnnTfLiteParser%{version_major}%{?package_suffix} = %{versi %if %{with armnn_caffe} Requires: libarmnnCaffeParser%{version_major}%{?package_suffix} = %{version} %endif +%if %{with armnn_onnx} +Requires: libarmnnOnnxParser%{version_major}%{?package_suffix} = %{version} +%endif %if %{with armnn_tf} Requires: libarmnnTfParser%{version_major}%{?package_suffix} = %{version} %endif @@ -275,6 +287,26 @@ modification – across Arm Cortex CPUs and Arm Mali GPUs. This package contains the libarmnnCaffeParser library from armnn. %endif +%if %{with armnn_onnx} +%package -n libarmnnOnnxParser%{version_major}%{?package_suffix} +%if "%{target}" == "opencl" +Conflicts: libarmnnOnnxParser%{version_major} +%else +Conflicts: libarmnnOnnxParser%{version_major}-opencl +%endif +Summary: libarmnnOnnxParser from armnn +Group: Development/Libraries/C and C++ + +%description -n libarmnnOnnxParser%{version_major}%{?package_suffix} +Arm NN is an inference engine for CPUs, GPUs and NPUs. +It bridges the gap between existing NN frameworks and the underlying IP. +It enables efficient translation of existing neural network frameworks, +such as TensorFlow and Caffe, allowing them to run efficiently – without +modification – across Arm Cortex CPUs and Arm Mali GPUs. + +This package contains the libarmnnOnnxParser library from armnn. +%endif + %prep %setup -q -n armnn-%{version} %patch1 -p1 @@ -291,9 +323,12 @@ sed -i 's/find_package(Boost 1.59 REQUIRED COMPONENTS unit_test_framework system sed -i 's/-Wsign-conversion//' ./cmake/GlobalConfig.cmake %build +%if %{with armnn_onnx} +mkdir onnx_deps +PROTO=$(find %{_libdir} -name onnx.proto) +protoc $PROTO --proto_path=. --proto_path=%{_includedir} --proto_path=$(dirname $(find %{_libdir} -name onnx)) --cpp_out=./onnx_deps +%endif %cmake \ - -DGENERIC_LIB_VERSION=%{version} \ - -DGENERIC_LIB_SOVERSION=%{version_major} \ -DCMAKE_CXX_FLAGS:STRING="%{optflags} -pthread" \ -DBOOST_LIBRARYDIR=%{_libdir} \ %if %{with armnn_caffe} @@ -302,7 +337,12 @@ sed -i 's/-Wsign-conversion//' ./cmake/GlobalConfig.cmake -DBUILD_CAFFE_PARSER=OFF \ %endif -DCAFFE_GENERATED_SOURCES=%{_includedir}/ \ +%if %{with armnn_onnx} + -DBUILD_ONNX_PARSER=ON \ + -DONNX_GENERATED_SOURCES=../onnx_deps/ \ +%else -DBUILD_ONNX_PARSER=OFF \ +%endif %if %{with armnn_flatbuffers} -DBUILD_ARMNN_SERIALIZER=ON \ -DFLATC_DIR=%{_bindir} \ @@ -408,6 +448,11 @@ LD_LIBRARY_PATH="$(pwd)/build/" \ %postun -n libarmnnCaffeParser%{version_major}%{?package_suffix} -p /sbin/ldconfig %endif +%if %{with armnn_onnx} +%post -n libarmnnOnnxParser%{version_major}%{?package_suffix} -p /sbin/ldconfig +%postun -n libarmnnOnnxParser%{version_major}%{?package_suffix} -p /sbin/ldconfig +%endif + %files %defattr(-,root,root) @@ -423,6 +468,9 @@ LD_LIBRARY_PATH="$(pwd)/build/" \ %{_bindir}/TfLite*-Armnn %{_bindir}/Image*Generator %endif +%if %{with armnn_onnx} +%{_bindir}/Onnx*-Armnn +%endif %if %{with armnn_tf} %{_bindir}/Tf*-Armnn %endif @@ -452,6 +500,11 @@ LD_LIBRARY_PATH="$(pwd)/build/" \ %{_libdir}/libarmnnCaffeParser.so.* %endif +%if %{with armnn_onnx} +%files -n libarmnnOnnxParser%{version_major}%{?package_suffix} +%{_libdir}/libarmnnOnnxParser.so.* +%endif + %files devel %defattr(-,root,root) %dir %{_includedir}/armnn/ @@ -481,6 +534,9 @@ LD_LIBRARY_PATH="$(pwd)/build/" \ %if %{with armnn_caffe} %{_libdir}/libarmnnCaffeParser.so %endif +%if %{with armnn_onnx} +%{_libdir}/libarmnnOnnxParser.so +%endif %changelog