[Tizen] Fix gcov build error
[platform/upstream/nnstreamer.git] / packaging / nnstreamer.spec
1 ###########################################################################
2 #
3 #              Options for gbs/rpmbuild users
4 #
5 # gbs -c .TAOS-CI/.gbs.conf build --define "unit_test 1"
6 #       Execute all unit test cases
7 #
8 # gbs -c .TAOS-CI/.gbs.conf build --define "testcoverage 1"
9 #       Generate unittest coverage statistics
10 #       Use with "unit_test 1" to do it with as many cases as possible:
11 #       $ gbs -c .TAOS-CI/.gbs.conf build --define "unit_test 1" --define "testcoverage 1"
12 #
13
14 %define         gstpostfix      gstreamer-1.0
15 %define         gstlibdir       %{_libdir}/%{gstpostfix}
16 %define         nnstbindir      lib/nnstreamer/bin
17 %define         builddir        build
18
19 ###########################################################################
20 # Default features for Tizen releases
21 # If you want to build RPM for other Linux distro, you may need to
22 # touch these values for your needs.
23 %define         tensorflow_support 0
24 %define         tensorflow_lite_support 1
25 %define         tensorflow2_lite_support 1
26 %define         armnn_support 0
27 %define         vivante_support 0
28 %define         flatbuf_support 1
29 %define         protobuf_support 1
30 %define         nnfw_support 1
31 %define         grpc_support 1
32 %define         pytorch_support 0
33 %define         caffe2_support 0
34 %define         mqtt_support 1
35 %define         lua_support 1
36 %define         tvm_support 1
37 %define         snpe_support 1
38 %define         trix_engine_support 1
39 %define         onnxruntime_support 1
40 # Support AI offloading (tensor_query) using nnstreamer-edge interface
41 %define         nnstreamer_edge_support 1
42 %define         datarepo_support 1
43
44 %define         check_test 1
45 %define         release_test 1
46
47 ###########################################################################
48 # Conditional features for Tizen releases
49
50 # Enable python if it's Tizen 5.0+
51 %if 0%{tizen_version_major} >= 5
52 %define         python3_support 1
53 %else
54 %define         python3_support 0
55 %endif
56
57 # Enable Tizen-Sensor, OpenVINO, MVNCSDK2 if it's Tizen 6.0+
58 %if 0%{tizen_version_major} >= 6
59 %define         tizen_sensor_support 1
60 %define         mvncsdk2_support 1
61 %define         openvino_support 1
62 %define         edgetpu_support 1
63 %else
64 %define         tizen_sensor_support 0
65 %define         mvncsdk2_support 0
66 %define         openvino_support 0
67 %define         edgetpu_support 0
68 %endif
69
70 # tizen 6.0 (or less) backward-compatibility check
71 %if ( 0%{?tizen_version_major} == 6 && 0%{?tizen_version_minor} < 5 ) || 0%{?tizen_version_major} < 6
72 %define         grpc_support 0
73 %define         tensorflow2_lite_support 0
74 %define         trix_engine_support 0
75 %endif
76
77 # Disable e-TPU if it's not 64bit system
78 %ifnarch aarch64 x86_64
79 %define         edgetpu_support 0
80 %endif
81
82 # Disable ARMNN/Vivante/NNFW if it's not ARM.
83 %ifnarch %arm aarch64
84 %define         armnn_support 0
85 %define         vivante_support 0
86 %endif
87
88 # Disable NNFW if it's not ARM/x64 and x86
89 %ifnarch %arm aarch64 x86_64 i586 i686 %ix86
90 %define         nnfw_support 0
91 %endif
92
93 # Disable a few features for TV releases
94 %if "%{?profile}" == "tv"
95 %define         grpc_support 0
96 %define         check_test 0
97 %define         edgetpu_support 0
98 %define         protobuf_support 0
99 %define         python3_support 0
100 %define         mvncsdk2_support 0
101 %define         openvino_support 0
102 %define         nnfw_support 0
103 %define         armnn_support 0
104 %define         vivante_support 0
105 %define         pytorch_support 0
106 %define         caffe2_support 0
107 %define         tensorflow_support 0
108 %define         lua_support 0
109 %define         mqtt_support 0
110 %define         tvm_support 0
111 %define         snpe_support 0
112 %define         trix_engine_support 0
113 %define         onnxruntime_support 0
114 %define         nnstreamer_edge_support 0
115 %endif
116
117 # DA requested to remove unnecessary module builds
118 %if 0%{?_with_da_profile}
119 %define         mvncsdk2_support 0
120 %define         edgetpu_support 0
121 %define         openvino_support 0
122 %define         edgetpu_support 0
123 %define         armnn_support 0
124 %define         lua_support 0
125 %define         mqtt_support 0
126 %define         tvm_support 0
127 %define         trix_engine_support 0
128 %define         onnxruntime_support 0
129 %endif
130
131 # Release unit test suite as a subpackage only if check_test is enabled.
132 %if !0%{?check_test}
133 %define         release_test 0
134 %endif
135
136 # Current Tizen Robot profile only supports aarch64.
137 %ifnarch aarch64
138 %define         snpe_support 0
139 %endif
140
141 # If it is tizen, we can export Tizen API packages.
142 %bcond_with tizen
143
144 ###########################################################################
145 # Package / sub-package definitions
146 Name:           nnstreamer
147 Summary:        gstreamer plugins for neural networks
148 # Synchronize the version information among Ubuntu, Tizen, Android, and Meson.
149 # 1. Ubuntu : ./debian/changelog
150 # 2. Tizen  : ./packaging/nnstreamer.spec
151 # 3. Android: ./jni/nnstreamer.mk
152 # 4. Meson  : ./meson.build
153 Version:        2.4.1
154 Release:        0
155 Group:          Machine Learning/ML Framework
156 Packager:       MyungJoo Ham <myungjoo.ham@samsung.com>
157 License:        LGPL-2.1
158 Source0:        nnstreamer-%{version}.tar
159 Source1001:     nnstreamer.manifest
160
161 ## Define requirements ##
162 Requires: nnstreamer-core = %{version}-%{release}
163 Requires: nnstreamer-configuration = %{version}-%{release}
164 Requires: nnstreamer-single = %{version}-%{release}
165 Recommends: nnstreamer-default-configuration = %{version}-%{release}
166 %if 0%{?nnstreamer_edge_support}
167 BuildRequires: nnstreamer-edge-devel
168 %endif
169
170 ## Define build requirements ##
171 BuildRequires:  gstreamer-devel
172 BuildRequires:  gst-plugins-base-devel
173 BuildRequires:  gst-plugins-bad-devel
174 BuildRequires:  glib2-devel
175 BuildRequires:  meson >= 0.50.0
176
177 # To run test cases, we need gst plugins
178 BuildRequires:  gst-plugins-good
179 %if 0%{tizen_version_major} >= 5
180 BuildRequires:  gst-plugins-good-extra
181 %endif
182 BuildRequires:  gst-plugins-base
183 # and gtest
184 BuildRequires:  gtest-devel
185 # a few test cases uses python
186 %if 0%{?check_test}
187 BuildRequires:  python3
188 %endif
189 %if 0%{?python3_support}
190 # for python3 custom filters
191 BuildRequires:  python3-devel
192 BuildRequires:  python3-numpy-devel
193 %endif
194 # Testcase requires bmp2png, which requires libpng
195 BuildRequires:  pkgconfig(libpng)
196 %if 0%{?flatbuf_support}
197 # for flatbuffers
198 BuildRequires: flatbuffers-devel
199 %if 0%{?unit_test}
200 BuildRequires: flatbuffers-python
201 %endif
202 %endif
203 %if 0%{?tensorflow_lite_support}
204 # for tensorflow-lite
205 BuildRequires: tensorflow-lite-devel
206 %endif
207 %if 0%{?tensorflow2_lite_support}
208 # for tensorflow2-lite
209 BuildRequires: tensorflow2-lite-devel
210 # tensorflow2-lite-custom requires scripts for rpm >= 4.9
211 BuildRequires:  rpm >= 4.9
212 %global __requires_exclude ^libtensorflow2-lite-custom.*$
213 %endif
214 # custom_example_opencv filter requires opencv-devel
215 BuildRequires: opencv-devel
216 # For './testAll.sh' time limit.
217 BuildRequires: procps
218 # for protobuf
219 %if 0%{?protobuf_support}
220 BuildRequires: protobuf-devel >= 3.4.0
221 %endif
222 # for tensorflow
223 %if 0%{?tensorflow_support}
224 BuildRequires: tensorflow
225 BuildRequires: tensorflow-devel
226 %endif
227 # for armnn
228 %if 0%{?armnn_support}
229 BuildRequires: armnn-devel
230 %endif
231
232 %if 0%{?edgetpu_support}
233 BuildRequires:  pkgconfig(edgetpu)
234 %endif
235
236 %if 0%{?testcoverage}
237 # to be compatible with gcc-9, lcov should have a higher version than 1.14.1
238 BuildRequires: lcov
239 # BuildRequires:        taos-ci-unittest-coverage-assessment
240 %endif
241
242 %if 0%{mvncsdk2_support}
243 BuildRequires:  pkgconfig(libmvnc)
244 %endif
245
246 %if 0%{openvino_support}
247 BuildRequires:  pkgconfig(openvino)
248 %endif
249
250 # for Vivante
251 # TODO: dann and opencv will be removed in the near future.
252 %if 0%{?vivante_support}
253 BuildRequires:  pkgconfig(opencv)
254 BuildRequires:  pkgconfig(dann)
255 BuildRequires:  pkgconfig(ovxlib)
256 BuildRequires:  pkgconfig(amlogic-vsi-npu-sdk)
257 %endif
258
259 %if 0%{?grpc_support}
260 BuildRequires:  grpc-devel
261 %endif
262
263 %if %{with tizen}
264 BuildRequires:  pkgconfig(dlog)
265 # For tizen sensor support
266 BuildRequires:  pkgconfig(sensor)
267 BuildRequires:  capi-system-sensor-devel
268 %endif  # tizen
269
270 %if 0%{?nnfw_support}
271 # Tizen 5.5 M2+ support nn-runtime (nnfw)
272 # As of 2019-09-24, unfortunately, nnfw does not support pkg-config
273 BuildRequires:  nnfw-devel
274 %endif
275
276 %if 0%{?pytorch_support}
277 BuildRequires:  pytorch-devel
278 %endif
279
280 # Caffe2 is merged to pytorch
281 %if 0%{?caffe2_support}
282 BuildRequires:  pytorch-devel
283 %endif
284
285 %if 0%{?lua_support}
286 BuildRequires:  lua-devel
287 %endif
288
289 %if 0%{?tvm_support}
290 BuildRequires:  tvm-runtime-devel
291 %endif
292
293 %if 0%{?snpe_support}
294 BuildRequires:  snpe-devel
295 %endif
296
297 %if 0%{?trix_engine_support}
298 BuildRequires:  npu-engine-devel
299 %endif
300
301 %if 0%{?onnxruntime_support}
302 BuildRequires: onnxruntime-devel
303 %endif
304
305 # Unit Testing Uses SSAT (https://github.com/myungjoo/SSAT.git)
306 %if 0%{?unit_test} || 0%{?edge_test}
307 BuildRequires:  ssat >= 1.1.0
308 # Mosquitto MQTT broker for unit testing
309 BuildRequires:  mosquitto
310 %endif
311
312 # For ORC (Oil Runtime Compiler)
313 BuildRequires:  pkgconfig(orc-0.4)
314
315 # For nnstreamer-parser
316 BuildRequires:  flex
317 BuildRequires:  bison
318
319 # For datarepo or ml-agent
320 #TODO: the dependency on ml-agent should be changed from mandatory to optional
321 %if 0%{?datarepo_support} || 0%{?ml_agent_support}
322 BuildRequires: pkgconfig(json-glib-1.0)
323 %endif
324
325 # For ml-agent
326 %if 0%{?ml_agent_support}
327 BuildRequires: pkgconfig(mlops-agent)
328 %endif
329
330 # Note that debug packages generate an additional build and storage cost.
331 # If you do not need debug packages, run '$ gbs -c .TAOS-CI/.gbs.conf build ... --define "_skip_debug_rpm 1"'.
332
333 %if "%{?_skip_debug_rpm}" == "1"
334 %global debug_package %{nil}
335 %global __debug_install_post %{nil}
336 %endif
337
338 ## Define Packages ##
339 %description
340 NNStreamer is a set of gstreamer plugins to support general neural networks
341 and their plugins in a gstreamer stream. NNStreamer is a meta package of
342 nnstreamer-core and nnstreamer-configuration
343
344 %package core
345 Requires: gstreamer >= 1.8.0
346 %if 0%{?nnstreamer_edge_support}
347 Requires: nnstreamer-edge
348 %endif
349 Summary: NNStreamer core package
350 %description core
351 NNStreamer is a set of gstreamer plugins to support general neural networks
352 and their plugins in a gstreamer stream, this package is core package without configuration
353
354 %package single
355 Summary: NNStreamer singe-shot package
356 %description single
357 Element to use general neural network framework directly without gstreamer pipeline.
358
359 %package default-configuration
360 Summary: NNStreamer global configuration
361 Provides: nnstreamer-configuration = %{version}-%{release}
362 Conflicts: nnstreamer-test-devel
363 %description default-configuration
364 NNStreamer's global configuration setup for the end user.
365
366 # for tensorflow
367 %if 0%{?tensorflow_support}
368 %package tensorflow
369 Summary:        NNStreamer TensorFlow Support
370 Requires:       nnstreamer-single = %{version}-%{release}
371 Requires:       tensorflow
372 %description tensorflow
373 NNStreamer's tensor_filter subplugin of TensorFlow.
374 It uses C-API of tensorflow, which is not yet stable as of 1.1x.
375 Thus, the user needs to check the version of Tensorflow with the
376 Tensorflow used for building this package.
377 %endif
378
379 # for tensorflow-lite
380 %if 0%{?tensorflow_lite_support}
381 %package tensorflow-lite
382 Summary:        NNStreamer TensorFlow Lite Support
383 Requires:       nnstreamer-single = %{version}-%{release}
384 # tensorflow-lite provides .a file and it's embedded into the subplugin. No dep to tflite.
385 %description tensorflow-lite
386 NNStreamer's tensor_filter subplugin of TensorFlow Lite.
387 %endif
388
389 # for tensorflow2-lite
390 %if 0%{?tensorflow2_lite_support}
391 %package tensorflow2-lite
392 Summary:        NNStreamer TensorFlow2 Lite Support
393 Requires:       nnstreamer-single = %{version}-%{release}
394 # tensorflow2-lite provides .a file and it's embedded into the subplugin. No dep to tflite.
395 %description tensorflow2-lite
396 NNStreamer's tensor_filter subplugin of TensorFlow2 Lite.
397 %endif
398
399 %if 0%{?python3_support}
400 %package python3
401 Summary:  NNStreamer Python3 Custom Filter Support
402 Requires: nnstreamer = %{version}-%{release}
403 %description python3
404 NNStreamer's tensor_filter subplugin of Python3.
405 %endif
406
407 %if 0%{?armnn_support}
408 %package armnn
409 Summary:        NNStreamer Arm NN support
410 Requires:       nnstreamer-single = %{version}-%{release}
411 Requires:       armnn
412 %description armnn
413 NNStreamer's tensor_filter subplugin of Arm NN Inference Engine.
414 %endif
415
416 # Support vivante subplugin
417 %if 0%{?vivante_support}
418 %package vivante
419 Summary:    NNStreamer subplugin for Verisilicon's Vivante
420 Requires:   nnstreamer-single = %{version}-%{release}
421 %description vivante
422 NNStreamer filter subplugin for Verisilicon Vivante.
423 %define enable_vivante -Denable-vivante=true
424 %else
425 %define enable_vivante -Denable-vivante=false
426 %endif
427
428 # for protobuf
429 %if 0%{?protobuf_support}
430 %package    protobuf
431 Summary:        NNStreamer Protobuf Support
432 Requires:       nnstreamer = %{version}-%{release}
433 Requires:       protobuf
434 %description protobuf
435 NNStreamer's tensor_converter and decoder subplugin of Protobuf.
436 %endif
437
438 # for flatbuf
439 %if 0%{?flatbuf_support}
440 %package    flatbuf
441 Summary:        NNStreamer Flatbuf Support
442 Requires:       nnstreamer = %{version}-%{release}
443 Requires:       flatbuffers
444 %description flatbuf
445 NNStreamer's tensor_converter and decoder subplugin of flatbuf.
446 %endif
447
448 # for pytorch
449 %if 0%{?pytorch_support}
450 %package pytorch
451 Summary:        NNStreamer PyTorch Support
452 Requires:       nnstreamer-single = %{version}-%{release}
453 Requires:       pytorch
454 %description pytorch
455 NNStreamer's tensor_filter subplugin of pytorch
456 %endif
457
458 # for caffe2
459 %if 0%{?caffe2_support}
460 %package caffe2
461 Summary:        NNStreamer caffe2 Support
462 Requires:       nnstreamer-single = %{version}-%{release}
463 Requires:       pytorch
464 %description caffe2
465 NNStreamer's tensor_filter subplugin of caffe2
466 %endif
467
468 # for lua
469 %if 0%{?lua_support}
470 %package lua
471 Summary:        NNStreamer lua Support
472 Requires:       nnstreamer-single = %{version}-%{release}
473 Requires:       lua
474 %description lua
475 NNStreamer's tensor_filter subplugin of lua
476 %endif
477
478 %if 0%{?tvm_support}
479 %package tvm
480 Summary:        NNStreamer TVM support
481 Requires:       nnstreamer = %{version}-%{release}
482 Requires:       tvm
483 %description tvm
484 NNStreamer's tensor_filter subplugin of tvm
485 %endif
486
487 # for snpe
488 %if 0%{?snpe_support}
489 %package snpe
490 Summary:        NNStreamer snpe Support
491 Requires:       nnstreamer-single = %{version}-%{release}
492 Requires:       snpe
493 %description snpe
494 NNStreamer's tensor_filter subplugin of snpe
495 %endif
496
497 # for trix-engone
498 %if 0%{?trix_engine_support}
499 %package trix-engine
500 Summary:        NNStreamer TRIx-Engine support
501 Requires:       nnstreamer-single = %{version}-%{release}
502 Requires:       trix-engine
503 %description trix-engine
504 NNStreamer's tensor_filter subplugin of trix-engine
505 %endif
506
507 # for onnxruntime
508 %if 0%{?onnxruntime_support}
509 %package onnxruntime
510 Summary:        NNStreamer onnxruntime Support
511 Requires:       nnstreamer-single = %{version}-%{release}
512 Requires:       onnxruntime
513 %description onnxruntime
514 NNStreamer's tensor_filter subplugin of onnxruntime
515 %endif
516
517 %package devel
518 Summary:        Development package for custom tensor operator developers (tensor_filter/custom)
519 Requires:       nnstreamer = %{version}-%{release}
520 Requires:       nnstreamer-single-devel = %{version}-%{release}
521 Requires:       glib2-devel
522 Requires:       gstreamer-devel
523 %description devel
524 Development package for subplugin or custom filter developers.
525 Developers may add support for new hardware accelerators or neural network
526 frameworks, or introduce new data types and their converters for tensors.
527 However, applications or service developers generally do not need this.
528 This contains corresponding header files and .pc pkgconfig file.
529
530 %package devel-internal
531 Summary:    Development package to access internal functions of NNStreamer
532 Requires:   nnstreamer-devel = %{version}-%{release}
533 %description devel-internal
534 Development package to access internal functions of NNStreamer.
535 This may be used by API packages, which wrap nnstreamer features.
536 In most cases, custom-filter or subplugin authors do not need this internal devel package; however, if they want to access more internal functions, they may need this.
537
538 %package devel-static
539 Summary:    Static library for nnstreamer-devel package
540 Requires:   nnstreamer-devel = %{version}-%{release}
541 %description devel-static
542 Static library package of nnstreamer-devel.
543
544 %package single-devel
545 Summary:    Development package for NNStreamer single-shot
546 Requires:   nnstreamer-single = %{version}-%{release}
547 %description single-devel
548 Development package for NNStreamer single-shot.
549
550 %package single-devel-static
551 Summary:    Static library for nnstreamer-single-devel package
552 Requires:   nnstreamer-single-devel = %{version}-%{release}
553 %description single-devel-static
554 Static library package of nnstreamer-single-devel.
555
556 %package test-devel
557 Summary: Development package to provide testable environment of a subplugin (tensor_filter/custom)
558 Requires: nnstreamer-devel = %{version}-%{release}
559 Requires: nnstreamer-single-devel = %{version}-%{release}
560 Provides: nnstreamer-configuration = %{version}-%{release}
561 Conflicts: nnstreamer-default-configuration
562 %description test-devel
563 Development package to provide testable environment of NNStreamer sub-plugin.
564 This package enables testable environment of NNStreamer sub-plugin by making nnstreamer to recognize NNSTREAMER_CONF_PATH to steer a sub-plugin path to a custom path.
565 Also This package provides test templates to be used with.
566
567 %if 0%{?testcoverage}
568 %package unittest-coverage
569 Summary:        NNStreamer UnitTest Coverage Analysis Result
570 %description unittest-coverage
571 HTML pages of lcov results of NNStreamer generated during rpmbuild
572 %endif
573
574 %if 0%{?nnfw_support}
575 %package nnfw
576 Summary:        NNStreamer Tizen-nnfw runtime support
577 Requires:       nnstreamer-single = %{version}-%{release}
578 Requires:       nnfw
579 %description nnfw
580 NNStreamer's tensor_filter subplugin of Tizen-NNFW Runtime. (5.5 M2 +)
581 %endif
582
583 %if 0%{?mvncsdk2_support}
584 %package        ncsdk2
585 Summary:        NNStreamer Intel Movidius NCSDK2 support
586 Requires:       nnstreamer-single = %{version}-%{release}
587 Group:          Machine Learning/ML Framework
588 %description    ncsdk2
589 NNStreamer's tensor_filter subplugin of Intel Movidius Neural Compute stick SDK2.
590 %endif # mvncsdk2_support
591
592 %if 0%{openvino_support}
593 %package        openvino
594 Summary:        NNStreamer OpenVino support
595 Requires:       nnstreamer-single = %{version}-%{release}
596 Requires:       openvino
597 Group:          Machine Learning/ML Framework
598 %description    openvino
599 NNStreamer's tensor_filter subplugin for OpenVino support.
600 %endif # openvino_support
601
602 # Add Tizen's sensor framework API integration
603 %if 0%{tizen_sensor_support}
604 %package tizen-sensor
605 Summary:        NNStreamer integration of tizen sensor framework (tensor_src_tizensensor)
606 Requires:       nnstreamer = %{version}-%{release}
607 Requires:       capi-system-sensor
608 %description tizen-sensor
609 You can include Tizen sensor framework nodes as source elements of GStreamer/NNStreamer pipelines with this package.
610 %endif # tizen_sensor_support
611
612 %if 0%{grpc_support}
613 %package grpc
614 Summary:        NNStreamer gRPC support
615 Requires:       nnstreamer = %{version}-%{release}
616 %if %{with tizen}
617 Recommends:     nnstreamer-grpc-protobuf = %{version}-%{release}
618 Recommends:     nnstreamer-grpc-flatbuf = %{version}-%{release}
619 %endif
620 %description  grpc
621 NNStreamer's tensor_source/sink plugins for gRPC support.
622
623 %if 0%{protobuf_support}
624 %package grpc-protobuf
625 Summary:        NNStreamer gRPC/Protobuf support
626 Requires:       nnstreamer-grpc = %{version}-%{release}
627 Requires:       nnstreamer-protobuf = %{version}-%{release}
628 %description  grpc-protobuf
629 NNStreamer's gRPC IDL support for protobuf
630 %endif
631
632 %if 0%{flatbuf_support}
633 %package grpc-flatbuf
634 Summary:        NNStreamer gRPC/Flatbuf support
635 Requires:       nnstreamer-grpc = %{version}-%{release}
636 Requires:       nnstreamer-flatbuf = %{version}-%{release}
637 %description  grpc-flatbuf
638 NNStreamer's gRPC IDL support for flatbuf
639 %endif
640
641 %endif # grpc_support
642
643 %if 0%{?edgetpu_support}
644 %package edgetpu
645 Summary:        NNStreamer plugin for Google-Coral Edge TPU
646 Requires:       libedgetpu1
647 Requires:       nnstreamer-single = %{version}-%{release}
648 %description edgetpu
649 You may enable this package to use Google Edge TPU with NNStreamer and Tizen ML APIs.
650 %endif
651
652 %if 0%{?release_test}
653 %package unittests
654 Summary:        NNStreamer unittests for core and plugins
655 Requires:       nnstreamer = %{version}-%{release}
656 %description unittests
657 Various unit test cases and custom subplugin examples for NNStreamer.
658 %endif
659
660 %package util
661 Summary:        NNStreamer developer utilities
662 %description util
663 NNStreamer developer utilities include nnstreamer configuration checker.
664
665 %package misc
666 Summary:        NNStreamer extra packages
667 %if 0%{?mqtt_support}
668 BuildRequires:  pkgconfig(paho-mqtt-c)
669 %endif
670 %description misc
671 Provides additional gstreamer plugins for nnstreamer pipelines
672
673 %if 0%{?datarepo_support}
674 %package datarepo
675 Summary: NNStreamer MLOps Data Repository plugin packages
676 %description datarepo
677 NNStreamer's datareposrc/sink plugins for reading and writing files in MLOps Data Repository
678 %define enable_datarepo -Ddatarepo-support=enabled
679 %else
680 %define enable_datarepo -Ddatarepo-support=disabled
681 %endif
682
683 ## Define build options ##
684 %define enable_tizen -Denable-tizen=false
685 %define enable_tizen_sensor -Denable-tizen-sensor=false
686 %define enable_mvncsdk2 -Dmvncsdk2-support=disabled
687 %define enable_openvino -Denable-openvino=false
688 %define enable_nnfw_runtime -Dnnfw-runtime-support=disabled
689 %define element_restriction -Denable-element-restriction=false
690 %define enable_test -Denable-test=true
691 %define install_test -Dinstall-test=false
692
693 %if 0%{mvncsdk2_support}
694 %define enable_mvncsdk2 -Dmvncsdk2-support=enabled
695 %endif
696
697 %if 0%{openvino_support}
698 %define enable_openvino -Denable-openvino=true
699 %endif
700
701 %if 0%{?nnfw_support}
702 %define enable_nnfw_runtime -Dnnfw-runtime-support=enabled
703 %endif  # nnfw_support
704
705 %if 0%{tizen_sensor_support}
706 %define enable_tizen_sensor -Denable-tizen-sensor=true
707 %endif
708
709 %if !0%{?check_test}
710 %define enable_test -Denable-test=false
711 %endif
712
713 %if 0%{?release_test}
714 %define install_test -Dinstall-test=true
715 %endif
716
717 %if %{with tizen}
718 %define enable_tizen -Denable-tizen=true -Dtizen-version-major=0%{tizen_version_major}
719 # Element allowance in Tizen
720 %define allowed_element_base     'capsfilter identity input-selector output-selector queue tee valve appsink appsrc audioconvert audiorate audioresample audiomixer videoconvert videocrop videorate videoscale videoflip videomixer compositor fakesrc fakesink filesrc filesink multifilesrc multifilesink audiotestsrc videotestsrc jpegparse jpegenc jpegdec pngenc pngdec xvimagesink ximagesink evasimagesink evaspixmapsink glimagesink theoraenc lame vorbisenc wavenc volume oggmux avimux matroskamux v4l2src pulsesrc '
721 %define allowed_element_edgeai   'rtpdec rtspsrc rtspclientsink zmqsrc zmqsink mqttsrc mqttsink udpsrc udpsink multiudpsink tcpclientsink tcpclientsrc tcpserversink tcpserversrc edgesrc edgesink gdppay gdpdepay '
722 %define allowed_element_audio    'audioamplify audiochebband audiocheblimit audiodynamic audioecho audiofirfilter audioiirfilter audioinvert audiokaraoke audiopanorama audiowsincband audiowsinclimit scaletempo stereo '
723 %define allowed_element_tizen    'tizencamerasrc avsysvideosrc camerasrc tvcamerasrc fimcconvert tizenwlsink '
724 %define allowed_element_extra    'join datareposrc datareposink '
725
726 %define allowed_element_all      %{allowed_element_base}%{allowed_element_audio}%{allowed_element_edgeai}%{allowed_element_tizen}%{allowed_element_extra}
727 %if "%{?profile}" == "tv"
728 %define allowed_element_vd       'tvdpbsrc '
729 %define allowed_element          %{allowed_element_all}%{allowed_element_vd}
730 %else
731 %define allowed_element          %{allowed_element_all}
732 %endif
733 %define element_restriction -Denable-element-restriction=true -Dallowed-elements=%{allowed_element}
734 %endif #if tizen
735
736 # Support tensorflow
737 %if 0%{?tensorflow_support}
738 %define enable_tf -Dtf-support=enabled
739 %else
740 %define enable_tf -Dtf-support=disabled
741 %endif
742
743 # Support tensorflow-lite
744 %if 0%{?tensorflow_lite_support}
745 %define enable_tf_lite -Dtflite-support=enabled
746 %else
747 %define enable_tf_lite -Dtflite-support=disabled
748 %endif
749
750 # Support tensorflow2-lite
751 %if 0%{?tensorflow2_lite_support}
752 %define enable_tf2_lite -Dtflite2-support=enabled -Dtflite2-custom-support=enabled
753 %else
754 %define enable_tf2_lite -Dtflite2-support=disabled -Dtflite2-custom-support=disabled
755 %endif
756
757 # Support pytorch
758 %if 0%{?pytorch_support}
759 %define enable_pytorch -Dpytorch-support=enabled
760 %else
761 %define enable_pytorch -Dpytorch-support=disabled
762 %endif
763
764 # Support caffe2
765 %if 0%{?caffe2_support}
766 %define enable_caffe2 -Dcaffe2-support=enabled
767 %else
768 %define enable_caffe2 -Dcaffe2-support=disabled
769 %endif
770
771 # Support ArmNN
772 %if 0%{?armnn_support}
773 %define enable_armnn -Darmnn-support=enabled
774 %else
775 %define enable_armnn -Darmnn-support=disabled
776 %endif
777
778 # Support python
779 %if 0%{?python3_support}
780 %define enable_python3 -Dpython3-support=enabled
781 %else
782 %define enable_python3 -Dpython3-support=disabled
783 %endif
784
785 # Support edgetpu
786 %if 0%{?edgetpu_support}
787 %define enable_edgetpu -Denable-edgetpu=true
788 %else
789 %define enable_edgetpu -Denable-edgetpu=false
790 %endif
791
792 # Support flatbuffer
793 %if 0%{?flatbuf_support}
794 %define enable_flatbuf -Dflatbuf-support=enabled
795 %else
796 %define enable_flatbuf -Dflatbuf-support=disabled
797 %endif
798
799 # Support mqtt
800 %if 0%{?mqtt_support}
801 %define enable_mqtt -Dmqtt-support=enabled
802 %else
803 %define enable_mqtt -Dmqtt-support=disabled
804 %endif
805
806 # Support lua
807 %if 0%{?lua_support}
808 %define enable_lua -Dlua-support=enabled
809 %else
810 %define enable_lua -Dlua-support=disabled
811 %endif
812
813 # Support tvm
814 %if 0%{?tvm_support}
815 %define enable_tvm -Dtvm-support=enabled
816 %else
817 %define enable_tvm -Dtvm-support=disabled
818 %endif
819
820 # Support trix-engine
821 %if 0%{?trix_engine_support}
822 %define enable_trix_engine -Dtrix-engine-support=enabled
823 %else
824 %define enable_trix_engine -Dtrix-engine-support=disabled
825 %endif
826
827 # Support ml-agent
828 %if 0%{?ml_agent_support}
829 %define enable_ml_agent -Dml-agent-support=enabled
830 %else
831 %define enable_ml_agent -Dml-agent-support=disabled
832 %endif
833
834 # Support onnxruntime
835 %if 0%{?onnxruntime_support}
836 %define enable_onnxruntime -Donnxruntime-support=enabled
837 %else
838 %define enable_onnxruntime -Donnxruntime-support=disabled
839 %endif
840
841 # Framework priority for each file extension
842 %define fw_priority_bin ''
843 %define fw_priority_nb ''
844
845 %if "%{?profile}" == "tv"
846 %define fw_priority_bin 'vd_aifw'
847 %define fw_priority_nb 'vd_aifw'
848 %else
849 %if 0%{openvino_support}
850 %define fw_priority_bin 'openvino'
851 %endif
852 %endif
853
854 %define fp16_enabled 0
855 %ifarch %arm aarch64
856 %define fp16_enabled 1
857 # x64/x86 requires GCC >= 12 for fp16 support.
858 %endif
859
860 ## Float16 support
861 %if 0%{?fp16_enabled}
862 %define fp16_support -Denable-float16=true
863 %else
864 %define fp16_support -Denable-float16=false
865 %endif
866
867 %if 0%{?nnstreamer_edge_support}
868 %define nnsedge -Dnnstreamer-edge-support=enabled
869 %else
870 %define nnsedge -Dnnstreamer-edge-support=disabled
871 %endif
872
873 %define fw_priority -Dframework-priority-nb=%{fw_priority_nb} -Dframework-priority-bin=%{fw_priority_bin}
874
875 %prep
876 rm -rf ./%{builddir}
877 %setup -q
878 cp %{SOURCE1001} .
879
880 %build
881 # Remove compiler flags for meson to decide the cpp version
882 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-std=gnu++11||"`
883
884 %if 0%{?testcoverage}
885 # To test coverage, disable optimizations (and should unset _FORTIFY_SOURCE to use -O0)
886 CFLAGS=`echo $CFLAGS | sed -e "s|-O[1-9]|-O0|g"`
887 CFLAGS=`echo $CFLAGS | sed -e "s|-Wp,-D_FORTIFY_SOURCE=[1-9]||g"`
888 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-O[1-9]|-O0|g"`
889 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-Wp,-D_FORTIFY_SOURCE=[1-9]||g"`
890 # also, use the meson's base option, -Db_coverage, instead of --coverage/-fprofile-arcs and -ftest-coverage
891 %define enable_test_coverage -Db_coverage=true
892 %else
893 %define enable_test_coverage -Db_coverage=false
894 %endif
895
896 mkdir -p %{builddir}
897
898 meson --buildtype=plain --prefix=%{_prefix} --sysconfdir=%{_sysconfdir} --libdir=%{_lib} \
899         --bindir=%{nnstbindir} --includedir=include -Dsubplugindir=%{_prefix}/lib/nnstreamer \
900         %{enable_tizen} %{element_restriction} %{fw_priority} -Denable-env-var=false -Denable-symbolic-link=false \
901         %{enable_tf_lite} %{enable_tf2_lite} %{enable_tf} %{enable_pytorch} %{enable_caffe2} %{enable_python3} \
902         %{enable_nnfw_runtime} %{enable_mvncsdk2} %{enable_openvino} %{enable_armnn} %{enable_edgetpu}  %{enable_vivante} \
903         %{enable_flatbuf} %{enable_trix_engine} %{enable_datarepo} \
904         %{enable_tizen_sensor} %{enable_mqtt} %{enable_lua} %{enable_tvm} %{enable_onnxruntime} \
905         %{enable_test} %{enable_test_coverage} %{install_test} \
906         %{fp16_support} %{nnsedge} %{enable_ml_agent} \
907         %{builddir}
908
909 ninja -C %{builddir} %{?_smp_mflags}
910
911 export NNSTREAMER_SOURCE_ROOT_PATH=$(pwd)
912 export NNSTREAMER_BUILD_ROOT_PATH=$(pwd)/%{builddir}
913 export GST_PLUGIN_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/gst:${NNSTREAMER_BUILD_ROOT_PATH}/ext
914 export NNSTREAMER_CONF=${NNSTREAMER_BUILD_ROOT_PATH}/nnstreamer-test.ini
915 export NNSTREAMER_FILTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_filter
916 export NNSTREAMER_DECODERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_decoder
917 export NNSTREAMER_CONVERTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_converter
918 export NNSTREAMER_TRAINERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_trainer
919
920 # Suppress ORC logs during unittests (showing WARNING or higher)
921 export ORC_DEBUG=2
922
923 %define test_script $(pwd)/packaging/run_unittests_binaries.sh
924
925 # if it's tizen && non-TV, run unittest even if "unit_test"==0 for build-time sanity checks.
926 %if ( %{with tizen} && "%{?profile}" != "tv" )
927 %if 0%{nnfw_support}
928     bash %{test_script} ./tests/tizen_nnfw_runtime/unittest_nnfw_runtime_raw
929 %endif
930 %if 0%{tizen_sensor_support}
931     bash %{test_script} ./tests/tizen_sensor/unittest_tizen_sensor
932 %endif
933 %endif #if tizen
934
935 # If "unit_test"==0, don't run these for the sake of build speed.
936 %if 0%{?unit_test}
937     bash %{test_script} ./tests
938     bash %{test_script} ./tests/cpp_methods
939     bash %{test_script} ./tests/nnstreamer_filter_extensions_common
940 %if 0%{?datarepo_support}
941     bash %{test_script} ./tests/nnstreamer_datarepo
942 %endif
943 %if 0%{?nnstreamer_edge_support}
944     bash %{test_script} ./tests/nnstreamer_edge
945 %endif
946 %if 0%{mvncsdk2_support}
947     LD_LIBRARY_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/tests/nnstreamer_filter_mvncsdk2:. bash %{test_script} ./tests/nnstreamer_filter_mvncsdk2/unittest_filter_mvncsdk2
948 %endif
949 %if 0%{edgetpu_support}
950     LD_LIBRARY_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/tests/nnstreamer_filter_edgetpu:. bash %{test_script} ./tests/nnstreamer_filter_edgetpu/unittest_edgetpu
951 %endif
952 %ifarch %arm x86_64 aarch64 ## @todo This is a workaround. Need to remove %ifarch/%endif some day.
953     bash %{test_script} ./tests/nnstreamer_filter_tvm
954 %endif
955     pushd tests
956
957     %ifarch %arm aarch64
958     ## @todo Workaround for QEMU compatibility issue. Newer qemu may be ok with this.
959     export SKIP_QEMU_ARM_INCOMPATIBLE_TESTS=1
960     %else
961     export SKIP_QEMU_ARM_INCOMPATIBLE_TESTS=0
962     %endif
963
964 %if 0%{?fp16_enabled}
965     ## If fp16 tests fail, stop the build!
966     export FLOAT16_SUPPORTED=1
967 %endif
968     ssat -n -p=1 --summary summary.txt -cn _n
969     popd
970
971 python3 tools/development/count_test_cases.py %{builddir} tests/summary.txt
972 %else
973 %if 0%{?edge_test} && 0%{?nnstreamer_edge_support}
974     bash %{test_script} tests/nnstreamer_edge
975     pushd tests/nnstreamer_edge
976     ssat -n -p=1 --summary summary.txt -cn _n
977     popd
978     python3 tools/development/count_test_cases.py %{builddir} tests/nnstreamer_edge/summary.txt
979 %endif
980 %endif
981
982 %install
983 DESTDIR=%{buildroot} ninja -C %{builddir} install
984
985 mkdir -p %{buildroot}%{_bindir}
986 pushd %{buildroot}%{_bindir}
987 ln -sf %{_prefix}/%{nnstbindir}/nnstreamer-check nnstreamer-check
988 ln -sf %{_prefix}/%{nnstbindir}/nnstreamer-parser nnstreamer-parser
989 popd
990
991 %if 0%{?python3_support}
992 mkdir -p %{buildroot}%{python3_sitelib}
993 pushd %{buildroot}%{python3_sitelib}
994 ln -sf %{_libdir}/nnstreamer_python3.so nnstreamer_python.so
995 popd
996 %endif
997
998 %if 0%{?snpe_support}
999 %define snpe_sub_plugin libnnstreamer_filter_snpe.so
1000 %define files_for_snpe_subpackage files_for_snpe_subpackage.txt
1001 rm -f %{files_for_snpe_subpackage}
1002 find %{buildroot} -type f -name '%{snpe_sub_plugin}' -printf '/%%P\n' > %{files_for_snpe_subpackage}
1003 %endif
1004
1005 %if 0%{?testcoverage}
1006 ##
1007 # The included directories are:
1008 #
1009 # gst: the nnstreamer elements
1010 # nnstreamer_example: custom plugin examples
1011 # common: common libraries for gst (elements)
1012 # include: common library headers and headers for external code (packaged as "devel")
1013 #
1014 # Intentionally excluded directories are:
1015 #
1016 # tests: We are not going to show testcoverage of the test code itself or example applications
1017 #
1018 # 'lcov' generates the date format with UTC time zone by default. Let's replace UTC with KST.
1019 # If you ccan get a root privilege, run ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
1020 TZ='Asia/Seoul'; export TZ
1021
1022 # Get commit info
1023 VCS=`cat ${RPM_SOURCE_DIR}/nnstreamer.spec | grep "^VCS:" | sed "s|VCS:\\W*\\(.*\\)|\\1|"`
1024
1025 # Create human readable unit test coverage report web page.
1026 # Create null gcda files if gcov didn't create it because there is completely no unit test for them.
1027 find . -name "*.gcno" -exec sh -c 'touch -a "${1%.gcno}.gcda"' _ {} \;
1028 # Remove gcda for meaningless file (CMake's autogenerated)
1029 find . -name "CMakeCCompilerId*.gcda" -delete
1030 find . -name "CMakeCXXCompilerId*.gcda" -delete
1031 #find . -path "/%{builddir}/*.j
1032 # Generate report
1033 lcov -t 'NNStreamer Unit Test Coverage' -o unittest.info -c -d . -b %{builddir} --no-external --ignore-errors mismatch
1034 # Exclude generated files (e.g., Orc, Protobuf) and device-dependent filters.
1035 lcov -r unittest.info "*/*-orc.*" "*/tests/*" "*/tools/*" "*/meson*/*" "*/*@sha/*" "*/*_openvino*" "*/*_edgetpu*" "*/*_movidius_ncsdk2*" "*/*.so.p/*" -o unittest-filtered.info --ignore-errors graph,unused
1036 # Visualize the report
1037 genhtml -o result unittest-filtered.info -t "nnstreamer %{version}-%{release} ${VCS}" --ignore-errors source -p ${RPM_BUILD_DIR}
1038
1039 mkdir -p %{buildroot}%{_datadir}/nnstreamer/unittest/
1040 cp -r result %{buildroot}%{_datadir}/nnstreamer/unittest/
1041 %endif  # test coverage
1042
1043 %post -p /sbin/ldconfig
1044
1045 %postun -p /sbin/ldconfig
1046
1047 %files
1048
1049 %files core
1050 %manifest nnstreamer.manifest
1051 %defattr(-,root,root,-)
1052 %license LICENSE
1053 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_bounding_boxes.so
1054 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_tensor_region.so
1055 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_pose_estimation.so
1056 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_image_segment.so
1057 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_image_labeling.so
1058 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_direct_video.so
1059 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_octet_stream.so
1060 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_cpp.so
1061 %{gstlibdir}/libnnstreamer.so
1062 %if 0%{?nnstreamer_edge_support}
1063 %{gstlibdir}/libgstedge.so
1064 %endif
1065 %{_libdir}/libnnstreamer.so
1066
1067 %files single
1068 %manifest nnstreamer.manifest
1069 %defattr(-,root,root,-)
1070 %license LICENSE
1071 %{_libdir}/libnnstreamer-single.so
1072
1073 %files default-configuration
1074 %config %{_sysconfdir}/nnstreamer.ini
1075
1076 # for tensorflow
1077 %if 0%{?tensorflow_support}
1078 %files tensorflow
1079 %manifest nnstreamer.manifest
1080 %defattr(-,root,root,-)
1081 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow.so
1082 %endif
1083
1084 %if 0%{?tensorflow_lite_support}
1085 %files tensorflow-lite
1086 %manifest nnstreamer.manifest
1087 %defattr(-,root,root,-)
1088 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow1-lite.so
1089 %endif
1090
1091 # for tensorflow2-lite
1092 %if 0%{?tensorflow2_lite_support}
1093 %files tensorflow2-lite
1094 %manifest nnstreamer.manifest
1095 %defattr(-,root,root,-)
1096 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow2-lite.so
1097 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow2-lite-custom.so
1098 %endif
1099
1100 %if 0%{?python3_support}
1101 %files python3
1102 %manifest nnstreamer.manifest
1103 %defattr(-,root,root,-)
1104 %{_libdir}/nnstreamer_python3.so
1105 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_python3.so
1106 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_python3.so
1107 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_python3.so
1108 %{python3_sitelib}/nnstreamer_python.so
1109 %endif
1110
1111 %if 0%{?protobuf_support}
1112 %files protobuf
1113 %manifest nnstreamer.manifest
1114 %defattr(-,root,root,-)
1115 %{_libdir}/libnnstreamer_protobuf.so
1116 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_protobuf.so
1117 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_protobuf.so
1118 %endif
1119
1120 %if 0%{?flatbuf_support}
1121 %files flatbuf
1122 %manifest nnstreamer.manifest
1123 %defattr(-,root,root,-)
1124 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_flatbuf.so
1125 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_flatbuf.so
1126 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_flexbuf.so
1127 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_flexbuf.so
1128 %endif
1129
1130 # for pytorch
1131 %if 0%{?pytorch_support}
1132 %files pytorch
1133 %manifest nnstreamer.manifest
1134 %defattr(-,root,root,-)
1135 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_pytorch.so
1136 %endif
1137
1138 # for caffe2
1139 %if 0%{?caffe2_support}
1140 %files caffe2
1141 %manifest nnstreamer.manifest
1142 %defattr(-,root,root,-)
1143 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_caffe2.so
1144 %endif
1145
1146 # for lua
1147 %if 0%{?lua_support}
1148 %files lua
1149 %manifest nnstreamer.manifest
1150 %defattr(-,root,root,-)
1151 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_lua.so
1152 %endif
1153
1154 # for tvm
1155 %if 0%{?tvm_support}
1156 %files tvm
1157 %manifest nnstreamer.manifest
1158 %defattr(-,root,root,-)
1159 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tvm.so
1160 %endif
1161
1162 # for snpe
1163 %if 0%{?snpe_support}
1164 # Workaround: Conditionally enable nnstreamer-snpe rpm package
1165 # when existing actual snpe library (snpe.pc)
1166 %files snpe -f %{files_for_snpe_subpackage}
1167 %manifest nnstreamer.manifest
1168 %defattr(-,root,root,-)
1169 %endif
1170
1171 # for trix-engine
1172 %if 0%{?trix_engine_support}
1173 %files trix-engine
1174 %manifest nnstreamer.manifest
1175 %defattr(-,root,root,-)
1176 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_trix-engine.so
1177 %endif
1178
1179 # for onnxruntime
1180 %if 0%{?onnxruntime_support}
1181 %files onnxruntime
1182 %manifest nnstreamer.manifest
1183 %defattr(-,root,root,-)
1184 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_onnxruntime.so
1185 %endif
1186
1187 %files devel
1188 %{_includedir}/nnstreamer/tensor_if.h
1189 %{_includedir}/nnstreamer/tensor_filter_custom.h
1190 %{_includedir}/nnstreamer/tensor_filter_custom_easy.h
1191 %{_includedir}/nnstreamer/tensor_converter_custom.h
1192 %{_includedir}/nnstreamer/tensor_decoder_custom.h
1193 %{_includedir}/nnstreamer/nnstreamer_plugin_api_decoder.h
1194 %{_includedir}/nnstreamer/nnstreamer_plugin_api_converter.h
1195 %{_includedir}/nnstreamer/nnstreamer_plugin_api_trainer.h
1196 %{_includedir}/nnstreamer/nnstreamer_plugin_api.h
1197 %{_includedir}/nnstreamer/nnstreamer_util.h
1198 %{_includedir}/nnstreamer/tensor_filter_cpp.hh
1199 %{_includedir}/nnstreamer/nnstreamer_cppplugin_api_filter.hh
1200 %{_libdir}/pkgconfig/nnstreamer.pc
1201 %{_libdir}/pkgconfig/nnstreamer-cpp.pc
1202
1203 %files devel-internal
1204 %{_includedir}/nnstreamer/nnstreamer_internal.h
1205 %{_includedir}/nnstreamer/tensor_filter_single.h
1206 %{_libdir}/pkgconfig/nnstreamer-internal.pc
1207
1208 %files devel-static
1209 %{_libdir}/*.a
1210 %exclude %{_libdir}/libnnstreamer-single.a
1211
1212 %files single-devel
1213 %{_includedir}/nnstreamer/tensor_typedef.h
1214 %{_includedir}/nnstreamer/nnstreamer_plugin_api_filter.h
1215 %{_includedir}/nnstreamer/nnstreamer_plugin_api_util.h
1216 %{_includedir}/nnstreamer/nnstreamer_version.h
1217 %{_libdir}/pkgconfig/nnstreamer-single.pc
1218
1219 %files single-devel-static
1220 %{_libdir}/libnnstreamer-single.a
1221
1222 %if 0%{?testcoverage}
1223 %files unittest-coverage
1224 %{_datadir}/nnstreamer/unittest/*
1225 %endif
1226
1227 %if 0%{?nnfw_support}
1228 %files nnfw
1229 %manifest nnstreamer.manifest
1230 %defattr(-,root,root,-)
1231 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_nnfw.so
1232 %endif
1233
1234 %if 0%{?armnn_support}
1235 %files armnn
1236 %manifest nnstreamer.manifest
1237 %defattr(-,root,root,-)
1238 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_armnn.so
1239 %endif
1240
1241 %if 0%{mvncsdk2_support}
1242 %files -n nnstreamer-ncsdk2
1243 %defattr(-,root,root,-)
1244 %manifest nnstreamer.manifest
1245 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_movidius-ncsdk2.so
1246 %endif  # mvncsdk2_support
1247
1248 %if 0%{?vivante_support}
1249 %files vivante
1250 %defattr(-,root,root,-)
1251 %manifest nnstreamer.manifest
1252 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_vivante.so
1253 %endif
1254
1255 %if 0%{tizen_sensor_support}
1256 %files tizen-sensor
1257 %manifest nnstreamer.manifest
1258 %{gstlibdir}/libnnstreamer-tizen-sensor.so
1259 %endif  # tizen_sensor_support
1260
1261 %if 0%{?grpc_support}
1262 %files grpc
1263 %defattr(-,root,root,-)
1264 %manifest nnstreamer.manifest
1265 %license LICENSE
1266 %{gstlibdir}/libnnstreamer-grpc.so
1267
1268 %if 0%{?protobuf_support}
1269 %files grpc-protobuf
1270 %defattr(-,root,root,-)
1271 %manifest nnstreamer.manifest
1272 %license LICENSE
1273 %{_libdir}/libnnstreamer_grpc_protobuf.so
1274 %endif
1275
1276 %if 0%{?flatbuf_support}
1277 %files grpc-flatbuf
1278 %defattr(-,root,root,-)
1279 %manifest nnstreamer.manifest
1280 %license LICENSE
1281 %{_libdir}/libnnstreamer_grpc_flatbuf.so
1282 %endif
1283
1284 %endif  # grpc_support
1285
1286 %if 0%{?edgetpu_support}
1287 %files edgetpu
1288 %manifest nnstreamer.manifest
1289 %license LICENSE
1290 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_edgetpu.so
1291 %endif
1292
1293 %if 0%{?release_test}
1294 %files unittests
1295 %manifest nnstreamer.manifest
1296 %{_libdir}/libnnstreamer_unittest_util.so
1297 %{_libdir}/libcppfilter_test.so
1298 %if 0%{?mvncsdk2_support}
1299 %{_libdir}/libmvncsdk_test.so
1300 %endif
1301 %{_prefix}/lib/nnstreamer/customfilters/*.so
1302 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/nnstreamer-test.ini
1303 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/tests
1304 %endif
1305
1306 %if 0%{?openvino_support}
1307 %files openvino
1308 %manifest nnstreamer.manifest
1309 %license LICENSE
1310 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_openvino.so
1311 %endif
1312
1313 %files util
1314 %{_bindir}/nnstreamer-check
1315 %{_bindir}/nnstreamer-parser
1316 %{_prefix}/%{nnstbindir}/nnstreamer-check
1317 %{_prefix}/%{nnstbindir}/nnstreamer-parser
1318
1319 %files misc
1320 %{gstlibdir}/libgstjoin.so
1321 %if 0%{?mqtt_support}
1322 %{gstlibdir}/libgstmqtt.so
1323 %endif
1324
1325 %if 0%{?datarepo_support}
1326 %files datarepo
1327 %manifest nnstreamer.manifest
1328 %defattr(-,root,root,-)
1329 %license LICENSE
1330 %{gstlibdir}/libgstdatarepo.so
1331 %endif
1332
1333 %if 0%{?release_test}
1334 %files test-devel
1335 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/subplugin_unittest_template.cc.in
1336 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/nnstreamer-test.ini.in
1337 %endif
1338
1339 %changelog
1340 * Fri Sep 15 2023 MyungJoo Ham <myungjoo.ham@samsung.com>
1341 - Start development of 2.4.1 (2.4.2-RC1)
1342
1343 * Tue Sep 12 2023 MyungJoo Ham <myungjoo.ham@samsung.com>
1344 - Release of 2.4.0, the new LTS version of 2023. (Tizen 8.0 M2)
1345
1346 * Tue Sep 27 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1347 - Start development of 2.3.0 (2.4.0-RC1) for experimental and unstable features.
1348
1349 * Thu Sep 22 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1350 - Release of 2.2.0, the new LTS version of 2022. (Tizen 7.0 M2)
1351
1352 * Wed Apr 13 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1353 - Start development of 2.1.1 (2.2.0-RC2)
1354
1355 * Tue Sep 28 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1356 - Start development of 2.1.0 (2.2.0-RC1)
1357
1358 * Tue Sep 28 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1359 - Release of 2.0.0, the new LTS version of 2021.
1360
1361 * Thu Jun 03 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1362 - Start development of 1.7.2 (1.8.0-RC3)
1363
1364 * Fri Nov 20 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1365 - Start development of 1.7.1 (1.8.0-RC2)
1366
1367 * Wed Sep 09 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1368 - Start development of 1.7.0 (1.8.0-RC1)
1369
1370 * Wed Sep 09 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1371 - Release of 1.6.0 (LTS for Tizen 6.0 M2 and Android-next products)
1372
1373 * Thu Jun 04 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1374 - Start development of 1.5.3 (1.6.0-RC4)
1375
1376 * Wed Apr 08 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1377 - Start development of 1.5.2 (1.6.0-RC3)
1378
1379 * Wed Mar 18 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1380 - Start development of 1.5.1 (1.6.0-RC2)
1381
1382 * Tue Feb 11 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1383 - Start development of 1.5.0 (1.6.0-RC1)
1384
1385 * Tue Feb 11 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1386 - Release of 1.4.0 (Tensor-filter API has been updated!)
1387
1388 * Mon Feb 03 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1389 - Release of 1.3.1
1390
1391 * Wed Dec 11 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1392 - 1.3.0 development starts
1393
1394 * Wed Dec 11 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1395 - Release of 1.2.0
1396
1397 * Thu Sep 26 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1398 - Release of 1.0.0 (1.0 RC2 == 1.0 Release for Tizen 5.5 M2)
1399
1400 * Wed Aug 14 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1401 - Release of 0.3.0 (1.0 RC1)
1402
1403 * Mon May 27 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1404 - Release of 0.2.0
1405
1406 * Wed Mar 20 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1407 - Release of 0.1.2
1408
1409 * Mon Feb 25 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1410 - Release of 0.1.1
1411
1412 * Thu Jan 24 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1413 - Release of 0.1.0
1414
1415 * Mon Dec 03 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1416 - Release of 0.0.3
1417
1418 * Mon Oct 15 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1419 - Started single-binary packaging for 0.0.3
1420
1421 * Fri May 25 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1422 - Packaged tensor_convert plugin.