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
31 %define tizen_platform_config_supported 1
32 BuildRequires: pkgconfig(libtzplatform-config)
34 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
35 # if wearable || "undefined"
36 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
37 BuildRequires: pkgconfig(capi-appfw-watch-application)
38 BuildRequires: pkgconfig(appcore-watch)
39 BuildRequires: pkgconfig(screen_connector_provider)
42 BuildRequires: pkgconfig(gles20)
43 BuildRequires: pkgconfig(glesv2)
44 BuildRequires: pkgconfig(ttrace)
46 BuildRequires: dali2-devel
47 BuildRequires: dali2-integration-devel
49 BuildRequires: pkgconfig
52 BuildRequires: giflib-devel
53 BuildRequires: pkgconfig(fontconfig)
54 BuildRequires: libjpeg-turbo-devel
55 BuildRequires: pkgconfig(vconf)
56 BuildRequires: tts-devel
57 BuildRequires: pkgconfig(dlog)
58 BuildRequires: libdrm-devel
59 BuildRequires: pkgconfig(libexif)
60 BuildRequires: pkgconfig(libpng)
61 BuildRequires: pkgconfig(egl)
62 BuildRequires: libcurl-devel
63 BuildRequires: pkgconfig(harfbuzz)
64 BuildRequires: hyphen-devel
65 BuildRequires: fribidi-devel
67 BuildRequires: pkgconfig(capi-system-info)
68 BuildRequires: pkgconfig(capi-system-sensor)
70 BuildRequires: pkgconfig(cairo)
72 BuildRequires: pkgconfig(wayland-egl)
73 BuildRequires: pkgconfig(wayland-client)
74 BuildRequires: pkgconfig(input-method-client)
75 BuildRequires: wayland-devel
76 BuildRequires: wayland-extension-client-devel
78 # WebP support only from Tizen 6 onwards
79 %if 0%{?tizen_version_major} >= 6
80 BuildRequires: pkgconfig(libwebp)
81 BuildRequires: pkgconfig(libwebpdecoder)
82 BuildRequires: pkgconfig(libwebpdemux)
83 BuildRequires: pkgconfig(libwebpmux)
86 # We use ecore mainloop
87 %if 0%{?tizen_version_major} >= 5
88 BuildRequires: pkgconfig(ecore-wl2)
89 BuildRequires: pkgconfig(wayland-egl-tizen)
91 BuildRequires: pkgconfig(ecore-wayland)
94 # We need tbm_surface in tizen 3.0 wayland
95 BuildRequires: pkgconfig(libtbm)
98 BuildRequires: pkgconfig(appcore-ui)
99 BuildRequires: pkgconfig(appcore-widget-base)
100 BuildRequires: pkgconfig(bundle)
101 BuildRequires: pkgconfig(capi-appfw-app-common)
102 BuildRequires: pkgconfig(capi-appfw-app-control)
103 BuildRequires: pkgconfig(ecore-imf)
105 BuildRequires: pkgconfig(capi-system-system-settings)
107 # for ATSPI (Accessibility) support
108 BuildRequires: pkgconfig(eldbus)
110 # for feedback plugin
111 BuildRequires: pkgconfig(mm-sound)
112 BuildRequires: pkgconfig(feedback)
113 BuildRequires: pkgconfig(component-based-core-base)
116 %if ( 0%{?tizen_version_major} == 6 && 0%{?tizen_version_minor} >= 5 ) || 0%{?tizen_version_major} >= 7
117 BuildRequires: pkgconfig(thorvg)
121 Requires: %{name}-compat = %{version}-%{release}
122 Recommends: %{name}-profile_common = %{version}-%{release}
125 The DALi Tizen Adaptor provides a Tizen specific implementation of the dali-core
126 platform abstraction and application shell
128 ###########################################
129 # Dali adapter for profiles
130 ###########################################
132 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
133 # if mobile || "undefined"
134 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
135 %package profile_mobile
136 Summary: The DALi Tizen Adaptor for mobile
137 Provides: %{name}-compat = %{version}-%{release}
138 Conflicts: %{name}-profile_tv
139 Conflicts: %{name}-profile_wearable
140 Conflicts: %{name}-profile_ivi
141 Conflicts: %{name}-profile_common
143 %description profile_mobile
144 The DALi Tizen Adaptor for mobile.
147 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
148 # if tv ||"undefined"
149 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
151 Summary: The DALi Tizen Adaptor for tv
152 Provides: %{name}-compat = %{version}-%{release}
153 Conflicts: %{name}-profile_mobile
154 Conflicts: %{name}-profile_wearable
155 Conflicts: %{name}-profile_ivi
156 Conflicts: %{name}-profile_common
158 %description profile_tv
159 The DALi Tizen Adaptor for tv.
162 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
163 # if wearable || "undefined"
164 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
165 %package profile_wearable
166 Summary: The DALi Tizen Adaptor for wearable
167 Provides: %{name}-compat = %{version}-%{release}
168 Conflicts: %{name}-profile_mobile
169 Conflicts: %{name}-profile_tv
170 Conflicts: %{name}-profile_ivi
171 Conflicts: %{name}-profile_common
173 %description profile_wearable
174 The DALi Tizen Adaptor for wearable.
177 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
178 # if ivi ||"undefined"
179 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
181 Summary: The DALi Tizen Adaptor for ivi
182 Provides: %{name}-compat = %{version}-%{release}
183 Conflicts: %{name}-profile_mobile
184 Conflicts: %{name}-profile_wearable
185 Conflicts: %{name}-profile_tv
186 Conflicts: %{name}-profile_common
188 %description profile_ivi
189 The DALi Tizen Adaptor for ivi.
192 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
193 # if common ||"undefined"
194 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
195 # Currently Tizen Common we use does not have wayland extensions like xdg-shell
196 %package profile_common
197 Summary: The DALi Tizen Adaptor for common
198 Provides: %{name}-compat = %{version}-%{release}
199 Conflicts: %{name}-profile_mobile
200 Conflicts: %{name}-profile_wearable
201 Conflicts: %{name}-profile_tv
202 Conflicts: %{name}-profile_ivi
204 %description profile_common
205 The DALi Tizen Adaptor for common.
208 ##############################
210 ##############################
212 Summary: Development components for the DALi Tizen Adaptor
213 Group: Development/Building
214 Requires: %{name} = %{version}-%{release}
215 Requires: %{name}-integration-devel = %{version}-%{release}
218 Development components for the DALi Tizen Adaptor - public headers and package configs
220 ##############################
222 ##############################
223 %package integration-devel
224 Summary: Integration development package for the Adaptor
225 Group: Development/Building
226 Requires: %{name} = %{version}-%{release}
228 %description integration-devel
229 Integration development package for the Adaptor - headers for integrating with an adaptor library.
231 ##############################
232 # Dali Feedback Plugin
233 ##############################
234 %package dali2-feedback-plugin
235 Summary: Plugin to play haptic and audio feedback for Dali
236 Group: System/Libraries
237 Requires: %{name} = %{version}-%{release}
238 %description dali2-feedback-plugin
239 Feedback plugin to play haptic and audio feedback for Dali
241 #Use TZ_PATH when tizen version is 3.x or greater
242 %define dali_data_rw_dir %TZ_SYS_RO_SHARE/dali/
243 %define dali_data_ro_dir %TZ_SYS_RO_SHARE/dali/
244 %define font_preloaded_path %TZ_SYS_RO_SHARE/fonts/
245 %define font_downloaded_path %TZ_SYS_SHARE/fonts/
246 %define font_application_path %TZ_SYS_RO_SHARE/app_fonts/
247 %define font_configuration_file %TZ_SYS_ETC/fonts/conf.avail/99-slp.conf
249 %define user_shader_cache_dir %{dali_data_ro_dir}/core/shaderbin/
250 %define dali_plugin_sound_files /plugins/sounds/
252 ##############################
254 ##############################
259 ##############################
261 ##############################
264 CXXFLAGS+=" -Wall -g -Os -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections -DGL_GLEXT_PROTOTYPES"
265 LDFLAGS+=" -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--gc-sections -lttrace -Wl,-Bsymbolic-functions "
268 CXXFLAGS+=" -D_ARCH_ARM_ -lgcc"
272 CXXFLAGS+=" -DWAYLAND"
273 cmake_flags=" -DENABLE_WAYLAND=ON -DENABLE_ATSPI=ON"
275 # Use this conditional when Tizen version is 5.x or greater
276 %if 0%{?tizen_version_major} >= 5
277 CXXFLAGS+=" -DOVER_TIZEN_VERSION_5"
279 # Need Ecore-Wayland2 when Tizen version is 5.x or greater
280 CFLAGS+=" -DECORE_WAYLAND2 -DEFL_BETA_API_SUPPORT"
281 CXXFLAGS+=" -DECORE_WAYLAND2 -DEFL_BETA_API_SUPPORT"
282 cmake_flags+=" -DENABLE_ECORE_WAYLAND2=ON"
285 %if 0%{?enable_debug}
286 cmake_flags+=" -DCMAKE_BUILD_TYPE=Debug"
289 %if 0%{?enable_trace}
290 cmake_flags+=" -DENABLE_TRACE=ON"
294 cd %{_builddir}/%{name}-%{version}/build/tizen
296 DALI_DATA_RW_DIR="%{dali_data_rw_dir}" ; export DALI_DATA_RW_DIR
297 DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR
298 FONT_PRELOADED_PATH="%{font_preloaded_path}" ; export FONT_PRELOADED_PATH
299 FONT_DOWNLOADED_PATH="%{font_downloaded_path}" ; export FONT_DOWNLOADED_PATH
300 FONT_APPLICATION_PATH="%{font_application_path}" ; export FONT_APPLICATION_PATH
301 FONT_CONFIGURATION_FILE="%{font_configuration_file}" ; export FONT_CONFIGURATION_FILE
302 %if 0%{?tizen_platform_config_supported}
303 TIZEN_PLATFORM_CONFIG_SUPPORTED="%{tizen_platform_config_supported}" ; export TIZEN_PLATFORM_CONFIG_SUPPORTED
306 cmake_flags+=" -DCMAKE_INSTALL_PREFIX=$PREFIX"
307 cmake_flags+=" -DCMAKE_INSTALL_LIBDIR=%{_libdir}"
308 cmake_flags+=" -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir}"
309 cmake_flags+=" -DENABLE_TIZEN_MAJOR_VERSION=%{tizen_version_major}"
310 cmake_flags+=" -DENABLE_FEEDBACK=YES"
311 cmake_flags+=" -DENABLE_APPFW=YES"
312 cmake_flags+=" -DCOMPONENT_APPLICATION_SUPPORT=YES"
314 # Set up the build via Cmake
315 #######################################################################
316 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
317 # if mobile || "undefined"
318 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
323 cmake -DENABLE_PROFILE=MOBILE $cmake_flags ..
326 make %{?jobs:-j%jobs}
331 #######################################################################
332 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
333 # if tv ||"undefined"
334 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
339 cmake -DENABLE_PROFILE=TV $cmake_flags ..
342 make %{?jobs:-j%jobs}
347 #######################################################################
348 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
349 # if wearable || "undefined"
350 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
355 cmake -DENABLE_PROFILE=WEARABLE $cmake_flags ..
358 make %{?jobs:-j%jobs}
363 #######################################################################
364 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
365 # if ivi ||"undefined"
366 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
371 cmake -DENABLE_PROFILE=IVI $cmake_flags ..
374 make %{?jobs:-j%jobs}
379 #######################################################################
381 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
382 # if common ||"undefined"
383 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
388 cmake -DENABLE_PROFILE=COMMON $cmake_flags ..
391 make %{?jobs:-j%jobs}
396 ##############################
398 ##############################
402 pushd %{_builddir}/%{name}-%{version}/build/tizen
404 # if mobile || "undefined"
405 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
408 %if "%{?profile}" != "mobile"
409 pushd %{buildroot}%{_libdir}
410 cp libdali2-adaptor.so.*.*.* libdali2-adaptor.so.mobile # If we're only building this profile, then there's no need to copy the lib
412 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
417 # if tv ||"undefined"
418 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
421 %if "%{?profile}" != "tv"
422 pushd %{buildroot}%{_libdir}
423 cp libdali2-adaptor.so.*.*.* libdali2-adaptor.so.tv # If we're only building this profile, then there's no need to copy the lib
425 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
430 # if wearable || "undefined"
431 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
434 %if "%{?profile}" != "wearable"
435 pushd %{buildroot}%{_libdir}
436 cp libdali2-adaptor.so.*.*.* libdali2-adaptor.so.wearable # If we're only building this profile, then there's no need to copy the lib
438 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
443 # if ivi ||"undefined"
444 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
447 %if "%{?profile}" != "ivi"
448 pushd %{buildroot}%{_libdir}
449 cp libdali2-adaptor.so.*.*.* libdali2-adaptor.so.ivi # If we're only building this profile, then there's no need to copy the lib
451 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
456 # if common ||"undefined"
457 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
460 # No clean so we can gather symbol/size information for the common profile
464 # Create a symbolic link in integration-api to preserve legacy repo build
465 pushd %{buildroot}%{_includedir}/dali/integration-api
466 ln -sf adaptor-framework adaptors
469 ##############################
471 # 1 - Pre Install new package
472 # 2 - Install new package
473 # 3 - Post install new package
474 # 4 - Pre uninstall old package
475 # 5 - Remove files not overwritten by new package
476 # 6 - Post uninstall old package
477 ##############################
479 ##############################
480 # Adaptor package Commands
486 for i in mobile tv wearable ivi; do [[ -f libdali2-adaptor.so.$i ]] && ln -sf libdali2-adaptor.so.$i libdali2-adaptor.so.2.0.0; done
498 ##############################
499 # Mobile Profile Commands
500 # if mobile || "undefined"
501 # No need to create a symbolic link on install required if only building this profile
502 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
504 %if "%{?profile}" != "mobile"
506 ln -sf libdali2-adaptor.so.mobile libdali2-adaptor.so.2.0.0
512 %postun profile_mobile
517 ##############################
518 # TV Profile Commands
519 # No need to create a symbolic link on install required if only building this profile
520 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
522 %if "%{?profile}" != "tv"
524 ln -sf libdali2-adaptor.so.tv libdali2-adaptor.so.2.0.0
535 ##############################
536 # Wearable Profile Commands
537 # No need to create a symbolic link on install required if only building this profile
538 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
539 %post profile_wearable
540 %if "%{?profile}" != "wearable"
542 ln -sf libdali2-adaptor.so.wearable libdali2-adaptor.so.2.0.0
548 %postun profile_wearable
553 ##############################
554 # IVI Profile Commands
555 # No need to create a symbolic link on install required if only building this profile
556 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
558 %if "%{?profile}" != "ivi"
560 ln -sf libdali2-adaptor.so.ivi libdali2-adaptor.so.2.0.0
571 ##############################
572 # Common Profile Commands
573 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
578 %postun profile_common
583 ##############################
584 # Files in Binary Packages
585 ##############################
588 %manifest dali-adaptor.manifest
589 %defattr(-,root,root,-)
590 %dir %{user_shader_cache_dir}
593 %defattr(-,root,root,-)
594 %{_libdir}/libdali2-adaptor.so
595 %{_libdir}/libdali2-adaptor.so.2
596 %{_libdir}/libdali2-adaptor.so.2.0.0
598 #################################################
600 %files dali2-feedback-plugin
601 %manifest dali-adaptor.manifest
602 %defattr(-,root,root,-)
603 %{_libdir}/libdali2-feedback-plugin.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}/libdali2-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}/libdali2-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}/libdali2-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}/libdali2-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/dali2-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/dali2-adaptor-integration.pc