[Tizen] Support asan build option
[platform/core/uifw/dali-toolkit.git] / packaging / dali-toolkit.spec
1 Name:       dali2-toolkit
2 Summary:    Dali 3D engine Toolkit
3 Version:    2.3.4
4 Release:    1
5 Group:      System/Libraries
6 License:    Apache-2.0 and BSD-3-Clause and MIT
7 URL:        https://review.tizen.org/git/?p=platform/core/uifw/dali-toolkit.git;a=summary
8 Source0:    %{name}-%{version}.tar.gz
9
10 Requires(post): /sbin/ldconfig
11 Requires(postun): /sbin/ldconfig
12 BuildRequires:  cmake
13 BuildRequires:  pkgconfig
14 BuildRequires:  pkgconfig(dlog)
15 BuildRequires:  pkgconfig(dali2-core)
16 BuildRequires:  pkgconfig(dali2-adaptor)
17 BuildRequires:  pkgconfig(gles20)
18 BuildRequires:  pkgconfig(glesv2)
19 BuildRequires:  pkgconfig(egl)
20
21 BuildRequires:  gettext
22 BuildRequires:  pkgconfig(libtzplatform-config)
23
24 # For ASAN test
25 %if "%{vd_asan}" == "1" || "%{asan}" == "1"
26 BuildRequires: asan-force-options
27 BuildRequires: asan-build-env
28 BuildRequires: libasan
29 %endif
30
31 #############################
32 # profile setup
33 #############################
34
35 %description
36 Dali 3D engine Toolkit - a set of controls that provide
37 user interface functionality.
38
39 ##############################
40 # resource
41 ##############################
42 %package resources_360x360
43 Summary:    default resource files for 360x360
44 Requires:   %{name} = %{version}-%{release}
45 Conflicts:  %{name}-resources_480x800
46 Conflicts:  %{name}-resources_720x1280
47 Conflicts:  %{name}-resources_1920x1080
48 Conflicts:  %{name}-resources_1920x1080_rpi
49 %description resources_360x360
50 dali-toolkit default resource files for 360x360
51 Contain po / sounds / common images / style / style images
52
53 %package resources_480x800
54 Summary:    default resource files for 480x800
55 Requires:   %{name} = %{version}-%{release}
56 Conflicts:  %{name}-resources_360x360
57 Conflicts:  %{name}-resources_720x1280
58 Conflicts:  %{name}-resources_1920x1080
59 Conflicts:  %{name}-resources_1920x1080_rpi
60 %description resources_480x800
61 dali-toolkit default resource files for 480x800
62 Contain po / sounds / common images / style / style images
63
64 %package resources_720x1280
65 Summary:    default resource files for 720x1280
66 Requires:   %{name} = %{version}-%{release}
67 Conflicts:  %{name}-resources_360x360
68 Conflicts:  %{name}-resources_480x800
69 Conflicts:  %{name}-resources_1920x1080
70 Conflicts:  %{name}-resources_1920x1080_rpi
71 %description resources_720x1280
72 dali-toolkit default resource files for 720x1280
73 Contain po / sounds / common images / style / style images
74
75 %package resources_1920x1080
76 Summary:    default resource files for 1920x1080
77 Requires:   %{name} = %{version}-%{release}
78 Conflicts:  %{name}-resources_360x360
79 Conflicts:  %{name}-resources_480x800
80 Conflicts:  %{name}-resources_720x1280
81 Conflicts:  %{name}-resources_1920x1080_rpi
82 %description resources_1920x1080
83 dali-toolkit default resource files for 1920x1080
84 Contain po / sounds / common images / style / style images
85
86 %package resources_1920x1080_rpi
87 Summary:    default resource files for 1920x1080 on Raspberry Pi 4
88 Requires:   %{name} = %{version}-%{release}
89 Conflicts:  %{name}-resources_360x360
90 Conflicts:  %{name}-resources_480x800
91 Conflicts:  %{name}-resources_720x1280
92 Conflicts:  %{name}-resources_1920x1080
93 %description resources_1920x1080_rpi
94 dali-toolkit default resource files for 1920x1080 on Raspberry Pi 4
95 Contain po / sounds / common images / style / style images
96
97
98 ##############################
99 # devel
100 ##############################
101 %package devel
102 Summary:    Application development package for Dali 3D engine toolkit
103 Group:      Development/Building
104 Requires:   %{name} = %{version}-%{release}
105
106 %description devel
107 Application development package for Dali 3D engine toolkit - headers and package config
108
109 ##############################
110 # dali-scene3d
111 ##############################
112 %define dali2_scene3d dali2-scene3d
113 %package -n %{dali2_scene3d}
114 Summary:    DLI scene loading library
115 Group:      System/Libraries
116 License:    Apache-2.0
117 Requires:   dali2-toolkit
118
119 %description -n %{dali2_scene3d}
120 Provides functionality for loading and displaying DLI format scenes. See README.md for more details.
121
122 %package -n %{dali2_scene3d}-devel
123 Summary:    Development components for dali-scene3d
124 Group:      Development/Building
125 Requires:   %{dali2_scene3d} = %{version}-%{release}
126
127 %description -n %{dali2_scene3d}-devel
128 Development components for dali-scene3d.
129
130 ##############################
131 # dali-physics-2d
132 ##############################
133 %define dali2_physics2d dali2-physics-2d
134 %package -n %{dali2_physics2d}
135 Summary:    Physics library 2D
136 Group:      System/Libraries
137 License:    Apache-2.0
138
139 %description -n %{dali2_physics2d}
140 Provides functionality for 2D physics simulation. See README.md for more details.
141
142 %package -n %{dali2_physics2d}-devel
143 Summary:    Development components for dali2-physics-2d
144 Group:      Development/Building
145 Requires:   %{dali2_physics2d} = %{version}-%{release}
146
147 %description -n %{dali2_physics2d}-devel
148 Development components for dali2-physics-2d.
149
150 ##############################
151 # dali-physics-3d
152 ##############################
153 %define dali2_physics3d dali2-physics-3d
154 %package -n %{dali2_physics3d}
155 Summary:    Physics library 3D
156 Group:      System/Libraries
157 License:    Apache-2.0
158
159 %description -n %{dali2_physics3d}
160 Provides functionality for 3D physics simulation. See README.md for more details.
161
162 %package -n %{dali2_physics3d}-devel
163 Summary:    Development components for dali2-physics-3d
164 Group:      Development/Building
165 Requires:   %{dali2_physics3d} = %{version}-%{release}
166
167 %description -n %{dali2_physics3d}-devel
168 Development components for dali2-physics-3d.
169
170 %define dali_data_rw_dir            %TZ_SYS_SHARE/dali/
171 %define dali_data_ro_dir            %TZ_SYS_RO_SHARE/dali/
172
173 %define dali_toolkit_image_files    %{dali_data_ro_dir}/toolkit/images/
174 %define dali_toolkit_sound_files    %{dali_data_ro_dir}/toolkit/sounds/
175 %define dali_toolkit_style_files    %{dali_data_ro_dir}/toolkit/styles/
176 %define dev_include_path %{_includedir}
177
178 %define dali_xml_file_dir     %TZ_SYS_RO_PACKAGES
179
180 ##############################
181 # Preparation
182 ##############################
183 %prep
184 %setup -q
185
186 ##############################
187 # Build
188 ##############################
189 %build
190 # PO
191 {
192 cd %{_builddir}/dali2-toolkit-%{version}/dali-toolkit/po
193 for language in *.po
194 do
195   language=${language%.po}
196   msgfmt -o ${language}.mo ${language}.po
197 done
198 } &> /dev/null
199
200 PREFIX="/usr"
201 CXXFLAGS+=" -Wall -g -Os -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections "
202 LDFLAGS+=" -Wl,--rpath=$PREFIX/lib -Wl,--as-needed -Wl,--gc-sections -Wl,-Bsymbolic-functions "
203
204 %if 0%{?enable_coverage}
205 CXXFLAGS+=" --coverage "
206 LDFLAGS+=" --coverage "
207 %endif
208
209 %ifarch %{arm}
210 CXXFLAGS+=" -D_ARCH_ARM_"
211 %endif
212
213 %if "%{vd_asan}" == "1" || "%{asan}" == "1"
214 CFLAGS+=" -fsanitize=address"
215 CXXFLAGS+=" -fsanitize=address"
216 LDFLAGS+=" -fsanitize=address"
217 %endif
218
219 libtoolize --force
220 cd %{_builddir}/dali2-toolkit-%{version}/build/tizen
221
222 DALI_DATA_RW_DIR="%{dali_data_rw_dir}" ; export DALI_DATA_RW_DIR
223 DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR
224
225 cmake \
226 %if 0%{?enable_debug}
227       -DCMAKE_BUILD_TYPE=Debug \
228 %endif
229       -DENABLE_TRACE=ON \
230       -DCMAKE_INSTALL_PREFIX=%{_prefix} \
231       -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
232       -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
233       -DENABLE_I18N=ON
234
235 make %{?jobs:-j%jobs}
236
237 ##############################
238 # Installation
239 ##############################
240 %install
241 rm -rf %{buildroot}
242 cd build/tizen
243
244 pushd %{_builddir}/%{name}-%{version}/build/tizen
245 %make_install
246
247 # PO
248 {
249 cd %{_builddir}/dali2-toolkit-%{version}/dali-toolkit/po
250 for language in *.mo
251 do
252   language=${language%.mo}
253   mkdir -p %{buildroot}/%{_datadir}/locale/${language}/LC_MESSAGES/
254   cp ${language}.mo %{buildroot}/%{_datadir}/locale/${language}/LC_MESSAGES/dali-toolkit.mo
255 done
256 } &> /dev/null
257 popd
258
259 # Remove default style and style images which are for Linux build
260 rm -rf %{buildroot}%{dali_toolkit_style_files}/*
261
262 # Make folder to contain style and style images
263 # After making folder, copy local style and style images to new folder
264 pushd %{_builddir}/%{name}-%{version}
265 mkdir -p %{buildroot}%{dali_toolkit_style_files}/360x360
266 cp -r dali-toolkit/styles/360x360/* %{buildroot}%{dali_toolkit_style_files}/360x360
267 mkdir -p %{buildroot}%{dali_toolkit_style_files}/480x800
268 cp -r dali-toolkit/styles/480x800/* %{buildroot}%{dali_toolkit_style_files}/480x800
269 mkdir -p %{buildroot}%{dali_toolkit_style_files}/720x1280
270 cp -r dali-toolkit/styles/720x1280/* %{buildroot}%{dali_toolkit_style_files}/720x1280
271 mkdir -p %{buildroot}%{dali_toolkit_style_files}/1920x1080
272 cp -r dali-toolkit/styles/1920x1080/* %{buildroot}%{dali_toolkit_style_files}/1920x1080
273 mkdir -p %{buildroot}%{dali_toolkit_style_files}/1920x1080_rpi
274 cp -r dali-toolkit/styles/1920x1080_rpi/* %{buildroot}%{dali_toolkit_style_files}/1920x1080_rpi
275
276 # Copy default feedback theme
277 cp dali-toolkit/styles/default-feedback-theme.json %{buildroot}%{dali_toolkit_style_files}
278
279 # Copy default debug image visual shader script
280 cp dali-toolkit/styles/debug-image-visual-shader-script.json %{buildroot}%{dali_toolkit_style_files}
281 popd
282
283 ##############################
284 # Pre Install
285 ##############################
286
287 %pre resources_360x360
288 case "$1" in
289   2)
290     pushd %{dali_toolkit_style_files}
291     rm -rf ./*
292     popd
293   ;;
294 esac
295
296 %pre resources_480x800
297 case "$1" in
298   2)
299     pushd %{dali_toolkit_style_files}
300     rm -rf ./*
301     popd
302   ;;
303 esac
304
305 %pre resources_720x1280
306 case "$1" in
307   2)
308     pushd %{dali_toolkit_style_files}
309     rm -rf ./*
310     popd
311   ;;
312 esac
313
314 %pre resources_1920x1080
315 case "$1" in
316   2)
317     pushd %{dali_toolkit_style_files}
318     rm -rf ./*
319     popd
320   ;;
321 esac
322
323 %pre resources_1920x1080_rpi
324 case "$1" in
325   2)
326     pushd %{dali_toolkit_style_files}
327     rm -rf ./*
328     popd
329   ;;
330 esac
331
332 ##############################
333 # Post Install
334 ##############################
335 %post
336 /sbin/ldconfig
337 exit 0
338
339 %post resources_360x360
340 pushd %{dali_toolkit_style_files}/360x360
341 for FILE in *; do mv ./"${FILE}" ../"${FILE}"; done
342 popd
343
344 %post resources_480x800
345 pushd %{dali_toolkit_style_files}/480x800
346 for FILE in *; do mv ./"${FILE}" ../"${FILE}"; done
347 popd
348
349 %post resources_720x1280
350 pushd %{dali_toolkit_style_files}/720x1280
351 for FILE in *; do mv ./"${FILE}" ../"${FILE}"; done
352 popd
353
354 %post resources_1920x1080
355 pushd %{dali_toolkit_style_files}/1920x1080
356 for FILE in *; do mv ./"${FILE}" ../"${FILE}"; done
357 popd
358
359 %post resources_1920x1080_rpi
360 pushd %{dali_toolkit_style_files}/1920x1080_rpi
361 for FILE in *; do mv ./"${FILE}" ../"${FILE}"; done
362 popd
363
364 ##############################
365 # Pre Uninstall
366 ##############################
367
368 %preun resources_360x360
369 case "$1" in
370   0)
371     %preun resources_360x360
372     pushd %{dali_toolkit_style_files}
373     mv images ./360x360
374     mv dali-toolkit-default-theme.json ./360x360
375     popd
376   ;;
377 esac
378
379 %preun resources_480x800
380 case "$1" in
381   0)
382     %preun resources_480x800
383     pushd %{dali_toolkit_style_files}
384     mv images ./480x800
385     mv dali-toolkit-default-theme.json ./480x800
386     popd
387   ;;
388 esac
389
390 %preun resources_720x1280
391 case "$1" in
392   0)
393     %preun resources_720x1280
394     pushd %{dali_toolkit_style_files}
395     mv images ./720x1280
396     mv dali-toolkit-default-theme.json ./720x1280
397     popd
398   ;;
399 esac
400
401 %preun resources_1920x1080
402 case "$1" in
403   0)
404     %preun resources_1920x1080
405     pushd %{dali_toolkit_style_files}
406     mv images ./1920x1080
407     mv dali-toolkit-default-theme.json ./1920x1080
408     popd
409   ;;
410 esac
411
412 %preun resources_1920x1080_rpi
413 case "$1" in
414   0)
415     %preun resources_1920x1080_rpi
416     pushd %{dali_toolkit_style_files}
417     mv images ./1920x1080_rpi
418     mv dali-toolkit-default-theme.json ./1920x1080_rpi
419     popd
420   ;;
421 esac
422
423 ##############################
424 # Post Uninstall
425 ##############################
426 %postun
427 /sbin/ldconfig
428 exit 0
429
430 %postun resources_360x360
431 case "$1" in
432   0)
433     pushd %{dali_toolkit_style_files}
434     rm -rf *
435     popd
436   ;;
437 esac
438
439 %postun resources_480x800
440 case "$1" in
441   0)
442     pushd %{dali_toolkit_style_files}
443     rm -rf *
444     popd
445   ;;
446 esac
447
448 %postun resources_720x1280
449 case "$1" in
450   0)
451     pushd %{dali_toolkit_style_files}
452     rm -rf *
453     popd
454   ;;
455 esac
456
457 %postun resources_1920x1080
458 case "$1" in
459   0)
460     pushd %{dali_toolkit_style_files}
461     rm -rf *
462     popd
463   ;;
464 esac
465
466 %postun resources_1920x1080_rpi
467 case "$1" in
468   0)
469     pushd %{dali_toolkit_style_files}
470     rm -rf *
471     popd
472   ;;
473 esac
474
475 ##############################
476 # Files in Binary Packages
477 ##############################
478 %files
479 %if 0%{?enable_dali_smack_rules}
480 %manifest dali-toolkit.manifest-smack
481 %else
482 %manifest dali-toolkit.manifest
483 %endif
484 %defattr(-,root,root,-)
485 %{_libdir}/libdali2-toolkit.so*
486 %license LICENSE
487
488 %files devel
489 %defattr(-,root,root,-)
490 %{dev_include_path}/dali-toolkit/*
491 %{_libdir}/pkgconfig/dali2-toolkit.pc
492 %{_bindir}/dali-shader-generator
493
494 %files resources_360x360
495 %manifest dali-toolkit-resources.manifest
496 %defattr(-,root,root,-)
497 %{dali_toolkit_image_files}/*
498 %{dali_toolkit_sound_files}/*
499 %{dali_toolkit_style_files}/360x360/*
500 %{dali_toolkit_style_files}/debug-image-visual-shader-script.json
501 %{dali_toolkit_style_files}/default-feedback-theme.json
502 %{_datadir}/locale/*/LC_MESSAGES/*
503
504 %files resources_480x800
505 %manifest dali-toolkit-resources.manifest
506 %defattr(-,root,root,-)
507 %{dali_toolkit_image_files}/*
508 %{dali_toolkit_sound_files}/*
509 %{dali_toolkit_style_files}/480x800/*
510 %{dali_toolkit_style_files}/debug-image-visual-shader-script.json
511 %{dali_toolkit_style_files}/default-feedback-theme.json
512 %{_datadir}/locale/*/LC_MESSAGES/*
513
514 %files resources_720x1280
515 %manifest dali-toolkit-resources.manifest
516 %defattr(-,root,root,-)
517 %{dali_toolkit_image_files}/*
518 %{dali_toolkit_sound_files}/*
519 %{dali_toolkit_style_files}/720x1280/*
520 %{dali_toolkit_style_files}/debug-image-visual-shader-script.json
521 %{dali_toolkit_style_files}/default-feedback-theme.json
522 %{_datadir}/locale/*/LC_MESSAGES/*
523
524 %files resources_1920x1080
525 %manifest dali-toolkit-resources.manifest
526 %defattr(-,root,root,-)
527 %{dali_toolkit_image_files}/*
528 %{dali_toolkit_sound_files}/*
529 %{dali_toolkit_style_files}/1920x1080/*
530 %{dali_toolkit_style_files}/debug-image-visual-shader-script.json
531 %{dali_toolkit_style_files}/default-feedback-theme.json
532 %{_datadir}/locale/*/LC_MESSAGES/*
533
534 %files resources_1920x1080_rpi
535 %manifest dali-toolkit-resources.manifest
536 %defattr(-,root,root,-)
537 %{dali_toolkit_image_files}/*
538 %{dali_toolkit_sound_files}/*
539 %{dali_toolkit_style_files}/1920x1080_rpi/*
540 %{dali_toolkit_style_files}/debug-image-visual-shader-script.json
541 %{dali_toolkit_style_files}/default-feedback-theme.json
542 %{_datadir}/locale/*/LC_MESSAGES/*
543
544 %files -n %{dali2_scene3d}
545 %if 0%{?enable_dali_smack_rules}
546 %manifest dali-scene3d.manifest-smack
547 %else
548 %manifest dali-scene3d.manifest
549 %endif
550 %defattr(-,root,root,-)
551 %{_libdir}/lib%{dali2_scene3d}.so
552 %license LICENSE
553
554 %files -n %{dali2_scene3d}-devel
555 %defattr(-,root,root,-)
556 %{_includedir}/dali-scene3d/public-api/*
557 %{_includedir}/dali-scene3d/dali-scene3d.h
558 %{_libdir}/pkgconfig/dali2-scene3d.pc
559
560 %files -n %{dali2_physics2d}
561 %if 0%{?enable_dali_smack_rules}
562 %manifest dali-physics-2d.manifest-smack
563 %else
564 %manifest dali-physics-2d.manifest
565 %endif
566 %defattr(-,root,root,-)
567 %{_libdir}/libchipmunk.so*
568 %{_libdir}/libdali2-physics-2d.so*
569 %license LICENSE
570
571 %files -n %{dali2_physics2d}-devel
572 %defattr(-,root,root,-)
573 %{_includedir}/dali-physics/integration-api/*
574 %{_includedir}/dali-physics/public-api/*
575 %{_includedir}/dali-physics/dali-physics.h
576 %{_includedir}/chipmunk/*
577 %{_libdir}/pkgconfig/chipmunk2d.pc
578 %{_libdir}/pkgconfig/dali2-physics-2d.pc
579
580 %files -n %{dali2_physics3d}
581 %if 0%{?enable_dali_smack_rules}
582 %manifest dali-physics-3d.manifest-smack
583 %else
584 %manifest dali-physics-3d.manifest
585 %endif
586 %defattr(-,root,root,-)
587 %{_libdir}/libbullet3.so*
588 %{_libdir}/libdali2-physics-3d.so*
589 %license LICENSE
590
591 %files -n %{dali2_physics3d}-devel
592 %defattr(-,root,root,-)
593 %{_includedir}/dali-physics/integration-api/*
594 %{_includedir}/dali-physics/public-api/*
595 %{_includedir}/dali-physics/dali-physics.h
596 %{_includedir}/bullet/*
597 %{_libdir}/pkgconfig/dali2-physics-3d.pc
598 %{_libdir}/pkgconfig/bullet3.pc