mv_common: fix coverity issues
[platform/core/api/mediavision.git] / packaging / capi-media-vision.spec
1 Name:        capi-media-vision
2 Summary:     Media Vision library for Tizen Native API
3 Version:     0.32.1
4 Release:     0
5 Group:       Multimedia/Framework
6 License:     Apache-2.0
7 Source0:     %{name}-%{version}.tar.gz
8 BuildRequires: cmake
9 BuildRequires: pkgconfig(capi-media-tool)
10 BuildRequires: pkgconfig(dlog)
11 BuildRequires: pkgconfig(capi-system-info)
12 BuildRequires: pkgconfig(opencv)
13 BuildRequires: pkgconfig(json-glib-1.0)
14 BuildRequires: pkgconfig(iniparser)
15 BuildRequires: pkgconfig(inference-engine-interface-common)
16 BuildRequires: pkgconfig(glib-2.0)
17 BuildRequires: pkgconfig(zbar)
18 # Change to the pkgconfig(zint) after zint package refactor
19 BuildRequires: zint
20 BuildRequires: zint-devel
21 BuildRequires: pkgconfig(libavcodec)
22 BuildRequires: pkgconfig(libavformat)
23 BuildRequires: pkgconfig(libswscale)
24 BuildRequires: libavutil-devel
25 BuildRequires: pkgconfig(gstreamer-1.0)
26 BuildRequires: pkgconfig(gstreamer-base-1.0)
27 BuildRequires: pkgconfig(gstreamer-app-1.0)
28 BuildRequires: pkgconfig(libtzplatform-config)
29 BuildRequires: pkgconfig(ncurses)
30 BuildRequires: pkgconfig(libdrm)
31 BuildRequires: pkgconfig(wayland-egl)
32 BuildRequires: pkgconfig(glesv2)
33 BuildRequires: gtest-devel
34 BuildRequires: pkgconfig(dfs-adaptation)
35 BuildRequires: pkgconfig(capi-appfw-application)
36 %if 0%{?visualizer:1}
37 BuildRequires: pkgconfig(protobuf)
38 BuildRequires: pkgconfig(grpc++)
39 %endif
40
41 # Build options
42 # ENABLE_INFERENCE_PROFILER
43 # 0 : disable Mediavision inference engine profiler, 1 : enable Mediavision inference engine profiler.
44 %define enable_mv3d_pointcloud 0
45 %if "%{tizen_profile_name}" == "tv"
46 %define enable_ml_face_recognition 0
47 %define build_depth_stream_testsuite 0
48 %else
49 %define enable_ml_face_recognition 1
50 BuildRequires: pkgconfig(training-engine-interface-common)
51 Requires:      training-engine-interface-common
52
53 %define enable_ml_image_classification 1
54 %define enable_ml_object_detection 1
55 %define enable_ml_object_detection_3d 1
56 %define enable_ml_landmark_detection 1
57 %define enable_ml_image_segmentation 1
58
59 %define build_depth_stream_testsuite 1
60 BuildRequires: pkgconfig(vision-source)
61 %ifarch aarch64
62 %define enable_mv3d_pointcloud 1
63 BuildRequires: Open3D-devel
64 %endif
65 %endif
66 %define build_options -DENABLE_INFERENCE_PROFILER=0 -DBUILD_DEPTH_STREAM_TESTSUITE=%{build_depth_stream_testsuite} -DMV_3D_POINTCLOUD_IS_AVAILABLE=%{enable_mv3d_pointcloud}
67 %define task_group_options -DENABLE_ML_FACE_RECOGNITION=%{enable_ml_face_recognition} -DENABLE_ML_IMAGE_CLASSIFICATION=%{enable_ml_image_classification} -DENABLE_ML_OBJECT_DETECTION=%{enable_ml_object_detection} -DENABLE_ML_OBJECT_DETECTION_3D=%{enable_ml_object_detection_3d} -DENABLE_ML_LANDMARK_DETECTION=%{enable_ml_landmark_detection} -DENABLE_ML_IMAGE_SEGMENTATION=%{enable_ml_image_segmentation}
68 Requires:   %{name}-machine_learning
69 Requires:   inference-engine-interface-common
70 Requires:   %{name}-barcode
71 Requires:   %{name}-face
72 Requires:   %{name}-image
73 Requires:   %{name}-surveillance
74 Requires:   %{name}-3d
75 Requires:   %{name}-roi_tracker
76
77 %description
78 Media Vision library for Tizen Native API. Includes barcode detecting, barcode generating, face and image modules.
79
80 %package devel
81 Summary:    Multimedia Vision Library (DEV)
82 Group:      Multimedia/Framework
83 Requires:   %{name} = %{version}-%{release}
84 Requires:   %{name}-barcode-devel
85 Requires:   %{name}-face-devel
86 Requires:   %{name}-image-devel
87 Requires:   %{name}-machine_learning-devel
88 Requires:   %{name}-surveillance-devel
89 Requires:   %{name}-3d-devel
90 Requires:   %{name}-roi_tracker-devel
91
92 %description devel
93 Media Vision library for Tizen Native API (DEV). Includes barcode detecting, barcode generating, face and image modules.
94
95 %if 0%{?gcov:1}
96 %package gcov
97 Summary: Line Coverage of Media Vision library for Tizen Native API
98 Group: Development/Multimedia
99
100 %description gcov
101 Collection of files related to Line Coverage. It is teseted as gcov for a Media Vision for Tizen Native API
102 %endif
103
104 %package common
105 Summary:    Multimedia Vision common Library
106 Group:      Multimedia/Framework
107
108 %description common
109 Media Vision common library for Tizen Native API.
110
111 %package common-devel
112 Summary:    Multimedia Vision common Library
113 Group:      Multimedia/Framework
114 Requires:   %{name}-common
115
116 %description common-devel
117 Media Vision common library for Tizen Native API (DEV).
118
119 %package barcode
120 Summary:    Multimedia Vision Barcode Library
121 Group:      Multimedia/Framework
122 Requires:   %{name}-common
123
124 %description barcode
125 Media Vision barcode library for Tizen Native API.
126
127 %package barcode-devel
128 Summary:    Multimedia Vision Barcode Library
129 Group:      Multimedia/Framework
130 Requires:   %{name}-barcode
131 Requires:   %{name}-common-devel
132
133 %description barcode-devel
134 Media Vision barcode library for Tizen Native API (DEV).
135
136 %package face
137 Summary:    Multimedia Vision Library
138 Group:      Multimedia/Framework
139 Requires:   %{name}-common
140
141 %description face
142 Media Vision face library for Tizen Native API.
143
144 %package face-devel
145 Summary:    Multimedia Vision Face Library (DEV)
146 Group:      Multimedia/Framework
147 Requires:   %{name}-face
148 Requires:   %{name}-common-devel
149
150 %description face-devel
151 Media Vision face library for Tizen Native API (DEV).
152
153 %package image
154 Summary:    Multimedia Vision Image Library
155 Group:      Multimedia/Framework
156 Requires:   %{name}-common
157
158 %description image
159 Media Vision Image library for Tizen Native API.
160
161 %package image-devel
162 Summary:    Multimedia Vision Image Library
163 Group:      Multimedia/Framework
164 Requires:   %{name}-image
165 Requires:   %{name}-common-devel
166
167 %description image-devel
168 Media Vision Image library for Tizen Native API (DEV).
169
170 %package surveillance
171 Summary:    Multimedia Vision Surveillance Library
172 Group:      Multimedia/Framework
173 Requires:   %{name}-face
174
175 %description surveillance
176 Media Vision Surveillance library for Tizen Native API.
177
178 %package surveillance-devel
179 Summary:    Multimedia Vision Surveillance Library
180 Group:      Multimedia/Framework
181 Requires:   %{name}-surveillance
182 Requires:   %{name}-common-devel
183
184 %description surveillance-devel
185 Media Vision Surveillance library for Tizen Native API (DEV).
186
187 %package 3d
188 Summary:    Multimedia Vision 3d Library
189 Group:      Multimedia/Framework
190 Requires:   %{name}-common
191
192 %description 3d
193 Media Vision 3d library for Tizen Native API.
194
195 %package 3d-devel
196 Summary:    Multimedia Vision 3d Library
197 Group:      Multimedia/Framework
198 Requires:   %{name}-3d
199 Requires:   %{name}-common-devel
200
201 %description 3d-devel
202 Media Vision 3d library for Tizen Native API (DEV).
203
204 %package machine_learning
205 Summary:    Multimedia Vision Machine Learning Library
206 Group:      Multimedia/Framework
207 Requires:   %{name}-common
208
209 %description machine_learning
210 Media Vision Machine Learning library for Tizen Native API.
211
212 %package machine_learning-devel
213 Summary:    Multimedia Vision Machine Learning Library
214 Group:      Multimedia/Framework
215 Requires:   %{name}-machine_learning
216 Requires:   %{name}-common-devel
217
218 %description machine_learning-devel
219 Media Vision Machine Learning library for Tizen Native API (DEV).
220
221
222 %package roi_tracker
223 Summary:    Multimedia Vision Library
224 Group:      Multimedia/Framework
225 Requires:   %{name}-common
226
227 %description roi_tracker
228 Media Vision roi tracker library for Tizen Native API.
229
230 %package roi_tracker-devel
231 Summary:    Multimedia Vision ROI Tracker Library (DEV)
232 Group:      Multimedia/Framework
233 Requires:   %{name}-roi_tracker
234 Requires:   %{name}-common-devel
235
236 %description roi_tracker-devel
237 Media Vision roi_tracker library for Tizen Native API (DEV).
238
239 %package unittests
240 Summary:    Multimedia Vision Test Suite
241 Group:      Multimedia/Framework
242 Requires:   %{name}-barcode
243 Requires:   %{name}-face
244 Requires:   %{name}-image
245 Requires:   %{name}-surveillance
246 Requires:   %{name}-machine_learning
247 Requires:   %{name}-3d
248 Requires:   %{name}-roi_tracker
249
250 %description unittests
251 Media Vision Test Suite.
252
253 %prep
254 %setup -q
255
256 %build
257 %if 0%{?sec_build_binary_debug_enable}
258 export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
259 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
260 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
261 %endif
262
263 export CFLAGS+=" -DSYSCONFDIR=\\\"%{_hal_sysconfdir}\\\""
264 export CXXFLAGS+=" -DSYSCONFDIR=\\\"%{_hal_sysconfdir}\\\""
265
266 export CFLAGS+=" -DMV_CONFIG_PATH=\\\"%{TZ_SYS_RO_SHARE}/%{name}/\\\""
267 export CXXFLAGS+=" -DMV_CONFIG_PATH=\\\"%{TZ_SYS_RO_SHARE}/%{name}/\\\""
268
269 %if 0%{?gcov:1}
270 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
271 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
272 export FFLAGS+=" -fprofile-arcs -ftest-coverage"
273 export LDFLAGS+=" -lgcov"
274 %endif
275
276 mkdir -p build
277 cd build
278 %cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo %{build_options} %{task_group_options} \
279  -DTEST_RES_PATH="%{TZ_SYS_HOME}/%{TZ_SYS_DEFAULT_USER}/media/Others/mv_test" \
280 %if 0%{?visualizer:1}
281  -DBUILD_VISUALIZER=ON \
282 %endif
283 %ifarch %arm aarch64
284 -DENABLE_NEON=ON
285 %endif
286
287 make %{?jobs:-j%jobs}
288
289 %install
290
291 mkdir -p %{buildroot}%{_bindir}/tizen-unittests/%{name}
292 install -m 0755 script/run-unittest.sh %{buildroot}%{_bindir}/tizen-unittests/%{name}
293
294 cd build
295 %make_install
296
297 %if 0%{?gcov:1}
298 builddir=$(basename $PWD)
299 pkg_version_path=$(basename "$(dirname $PWD)")
300 gcno_obj_dir=%{buildroot}%{_datadir}/gcov/obj/%{name}/"$pkg_version_path"/${builddir}
301 mkdir -p "$gcno_obj_dir"
302
303 find . -name '*.gcno' -not -path "./test/*" -not -path "./mv_machine_learning/*" \
304 -exec cp --parents '{}' "$gcno_obj_dir" ';'
305
306 %endif
307
308 %post -p /sbin/ldconfig
309 %postun -p /sbin/ldconfig
310
311 %files
312 %manifest %{name}.manifest
313 %license LICENSE.APLv2
314
315 %files devel
316 %{_libdir}/pkgconfig/%{name}.pc
317
318 %files common
319 %manifest %{name}.manifest
320 %license LICENSE.APLv2
321 %{_datadir}/%{name}/media-vision-config.json
322 %{_libdir}/libmv_common*.so
323
324 %files common-devel
325 %{_includedir}/media/mv_common.h
326 %{_libdir}/pkgconfig/*common.pc
327
328 %files barcode
329 %manifest %{name}.manifest
330 %license LICENSE.APLv2
331 %{_libdir}/libmv_barcode*.so
332
333 %files barcode-devel
334 %{_includedir}/media/mv_barcode*.h
335 %{_libdir}/pkgconfig/*barcode.pc
336
337 %files face
338 %manifest %{name}.manifest
339 %license LICENSE.APLv2
340 %{_libdir}/libmv_face*.so
341
342 %files face-devel
343 %{_includedir}/media/mv_face*.h
344 %{_libdir}/pkgconfig/*face.pc
345
346 %files image
347 %manifest %{name}.manifest
348 %license LICENSE.APLv2
349 %{_libdir}/libmv_image.so
350
351 %files image-devel
352 %{_includedir}/media/mv_image*.h
353 %{_libdir}/pkgconfig/*image.pc
354
355 %files surveillance
356 %manifest %{name}.manifest
357 %license LICENSE.APLv2
358 %{_libdir}/libmv_surveillance*.so
359
360 %files surveillance-devel
361 %{_includedir}/media/mv_surveillance*.h
362 %{_libdir}/pkgconfig/*surveillance.pc
363
364 %files 3d
365 %manifest %{name}.manifest
366 %license LICENSE.APLv2
367 %{_libdir}/libmv_3d*.so
368
369 %files 3d-devel
370 %{_includedir}/media/mv_3d.h
371 %{_includedir}/media/mv_3d_type.h
372 %{_includedir}/media/mv_3d_internal.h
373 %{_includedir}/media/mv_3d_private.h
374 %{_libdir}/pkgconfig/*3d.pc
375
376 %files machine_learning
377 %manifest %{name}.manifest
378 %license LICENSE.APLv2
379 %{_libdir}/libmv_inference*.so
380 %{_libdir}/libmv_ml_common.so
381 %if "%{enable_ml_face_recognition}" == "1"
382 %{_datadir}/%{name}/face_recognition.json
383 %{_libdir}/libmv_training.so
384 %{_libdir}/libmv_face_recognition.so
385 %endif
386 %if "%{enable_ml_image_classification}" == "1"
387 %{_datadir}/%{name}/image_classification.json
388 %{_libdir}/libmv_image_classification.so
389 %endif
390 %if "%{enable_ml_object_detection}" == "1"
391 %{_datadir}/%{name}/object_detection.json
392 %{_datadir}/%{name}/object_detection_plugin.json
393 %{_datadir}/%{name}/face_detection.json
394 %{_datadir}/%{name}/face_detection_plugin.json
395 %{_libdir}/libmv_object_detection.so
396 %endif
397 %if "%{enable_ml_object_detection_3d}" == "1"
398 %{_datadir}/%{name}/object_detection_3d.json
399 %{_libdir}/libmv_object_detection_3d.so
400 %endif
401 %if "%{enable_ml_landmark_detection}" == "1"
402 %{_datadir}/%{name}/facial_landmark.json
403 %{_datadir}/%{name}/pose_landmark.json
404 %{_libdir}/libmv_landmark_detection.so
405 %endif
406 %if "%{enable_ml_image_segmentation}" == "1"
407 %{_datadir}/%{name}/selfie_segmentation.json
408 %{_datadir}/%{name}/selfie_segmentation_plugin.json
409 %{_libdir}/libmv_image_segmentation.so
410 %endif
411
412 %files machine_learning-devel
413 %{_includedir}/media/mv_infer*.h
414 %{_includedir}/media/machine_learning_exception.h
415 %{_includedir}/media/machine_learning_config.h
416 %{_includedir}/media/MachineLearningType.h
417 %{_includedir}/media/machine_learning_preprocess.h
418 %{_libdir}/pkgconfig/*inference.pc
419 %if "%{enable_ml_face_recognition}" == "1"
420 %{_includedir}/media/mv_face_recognition*.h
421 %{_libdir}/pkgconfig/*training.pc
422 %{_libdir}/pkgconfig/*face-recognition.pc
423 %endif
424 %if "%{enable_ml_image_classification}" == "1"
425 %{_includedir}/media/mv_image_classification_internal.h
426 %{_includedir}/media/mv_image_classification_type.h
427 %{_libdir}/pkgconfig/*image-classification.pc
428 %endif
429 %if "%{enable_ml_object_detection}" == "1"
430 %{_includedir}/media/mv_object_detection_internal.h
431 %{_includedir}/media/mv_object_detection_type.h
432 %{_includedir}/media/mv_face_detection_internal.h
433 %{_includedir}/media/mv_face_detection_type.h
434 %{_includedir}/media/iobject_detection.h
435 %{_includedir}/media/object_detection_type.h
436 %{_libdir}/pkgconfig/*object-detection.pc
437 %endif
438 %if "%{enable_ml_object_detection_3d}" == "1"
439 %{_includedir}/media/mv_object_detection_3d_internal.h
440 %{_includedir}/media/mv_object_detection_3d_type.h
441 %{_libdir}/pkgconfig/*object-detection-3d.pc
442 %endif
443 %if "%{enable_ml_landmark_detection}" == "1"
444 %{_includedir}/media/mv_facial_landmark_internal.h
445 %{_includedir}/media/mv_facial_landmark_type.h
446 %{_includedir}/media/mv_pose_landmark_internal.h
447 %{_includedir}/media/mv_pose_landmark_type.h
448 %{_libdir}/pkgconfig/*landmark-detection.pc
449 %endif
450 %if "%{enable_ml_image_segmentation}" == "1"
451 %{_includedir}/media/mv_selfie_segmentation_internal.h
452 %{_includedir}/media/mv_selfie_segmentation_type.h
453 %{_includedir}/media/iimage_segmentation.h
454 %{_includedir}/media/image_segmentation_type.h
455 %{_libdir}/pkgconfig/*image-segmentation.pc
456 %endif
457
458 %files roi_tracker
459 %manifest %{name}.manifest
460 %license LICENSE.APLv2
461 %{_libdir}/libmv_roi_tracker.so
462
463 %files roi_tracker-devel
464 %{_includedir}/media/mv_roi_tracker*.h
465 %{_libdir}/pkgconfig/*tracker.pc
466
467 %files unittests
468 %manifest %{name}.manifest
469 %license LICENSE.APLv2
470 %{_libdir}/libmv_*helper.so
471 %if 0%{?visualizer:1}
472 %{_libdir}/libmv_visualizer.so
473 %endif
474 %{_bindir}/mv_*
475 %{_bindir}/tizen-unittests/%{name}/run-unittest.sh
476
477 %if 0%{?gcov:1}
478 %files gcov
479 %{_datadir}/gcov/obj/*
480 %endif