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