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
16 Summary: The DALi Tizen Adaptor
19 Group: System/Libraries
20 License: Apache-2.0 and BSD-2-Clause and MIT
21 URL: https://review.tizen.org/git/?p=platform/core/uifw/dali-adaptor.git;a=summary
22 Source0: %{name}-%{version}.tar.gz
24 Requires(post): /sbin/ldconfig
25 Requires(postun): /sbin/ldconfig
28 # Get the profile from tizen_profile_name if it exists.
29 %if 0%{?tizen_profile_name:1}
30 %define profile %{tizen_profile_name}
33 %if "%{profile}" == "mobile"
34 %define dali_profile MOBILE
35 %define dali_feedback_plugin 0
36 %define shaderbincache_flag DISABLE
37 BuildRequires: pkgconfig(gles20)
38 %define gles_requirement_setup 1
41 %if "%{profile}" == "tv"
42 %define dali_profile TV
43 %define dali_feedback_plugin 0
44 %define shaderbincache_flag ENABLE
45 BuildRequires: pkgconfig(glesv2)
46 %define gles_requirement_setup 1
49 %if "%{profile}" == "wearable"
50 %define dali_profile WEARABLE
51 %define dali_feedback_plugin 0
52 %define shaderbincache_flag DISABLE
53 BuildRequires: pkgconfig(gles20)
54 %define gles_requirement_setup 1
57 %if "%{profile}" == "common"
58 %define dali_profile COMMON
59 %define dali_feedback_plugin 0
60 %define tizen_2_2_compatibility 1
61 %define shaderbincache_flag DISABLE
62 BuildRequires: pkgconfig(glesv2)
63 %define gles_requirement_setup 1
66 # If we have not set a BuildRequires for the gles version, default it here.
67 %{!?gles_requirement_setup: BuildRequires: pkgconfig(glesv2)}
69 # macro is enabled by passing gbs build --define "with_libuv 1"
70 %define build_with_libuv 0%{?with_libuv:1}
72 BuildRequires: pkgconfig
74 BuildRequires: pkgconfig(sensor)
75 BuildRequires: pkgconfig(aul)
76 BuildRequires: giflib-devel
77 BuildRequires: pkgconfig(fontconfig)
78 BuildRequires: libjpeg-turbo-devel
79 BuildRequires: dali-devel
80 BuildRequires: dali-integration-devel
81 BuildRequires: pkgconfig(vconf)
82 BuildRequires: tts-devel
83 BuildRequires: pkgconfig(dlog)
84 BuildRequires: libdrm-devel
85 BuildRequires: pkgconfig(libexif)
86 BuildRequires: pkgconfig(libpng)
87 BuildRequires: pkgconfig(egl)
88 BuildRequires: libcurl-devel
89 BuildRequires: pkgconfig(harfbuzz)
90 BuildRequires: fribidi-devel
92 %if 0%{?tizen_2_2_compatibility} != 1
93 BuildRequires: pkgconfig(capi-system-info)
96 %if 0%{?build_with_libuv}
97 # Tizen currently does not have libuv as a separate libuv package
98 # So we have to look into the uv headers bundled inside node-js
99 BuildRequires: nodejs-devel
103 %define dali_needs_efl_libraries 1
104 %define dali_needs_appfw_libraries 1
107 ####### BUILDING FOR WAYLAND #######
108 BuildRequires: pkgconfig(wayland-egl)
109 BuildRequires: pkgconfig(wayland-client)
110 BuildRequires: wayland-devel
111 # Currently Tizen Common we use does not have wayland extensions like xdg-shell
112 %if "%{profile}" != "common"
113 BuildRequires: wayland-extension-client-devel
115 %if %{build_with_libuv}
116 ####### BUILDING FOR PURE WAYLAND #######
117 # if we're building with wayland and runnning under node.js then we are using libuv mainloop
118 # and DALis own wayland client (it needs wayland-client headers).
119 # EFL libraries and APP Framework libraries are not required in this case
120 %define dali_needs_efl_libraries 0
121 %define dali_needs_appfw_libraries 0
122 BuildRequires: libxkbcommon-devel
124 ####### BUILDING FOR ECORE WAYLAND #######
125 BuildRequires: pkgconfig(ecore-wayland)
127 ####### BUILDING FOR X11#######
129 BuildRequires: pkgconfig(egl)
130 BuildRequires: pkgconfig(xext)
131 BuildRequires: pkgconfig(xi)
132 BuildRequires: pkgconfig(xfixes)
133 BuildRequires: pkgconfig(xdamage)
134 BuildRequires: pkgconfig(utilX)
137 ###### Building with EFL libraries
138 %if 0%{?dali_needs_efl_libraries}
139 BuildRequires: pkgconfig(evas)
140 BuildRequires: pkgconfig(elementary)
143 ###### Build with APP Framework
144 %if 0%{?dali_needs_appfw_libraries}
145 BuildRequires: pkgconfig(capi-appfw-application)
146 BuildRequires: pkgconfig(capi-system-system-settings)
149 %if 0%{?over_tizen_2_2}
150 BuildRequires: pkgconfig(capi-system-info)
156 The DALi Tizen Adaptor provides a Tizen specific implementation of the dali-core
157 platform abstraction and application shell
159 ##############################
161 ##############################
163 Summary: Development components for the DALi Tizen Adaptor
164 Group: Development/Building
165 Requires: %{name} = %{version}-%{release}
166 Requires: %{name}-integration-devel = %{version}-%{release}
169 Development components for the DALi Tizen Adaptor - public headers and package configs
171 ##############################
173 ##############################
174 %package integration-devel
175 Summary: Integration development package for the Adaptor
176 Group: Development/Building
177 Requires: %{name} = %{version}-%{release}
179 %description integration-devel
180 Integration development package for the Adaptor - headers for integrating with an adaptor library.
182 ##############################
183 # Dali Feedback Plugin
184 ##############################
185 %package dali-feedback-plugin
186 Summary: Plugin to play haptic and audio feedback for Dali
187 Group: System/Libraries
188 %if 0%{?dali_feedback_plugin}
189 #Requires: libdeviced
190 BuildRequires: pkgconfig(mm-sound)
191 BuildRequires: pkgconfig(haptic)
192 BuildRequires: libfeedback-devel
195 %description dali-feedback-plugin
196 Feedback plugin to play haptic and audio feedback for Dali
198 ##############################
200 ##############################
203 %define dali_data_rw_dir /usr/share/dali/
204 %define dali_data_ro_dir /usr/share/dali/
205 %define user_shader_cache_dir %{dali_data_ro_dir}/core/shaderbin/
206 %define font_preloaded_path /usr/share/fonts/
207 %define font_downloaded_path /opt/share/fonts/
208 %define font_application_path /usr/share/app_fonts/
209 %define font_configuration_file /opt/etc/fonts/conf.avail/99-slp.conf
210 %define dali_plugin_sound_files %{dali_data_ro_dir}/plugins/sounds/
212 %define dev_include_path %{_includedir}
214 ##############################
216 ##############################
219 CXXFLAGS+=" -Wall -g -Os -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections "
220 LDFLAGS+=" -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--gc-sections -Wl,-Bsymbolic-functions "
223 CXXFLAGS+=" -D_ARCH_ARM_ -lgcc"
228 CXXFLAGS+=" -DWAYLAND"
229 configure_flags="--enable-wayland"
232 %if 0%{?tizen_2_2_compatibility}
233 CFLAGS+=" -DTIZEN_SDK_2_2_COMPATIBILITY"
234 CXXFLAGS+=" -DTIZEN_SDK_2_2_COMPATIBILITY"
238 cd %{_builddir}/%{name}-%{version}/build/tizen
241 DALI_DATA_RW_DIR="%{dali_data_rw_dir}" ; export DALI_DATA_RW_DIR
242 DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR
243 FONT_PRELOADED_PATH="%{font_preloaded_path}" ; export FONT_PRELOADED_PATH
244 FONT_DOWNLOADED_PATH="%{font_downloaded_path}" ; export FONT_DOWNLOADED_PATH
245 FONT_APPLICATION_PATH="%{font_application_path}" ; export FONT_APPLICATION_PATH
246 FONT_CONFIGURATION_FILE="%{font_configuration_file}" ; export FONT_CONFIGURATION_FILE
248 # Default to GLES 2.0 if not specified.
249 %{!?target_gles_version: %define target_gles_version 20}
251 # Set up the build via configure.
252 %configure --prefix=$PREFIX --with-jpeg-turbo --enable-gles=%{target_gles_version} --enable-shaderbincache=%{shaderbincache_flag} --enable-profile=%{dali_profile} \
253 %if 0%{?dali_feedback_plugin}
256 %if 0%{?tizen_2_2_compatibility}
257 --with-tizen-2-2-compatibility \
259 %if 0%{?dali_needs_efl_libraries}
264 %if 0%{?dali_needs_appfw_libraries}
269 %if %{?build_with_libuv}
270 --with-libuv=/usr/include/node/ \
272 $configure_flags --libdir=%{_libdir}
275 make %{?jobs:-j%jobs}
277 ##############################
279 ##############################
283 %make_install DALI_DATA_RW_DIR="%{dali_data_rw_dir}" DALI_DATA_RO_DIR="%{dali_data_ro_dir}"
286 mkdir -p %{buildroot}/usr/share/license
287 cp -af %{_builddir}/%{name}-%{version}/LICENSE %{buildroot}/usr/share/license/%{name}
289 ##############################
291 # 1 - Pre Install new package
292 # 2 - Install new package
293 # 3 - Post install new package
294 # 4 - Pre uninstall old package
295 # 5 - Remove files not overwritten by new package
296 # 6 - Post uninstall old package
297 ##############################
302 ##############################
303 # Post Install new package
304 ##############################
309 %if 0%{?dali_feedback_plugin}
310 %post dali-feedback-plugin
315 ##############################
316 # Pre Uninstall old package
317 ##############################
321 ##############################
322 # Post Uninstall old package
323 ##############################
328 %if 0%{?dali_feedback_plugin}
329 %postun dali-feedback-plugin
334 ##############################
335 # Files in Binary Packages
336 ##############################
339 %manifest dali-adaptor.manifest
340 %defattr(-,root,root,-)
341 %{_libdir}/libdali-adap*.so*
342 %defattr(-,app,app,-)
343 %dir %{user_shader_cache_dir}
345 %{_datadir}/license/%{name}
348 %defattr(-,root,root,-)
349 %{dev_include_path}/dali/dali.h
350 %{dev_include_path}/dali/public-api/*
351 %{dev_include_path}/dali/devel-api/*
352 %{dev_include_path}/dali/doc/*
353 %{_libdir}/pkgconfig/dali.pc
355 %files integration-devel
356 %defattr(-,root,root,-)
357 %{dev_include_path}/dali/integration-api/adaptors/*
358 %{_libdir}/pkgconfig/dali-adaptor-integration.pc
360 %if 0%{?dali_feedback_plugin}
361 %files dali-feedback-plugin
362 %defattr(-,root,root,-)
363 %{_libdir}/libdali-feedback-plugin.so*
364 %{dali_plugin_sound_files}/*