6af00089337b04b34dae3ca3a33075ca3e2bf33a
[platform/upstream/armnn.git] / packaging / armnn.spec
1 Name:           armnn
2 Version:        19.11
3 Release:        0
4 License:        MIT License
5 Summary:        Arm Neural Networks library
6 Group:          Machine Learning / ML Framework
7 Source0:        %{name}-%{version}.tar.gz
8 Source1001:     %{name}.manifest
9 ExclusiveArch:  %arm aarch64
10
11 %define TF_LITE_SUPPORT 1
12 %define TF_SUPPORT 0
13 %define CAFFE_SUPPORT 0
14 %define OPEN_CL_SUPPORT 1
15
16 BuildRequires: curl
17 BuildRequires: cmake
18 BuildRequires: libarmcl-devel
19 %if 0%{?TF_SUPPORT} == 1
20 BuildRequires: protobuf-devel
21 %endif
22 %if 0%{?TF_LITE_SUPPORT} == 1
23 BuildRequires: flatbuffers
24 %endif
25 BuildRequires: icu
26 BuildRequires: libicu-devel
27 BuildRequires: boost-atomic
28 BuildRequires: boost-chrono
29 BuildRequires: boost-date-time
30 BuildRequires: boost-filesystem
31 BuildRequires: boost-log
32 BuildRequires: boost-regex
33 BuildRequires: boost-devel
34 %if 0%{?TF_LITE_SUPPORT} == 1
35 BuildRequires: tensorflow-lite-devel
36 BuildRequires: tensorflow-lite-flatbuf-schema
37 %endif
38
39 %description
40 Arm Neural Networks Library
41
42 %package devel
43 Summary: Userspace interface to ARM Neural Network Library
44 Requires: %{name} = %{version}-%{release}
45
46 %description devel
47 Summary: Userspace interface to ARM Neural Network Library
48
49 %package tools
50 Summary: Sample application and benchmark binaries to test ARM Neural Network Library
51 Requires: %{name} = %{version}-%{release}
52
53 %description tools
54 Summary: Sample application and benchmark binaries to test ARM Neural Network Library
55
56 %prep
57 %setup -q
58 cp %{SOURCE1001} .
59
60 %build
61
62 #compile proto files
63 #mkdir -p %{buildroot}/usr
64 #cp tensorflow/ %{buildroot}/usr -ar
65 #cd %{buildroot}/usr
66 #protoc tensorflow/core/framework/*.proto --cpp_out=.
67 #protoc tensorflow/core/protobuf/*.proto --cpp_out=.
68 #protoc tensorflow/core/lib/core/*.proto --cpp_out=.
69 #cd -
70
71 #build ArmNN
72 cmake -DARMCOMPUTENEON=1                                                                                        \
73 %if 0%{?OPEN_CL_SUPPORT} == 1
74       -DARMCOMPUTECL=1                                                                                          \
75           -DOPENCL_INCLUDE=/usr/include/arm_compute/core                                \
76 %endif # OPEN_CL_SUPPORT
77       -DSHARED_BOOST=1                                                                                          \
78       -DCMAKE_SKIP_RPATH=1                                                                                      \
79 %if 0%{?CAFFE_SUPPORT} == 1
80       -DBUILD_CAFFE_PARSER=1                                                                            \
81       -DCAFFE_GENERATED_SOURCES=/usr/include                                            \
82 %endif # CAFFE_SUPPORT
83 %if 0%{?TF_LITE_SUPPORT} == 1
84       -DBUILD_TF_LITE_PARSER=1                                                                          \
85       -DTF_LITE_GENERATED_PATH=/usr/include/tensorflow/lite/schema      \
86       -DTF_LITE_SCHEMA_PATH=/usr/share/tensorflow/lite/schema           \
87       -DFLATBUFFERS_INCLUDE_PATH=/usr/include/                                          \
88       -DFLATC=/usr/bin/flatc                                                                            \
89 %endif # TF_LITE_SUPPORT
90       -DBUILD_TESTS=1                                                                                           \
91           -DARMCOMPUTE_CORE_LIBRARY_DEBUG=/usr/lib/libarm_compute_core.so       \
92           -DARMCOMPUTE_CORE_LIBRARY_RELEASE=/usr/lib/libarm_compute_core.so     \
93           -DARMCOMPUTE_LIBRARY_DEBUG=/usr/lib/libarm_compute.so                         \
94           -DARMCOMPUTE_LIBRARY_RELEASE=/usr/lib/libarm_compute.so
95
96 CPU_JOB_NUM=`grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}'`
97 make -j ${CPU_JOB_NUM}
98
99 %install
100 mkdir -p %{buildroot}%{_libdir}
101 mkdir -p %{buildroot}%{_libdir}/pkgconfig
102 mkdir -p %{buildroot}%{_bindir}/armnn
103 mkdir -p %{buildroot}%{_includedir}/armnn
104 mkdir -p %{buildroot}%{_includedir}/armnn/backends
105 mkdir -p %{buildroot}%{_includedir}/armnn/backends/profiling
106 mkdir -p %{buildroot}%{_includedir}/armnn/profiling
107 mkdir -p %{buildroot}%{_includedir}/armnn/utility
108 %if 0%{?CAFFE_SUPPORT} == 1
109   mkdir -p %{buildroot}%{_includedir}/armnnCaffeParser
110 %endif # CAFFE_SUPPORT
111 %if 0%{?TF_SUPPORT} == 1
112 mkdir -p %{buildroot}%{_includedir}/armnnTfParser
113 %endif # TF_SUPPORT
114 %if 0%{?TF_LITE_SUPPORT} == 1
115   mkdir -p %{buildroot}%{_includedir}/armnnTfLiteParser
116 %endif # TF_LITE_SUPPORT
117
118 install armnn.pc %{buildroot}%{_libdir}/pkgconfig/
119
120 install -m 0755 bin/*-Armnn %{buildroot}%{_bindir}/armnn/
121 install -m 0755 bin/ExecuteNetwork %{buildroot}%{_bindir}/armnn/
122 %if 0%{?CAFFE_SUPPORT} == 1
123   install -m 0755 bin/MultipleNetworksCifar10 %{buildroot}%{_bindir}/armnn/
124 %endif # CAFFE_SUPPORT
125 install -m 0755 UnitTests %{buildroot}%{_bindir}/armnn/
126
127 install -m 0644 lib*.so %{buildroot}%{_libdir}/
128 install -m 0644 include/armnn/*.hpp %{buildroot}%{_includedir}/armnn/
129 install -m 0644 include/armnn/backends/*.hpp %{buildroot}%{_includedir}/armnn/backends/
130 install -m 0644 include/armnn/backends/profiling/*.hpp %{buildroot}%{_includedir}/armnn/backends/profiling/
131 install -m 0644 include/armnn/profiling/*.hpp %{buildroot}%{_includedir}/armnn/profiling/
132 install -m 0644 include/armnn/utility/*.hpp %{buildroot}%{_includedir}/armnn/utility/
133 %if 0%{?CAFFE_SUPPORT} == 1
134   install -m 0644 include/armnnCaffeParser/* %{buildroot}%{_includedir}/armnnCaffeParser/
135 %endif # CAFFE_SUPPORT
136 %if 0%{?TF_SUPPORT} == 1
137 install -m 0644 include/armnnTfParser/* %{buildroot}%{_includedir}/armnnTfParser/
138 %endif # TF_SUPPORT
139 %if 0%{?TF_LITE_SUPPORT} == 1
140   install -m 0644 include/armnnTfLiteParser/* %{buildroot}%{_includedir}/armnnTfLiteParser/
141 %endif # TF_LITE_SUPPORT
142
143 %post -p /sbin/ldconfig
144 %postun -p /sbin/ldconfig
145
146 %files
147 %manifest %{name}.manifest
148 %{_libdir}/*.so
149
150 %files devel
151 %manifest %{name}.manifest
152 %{_libdir}/pkgconfig/armnn.pc
153 %{_includedir}/armnn/*
154 %if 0%{?TF_LITE_SUPPORT} == 1
155 %{_includedir}/armnnTfLiteParser/*
156 %endif # TF_LITE_SUPPORT
157
158 %files tools
159 %manifest %{name}.manifest
160 %{_bindir}/armnn/*