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