2 # This spec file is used to build DALi Adaptor for different Tizen Profiles
3 # Current profiles are: Mobile, TV, Wearable, Common
5 # The profile variable is defined outside of the spec file in a build.conf file.
6 # It will contain the profile and whether or not to build with X11 or Wayland
8 # gbs will try to download the build.conf for the platform automatically from the repo location when
9 # performing a gbs build ( use gbs build -v to see it download location) E.g.
10 # http://download.tizen.org/snapshots/tizen/tv/tizen-tv/repos/arm-wayland/packages/repodata/xxxx-build.conf.gz
12 # Do not provide .so automatically for the extensions.
13 # This if statement is for backward compatibility with GBM/Obsolete build systems
14 %if "%{?profile}" != "wearable" && "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
15 %global __provides_exclude_from ^.*\\.(wearable|mobile|tv|ivi|common)$
19 Summary: The DALi Tizen Adaptor
22 Group: System/Libraries
23 License: Apache-2.0 and BSD-3-Clause and MIT
24 URL: https://review.tizen.org/git/?p=platform/core/uifw/dali-adaptor.git;a=summary
25 Source0: %{name}-%{version}.tar.gz
27 Requires(post): /sbin/ldconfig
28 Requires(postun): /sbin/ldconfig
30 Provides: libdali-adaptor-cxx11.so
31 Provides: libdali-adaptor-cxx11.so.0
32 Provides: libdali-adaptor-cxx11.so.0.0.0
33 Provides: libdali-adaptor.so
34 Provides: libdali-adaptor.so.0
35 Provides: libdali-adaptor.so.0.0.0
37 %define tizen_platform_config_supported 1
38 BuildRequires: pkgconfig(libtzplatform-config)
40 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
41 # if wearable || "undefined"
42 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
43 BuildRequires: pkgconfig(capi-appfw-watch-application)
44 BuildRequires: pkgconfig(appcore-watch)
45 BuildRequires: pkgconfig(screen_connector_provider)
48 BuildRequires: pkgconfig(gles20)
49 BuildRequires: pkgconfig(glesv2)
50 BuildRequires: pkgconfig(ttrace)
52 BuildRequires: dali-devel
53 BuildRequires: dali-integration-devel
55 BuildRequires: pkgconfig
58 BuildRequires: giflib-devel
59 BuildRequires: pkgconfig(fontconfig)
60 BuildRequires: libjpeg-turbo-devel
61 BuildRequires: pkgconfig(vconf)
62 BuildRequires: tts-devel
63 BuildRequires: pkgconfig(dlog)
64 BuildRequires: libdrm-devel
65 BuildRequires: pkgconfig(libexif)
66 BuildRequires: pkgconfig(libpng)
67 BuildRequires: pkgconfig(egl)
68 BuildRequires: libcurl-devel
69 BuildRequires: pkgconfig(harfbuzz)
70 BuildRequires: fribidi-devel
72 BuildRequires: pkgconfig(capi-system-info)
73 BuildRequires: pkgconfig(capi-system-sensor)
75 BuildRequires: pkgconfig(cairo)
77 BuildRequires: pkgconfig(wayland-egl)
78 BuildRequires: pkgconfig(wayland-client)
79 BuildRequires: wayland-devel
80 BuildRequires: wayland-extension-client-devel
82 # dali-adaptor uses ecore mainloop
83 %if 0%{?tizen_version_major} >= 5
84 BuildRequires: pkgconfig(ecore-wl2)
85 BuildRequires: pkgconfig(wayland-egl-tizen)
87 BuildRequires: pkgconfig(ecore-wayland)
90 # dali-adaptor needs tbm_surface in tizen 3.0 wayland
91 BuildRequires: pkgconfig(libtbm)
94 BuildRequires: pkgconfig(appcore-ui)
95 BuildRequires: pkgconfig(appcore-widget-base)
96 BuildRequires: pkgconfig(bundle)
97 BuildRequires: pkgconfig(capi-appfw-app-common)
98 BuildRequires: pkgconfig(capi-appfw-app-control)
99 BuildRequires: pkgconfig(ecore-imf)
101 BuildRequires: pkgconfig(capi-system-system-settings)
103 # for feedback plugin
104 BuildRequires: pkgconfig(mm-sound)
105 BuildRequires: pkgconfig(feedback)
108 Requires: %{name}-compat = %{version}-%{release}
109 Recommends: %{name}-profile_common = %{version}-%{release}
112 The DALi Tizen Adaptor provides a Tizen specific implementation of the dali-core
113 platform abstraction and application shell
115 ###########################################
116 # Dali adapter for profiles
117 ###########################################
119 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
120 # if mobile || "undefined"
121 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
122 %package profile_mobile
123 Summary: The DALi Tizen Adaptor for mobile
124 Provides: %{name}-compat = %{version}-%{release}
125 Conflicts: %{name}-profile_tv
126 Conflicts: %{name}-profile_wearable
127 Conflicts: %{name}-profile_ivi
128 Conflicts: %{name}-profile_common
130 %description profile_mobile
131 The DALi Tizen Adaptor for mobile.
134 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
135 # if tv ||"undefined"
136 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
138 Summary: The DALi Tizen Adaptor for tv
139 Provides: %{name}-compat = %{version}-%{release}
140 Conflicts: %{name}-profile_mobile
141 Conflicts: %{name}-profile_wearable
142 Conflicts: %{name}-profile_ivi
143 Conflicts: %{name}-profile_common
145 %description profile_tv
146 The DALi Tizen Adaptor for tv.
149 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
150 # if wearable || "undefined"
151 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
152 %package profile_wearable
153 Summary: The DALi Tizen Adaptor for wearable
154 Provides: %{name}-compat = %{version}-%{release}
155 Conflicts: %{name}-profile_mobile
156 Conflicts: %{name}-profile_tv
157 Conflicts: %{name}-profile_ivi
158 Conflicts: %{name}-profile_common
160 %description profile_wearable
161 The DALi Tizen Adaptor for wearable.
164 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
165 # if ivi ||"undefined"
166 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
168 Summary: The DALi Tizen Adaptor for ivi
169 Provides: %{name}-compat = %{version}-%{release}
170 Conflicts: %{name}-profile_mobile
171 Conflicts: %{name}-profile_wearable
172 Conflicts: %{name}-profile_tv
173 Conflicts: %{name}-profile_common
175 %description profile_ivi
176 The DALi Tizen Adaptor for ivi.
179 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
180 # if common ||"undefined"
181 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
182 # Currently Tizen Common we use does not have wayland extensions like xdg-shell
183 %package profile_common
184 Summary: The DALi Tizen Adaptor for common
185 Provides: %{name}-compat = %{version}-%{release}
186 Conflicts: %{name}-profile_mobile
187 Conflicts: %{name}-profile_wearable
188 Conflicts: %{name}-profile_tv
189 Conflicts: %{name}-profile_ivi
191 %description profile_common
192 The DALi Tizen Adaptor for common.
195 ##############################
197 ##############################
199 Summary: Development components for the DALi Tizen Adaptor
200 Group: Development/Building
201 Requires: %{name} = %{version}-%{release}
202 Requires: %{name}-integration-devel = %{version}-%{release}
205 Development components for the DALi Tizen Adaptor - public headers and package configs
207 ##############################
209 ##############################
210 %package integration-devel
211 Summary: Integration development package for the Adaptor
212 Group: Development/Building
213 Requires: %{name} = %{version}-%{release}
215 %description integration-devel
216 Integration development package for the Adaptor - headers for integrating with an adaptor library.
218 ##############################
219 # Dali Feedback Plugin
220 ##############################
221 %package dali-feedback-plugin
222 Summary: Plugin to play haptic and audio feedback for Dali
223 Group: System/Libraries
224 Requires: %{name} = %{version}-%{release}
225 %description dali-feedback-plugin
226 Feedback plugin to play haptic and audio feedback for Dali
228 ##############################
230 ##############################
234 #Use TZ_PATH when tizen version is 3.x or greater
236 %define dali_data_rw_dir %TZ_SYS_RO_SHARE/dali/
237 %define dali_data_ro_dir %TZ_SYS_RO_SHARE/dali/
238 %define font_preloaded_path %TZ_SYS_RO_SHARE/fonts/
239 %define font_downloaded_path %TZ_SYS_SHARE/fonts/
240 %define font_application_path %TZ_SYS_RO_SHARE/app_fonts/
241 %define font_configuration_file %TZ_SYS_ETC/fonts/conf.avail/99-slp.conf
243 %define user_shader_cache_dir %{dali_data_ro_dir}/core/shaderbin/
244 %define dali_plugin_sound_files /plugins/sounds/
246 ##############################
248 ##############################
251 CXXFLAGS+=" -Wall -g -Os -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections -DGL_GLEXT_PROTOTYPES"
252 LDFLAGS+=" -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--gc-sections -lttrace -Wl,-Bsymbolic-functions "
255 CXXFLAGS+=" -D_ARCH_ARM_ -lgcc"
259 CXXFLAGS+=" -DWAYLAND"
260 cmake_flags=" -DENABLE_WAYLAND=ON"
262 # Use this conditional when Tizen version is 5.x or greater
263 %if 0%{?tizen_version_major} >= 5
264 CXXFLAGS+=" -DOVER_TIZEN_VERSION_5"
266 # Need Ecore-Wayland2 when Tizen version is 5.x or greater
267 CFLAGS+=" -DECORE_WAYLAND2 -DEFL_BETA_API_SUPPORT"
268 CXXFLAGS+=" -DECORE_WAYLAND2 -DEFL_BETA_API_SUPPORT"
269 cmake_flags+=" -DENABLE_ECORE_WAYLAND2=ON"
272 %if 0%{?enable_debug}
273 cmake_flags+=" -DCMAKE_BUILD_TYPE=Debug"
276 %if 0%{?enable_trace}
277 cmake_flags+=" -DENABLE_TRACE=ON"
280 %if 0%{?enable_appfw}
281 cmake_flags+=" -DUSE_APPFW"
285 cd %{_builddir}/%{name}-%{version}/build/tizen
287 DALI_DATA_RW_DIR="%{dali_data_rw_dir}" ; export DALI_DATA_RW_DIR
288 DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR
289 FONT_PRELOADED_PATH="%{font_preloaded_path}" ; export FONT_PRELOADED_PATH
290 FONT_DOWNLOADED_PATH="%{font_downloaded_path}" ; export FONT_DOWNLOADED_PATH
291 FONT_APPLICATION_PATH="%{font_application_path}" ; export FONT_APPLICATION_PATH
292 FONT_CONFIGURATION_FILE="%{font_configuration_file}" ; export FONT_CONFIGURATION_FILE
293 %if 0%{?tizen_platform_config_supported}
294 TIZEN_PLATFORM_CONFIG_SUPPORTED="%{tizen_platform_config_supported}" ; export TIZEN_PLATFORM_CONFIG_SUPPORTED
297 cmake_flags+=" -DCMAKE_INSTALL_PREFIX=$PREFIX"
298 cmake_flags+=" -DCMAKE_INSTALL_LIBDIR=%{_libdir}"
299 cmake_flags+=" -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir}"
300 cmake_flags+=" -DENABLE_TIZEN_MAJOR_VERSION=%{tizen_version_major}"
301 cmake_flags+=" -DENABLE_FEEDBACK=YES"
302 cmake_flags+=" -DENABLE_APPFW=YES"
304 # Set up the build via Cmake
305 #######################################################################
306 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
307 # if mobile || "undefined"
308 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
313 cmake -DENABLE_PROFILE=MOBILE $cmake_flags ..
316 make %{?jobs:-j%jobs}
321 #######################################################################
322 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
323 # if tv ||"undefined"
324 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
329 cmake -DENABLE_PROFILE=TV $cmake_flags ..
332 make %{?jobs:-j%jobs}
337 #######################################################################
338 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
339 # if wearable || "undefined"
340 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
345 cmake -DENABLE_PROFILE=WEARABLE $cmake_flags ..
348 make %{?jobs:-j%jobs}
353 #######################################################################
354 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
355 # if ivi ||"undefined"
356 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
361 cmake -DENABLE_PROFILE=IVI $cmake_flags ..
364 make %{?jobs:-j%jobs}
369 #######################################################################
371 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
372 # if common ||"undefined"
373 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
378 cmake -DENABLE_PROFILE=COMMON $cmake_flags ..
381 make %{?jobs:-j%jobs}
386 ##############################
388 ##############################
392 pushd %{_builddir}/%{name}-%{version}/build/tizen
394 # if mobile || "undefined"
395 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
398 %if "%{?profile}" != "mobile"
399 pushd %{buildroot}%{_libdir}
400 cp libdali-adaptor.so.*.*.* libdali-adaptor.so.mobile # If we're only building this profile, then there's no need to copy the lib
402 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
407 # if tv ||"undefined"
408 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
411 %if "%{?profile}" != "tv"
412 pushd %{buildroot}%{_libdir}
413 cp libdali-adaptor.so.*.*.* libdali-adaptor.so.tv # If we're only building this profile, then there's no need to copy the lib
415 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
420 # if wearable || "undefined"
421 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
424 %if "%{?profile}" != "wearable"
425 pushd %{buildroot}%{_libdir}
426 cp libdali-adaptor.so.*.*.* libdali-adaptor.so.wearable # If we're only building this profile, then there's no need to copy the lib
428 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
433 # if ivi ||"undefined"
434 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
437 %if "%{?profile}" != "ivi"
438 pushd %{buildroot}%{_libdir}
439 cp libdali-adaptor.so.*.*.* libdali-adaptor.so.ivi # If we're only building this profile, then there's no need to copy the lib
441 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
446 # if common ||"undefined"
447 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
450 # No clean so we can gather symbol/size information for the common profile
454 # Create links to ensure linking with cxx11 library is preserved
455 pushd %{buildroot}%{_libdir}
456 ln -sf libdali-adaptor.so libdali-adaptor-cxx11.so
457 ln -sf libdali-adaptor.so libdali-adaptor-cxx11.so.0
458 ln -sf libdali-adaptor.so libdali-adaptor-cxx11.so.0.0.0
461 # Create a symbolic link in integration-api to preserve legacy repo build
462 pushd %{buildroot}%{_includedir}/dali/integration-api
463 ln -sf adaptor-framework adaptors
466 ##############################
468 # 1 - Pre Install new package
469 # 2 - Install new package
470 # 3 - Post install new package
471 # 4 - Pre uninstall old package
472 # 5 - Remove files not overwritten by new package
473 # 6 - Post uninstall old package
474 ##############################
476 ##############################
477 # Adaptor package Commands
483 for i in mobile tv wearable ivi; do [[ -f libdali-adaptor.so.$i ]] && ln -sf libdali-adaptor.so.$i libdali-adaptor.so.0.0.0; done
495 ##############################
496 # Mobile Profile Commands
497 # if mobile || "undefined"
498 # No need to create a symbolic link on install required if only building this profile
499 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
501 %if "%{?profile}" != "mobile"
503 ln -sf libdali-adaptor.so.mobile libdali-adaptor.so.0.0.0
509 %postun profile_mobile
514 ##############################
515 # TV Profile Commands
516 # No need to create a symbolic link on install required if only building this profile
517 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
519 %if "%{?profile}" != "tv"
521 ln -sf libdali-adaptor.so.tv libdali-adaptor.so.0.0.0
532 ##############################
533 # Wearable Profile Commands
534 # No need to create a symbolic link on install required if only building this profile
535 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
536 %post profile_wearable
537 %if "%{?profile}" != "wearable"
539 ln -sf libdali-adaptor.so.wearable libdali-adaptor.so.0.0.0
545 %postun profile_wearable
550 ##############################
551 # IVI Profile Commands
552 # No need to create a symbolic link on install required if only building this profile
553 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
555 %if "%{?profile}" != "ivi"
557 ln -sf libdali-adaptor.so.ivi libdali-adaptor.so.0.0.0
568 ##############################
569 # Common Profile Commands
570 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
575 %postun profile_common
580 ##############################
581 # Files in Binary Packages
582 ##############################
585 %manifest dali-adaptor.manifest
586 %defattr(-,root,root,-)
587 %dir %{user_shader_cache_dir}
590 %defattr(-,root,root,-)
591 %{_libdir}/libdali-adaptor-cxx11.so
592 %{_libdir}/libdali-adaptor-cxx11.so.0
593 %{_libdir}/libdali-adaptor-cxx11.so.0.0.0
594 %{_libdir}/libdali-adaptor.so
595 %{_libdir}/libdali-adaptor.so.0
596 %{_libdir}/libdali-adaptor.so.0.0.0
598 #################################################
600 %files dali-feedback-plugin
601 %manifest dali-adaptor.manifest
602 %defattr(-,root,root,-)
603 %{_libdir}/libdali-feedback-plugin-cxx11.so*
604 %{dali_plugin_sound_files}/*
606 #################################################
608 # if common ||"undefined"
609 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
610 %files profile_common
611 %manifest dali-adaptor.manifest
612 # default .so files are housed in the main pkg.
615 # if mobile || "undefined"
616 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
617 %files profile_mobile
618 %manifest dali-adaptor.manifest
619 %defattr(-,root,root,-)
620 %if "%{?profile}" != "mobile"
621 %{_libdir}/libdali-adaptor.so.mobile
625 # if tv ||"undefined"
626 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
628 %manifest dali-adaptor.manifest
629 %defattr(-,root,root,-)
630 %if "%{?profile}" != "tv"
631 %{_libdir}/libdali-adaptor.so.tv
635 # if wearable || "undefined"
636 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
637 %files profile_wearable
638 %manifest dali-adaptor.manifest
639 %defattr(-,root,root,-)
640 %if "%{?profile}" != "wearable"
641 %{_libdir}/libdali-adaptor.so.wearable
645 # if ivi ||"undefined"
646 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
648 %manifest dali-adaptor.manifest
649 %defattr(-,root,root,-)
650 %if "%{?profile}" != "ivi"
651 %{_libdir}/libdali-adaptor.so.ivi
656 %defattr(-,root,root,-)
657 %{_includedir}/dali/dali.h
658 %{_includedir}/dali/public-api/*
659 %{_includedir}/dali/devel-api/*
660 %{_includedir}/dali/doc/*
661 %{_libdir}/pkgconfig/dali-adaptor.pc
663 %files integration-devel
664 %defattr(-,root,root,-)
665 %{_includedir}/dali/integration-api/adaptor-framework/*
666 %{_includedir}/dali/integration-api/adaptors
667 %{_libdir}/pkgconfig/dali-adaptor-integration.pc