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 #need libtzplatform-config for directory if tizen version is 3.x
30 %if "%{tizen_version_major}" == "3"
31 BuildRequires: pkgconfig(libtzplatform-config)
35 # Get the profile from tizen_profile_name if tizen version is 2.x and tizen_profile_name exists.
37 %if "%{tizen_version_major}" == "2" && 0%{?tizen_profile_name:1}
38 %define profile %{tizen_profile_name}
41 %if "%{profile}" == "mobile"
42 %define dali_profile MOBILE
43 %define dali_feedback_plugin 0
44 %define dali_videoplayer_plugin 1
45 %define shaderbincache_flag DISABLE
46 BuildRequires: pkgconfig(gles20)
47 %define gles_requirement_setup 1
50 %if "%{profile}" == "tv"
51 %define dali_profile TV
52 %define dali_feedback_plugin 0
53 %define dali_videoplayer_plugin 1
54 %define shaderbincache_flag ENABLE
55 BuildRequires: pkgconfig(glesv2)
56 %define gles_requirement_setup 1
59 %if "%{profile}" == "wearable"
60 %define dali_profile WEARABLE
61 %define dali_feedback_plugin 0
62 %define dali_videoplayer_plugin 1
63 %define shaderbincache_flag DISABLE
64 BuildRequires: pkgconfig(gles20)
65 BuildRequires: pkgconfig(capi-appfw-watch-application)
66 BuildRequires: pkgconfig(appcore-watch)
67 %define gles_requirement_setup 1
70 %if "%{profile}" == "ivi"
71 %define dali_profile IVI
72 %define dali_feedback_plugin 0
73 %define dali_videoplayer_plugin 1
74 %define shaderbincache_flag DISABLE
75 BuildRequires: pkgconfig(glesv2)
76 %define gles_requirement_setup 1
79 %if "%{profile}" == "common"
80 %define dali_profile COMMON
81 %define dali_feedback_plugin 0
82 %define dali_videoplayer_plugin 1
83 %define tizen_2_2_compatibility 0
84 %define shaderbincache_flag DISABLE
85 BuildRequires: pkgconfig(glesv2)
86 %define gles_requirement_setup 1
89 # If we have not set a BuildRequires for the gles version, default it here.
90 %{!?gles_requirement_setup: BuildRequires: pkgconfig(glesv2)}
92 BuildRequires: pkgconfig
94 BuildRequires: pkgconfig(aul)
95 BuildRequires: giflib-devel
96 BuildRequires: pkgconfig(fontconfig)
97 BuildRequires: libjpeg-turbo-devel
98 BuildRequires: dali-devel
99 BuildRequires: dali-integration-devel
100 BuildRequires: pkgconfig(vconf)
101 BuildRequires: tts-devel
102 BuildRequires: pkgconfig(dlog)
103 BuildRequires: libdrm-devel
104 BuildRequires: pkgconfig(libexif)
105 BuildRequires: pkgconfig(libpng)
106 BuildRequires: pkgconfig(egl)
107 BuildRequires: libcurl-devel
108 BuildRequires: pkgconfig(harfbuzz)
109 BuildRequires: fribidi-devel
111 %if 0%{?tizen_2_2_compatibility} != 1
112 BuildRequires: pkgconfig(capi-system-info)
113 BuildRequires: pkgconfig(capi-system-sensor)
116 # Tizen currently does not have libuv as a separate libuv package
117 # So we have to look into the uv headers bundled inside node-js
118 BuildRequires: nodejs-devel
123 ####### BUILDING FOR WAYLAND #######
124 BuildRequires: pkgconfig(wayland-egl)
125 BuildRequires: pkgconfig(wayland-client)
126 BuildRequires: wayland-devel
127 # Currently Tizen Common we use does not have wayland extensions like xdg-shell
128 %if "%{profile}" != "common"
129 BuildRequires: wayland-extension-client-devel
132 # dali-adaptor-uv uses libuv mainloop and has its own wayland client (it needs wayland-client headers).
133 BuildRequires: libxkbcommon-devel
135 # dali-adaptor uses ecore mainloop
136 BuildRequires: pkgconfig(ecore-wayland)
138 # dali-adaptor needs tbm_surface in tizen 3.0 wayland
139 BuildRequires: pkgconfig(libtbm)
141 # tpkp-curl (certificate pinning for libcurl functions) is only available in Tizen 3.0
142 BuildRequires: pkgconfig(tpkp-curl)
144 ####### BUILDING FOR X11#######
146 BuildRequires: pkgconfig(egl)
147 BuildRequires: pkgconfig(xext)
148 BuildRequires: pkgconfig(xi)
149 BuildRequires: pkgconfig(xfixes)
150 BuildRequires: pkgconfig(xdamage)
151 BuildRequires: pkgconfig(utilX)
155 BuildRequires: pkgconfig(evas)
156 BuildRequires: pkgconfig(elementary)
157 BuildRequires: pkgconfig(capi-appfw-application)
158 BuildRequires: pkgconfig(capi-system-system-settings)
160 %if 0%{?over_tizen_2_2}
161 BuildRequires: pkgconfig(capi-system-info)
167 The DALi Tizen Adaptor provides a Tizen specific implementation of the dali-core
168 platform abstraction and application shell
170 ##############################
172 ##############################
174 Summary: Development components for the DALi Tizen Adaptor
175 Group: Development/Building
176 Requires: %{name} = %{version}-%{release}
177 Requires: %{name}-integration-devel = %{version}-%{release}
180 Development components for the DALi Tizen Adaptor - public headers and package configs
182 ##############################
184 ##############################
185 %package integration-devel
186 Summary: Integration development package for the Adaptor
187 Group: Development/Building
188 Requires: %{name} = %{version}-%{release}
190 %description integration-devel
191 Integration development package for the Adaptor - headers for integrating with an adaptor library.
193 ##############################
194 # Dali Feedback Plugin
195 ##############################
196 %package dali-feedback-plugin
197 Summary: Plugin to play haptic and audio feedback for Dali
198 Group: System/Libraries
199 %if 0%{?dali_feedback_plugin}
200 #Requires: libdeviced
201 BuildRequires: pkgconfig(mm-sound)
202 #BuildRequires: pkgconfig(haptic)
203 BuildRequires: libfeedback-devel
206 %description dali-feedback-plugin
207 Feedback plugin to play haptic and audio feedback for Dali
209 ##############################
210 # Dali VideoPlayer Plugin
211 ##############################
214 %package dali-video-player-plugin
215 Summary: Plugin to play a video file for Dali
216 Group: System/Libraries
217 %if 0%{?dali_videoplayer_plugin}
218 BuildRequires: pkgconfig(capi-media-player)
221 %description dali-video-player-plugin
222 VideoPlayer plugin to play a video file for Dali
225 ##############################
227 ##############################
231 #Use TZ_PATH when tizen version is 3.x
233 %if "%{tizen_version_major}" == "2"
234 %define dali_data_rw_dir /usr/share/dali/
235 %define dali_data_ro_dir /usr/share/dali/
236 %define font_preloaded_path /usr/share/fonts/
237 %define font_downloaded_path /opt/share/fonts/
238 %define font_application_path /usr/share/app_fonts/
239 %define font_configuration_file /opt/etc/fonts/conf.avail/99-slp.conf
241 %define dali_data_rw_dir %TZ_SYS_RO_SHARE/dali/
242 %define dali_data_ro_dir %TZ_SYS_RO_SHARE/dali/
243 %define font_preloaded_path %TZ_SYS_RO_SHARE/fonts/
244 %define font_downloaded_path %TZ_SYS_SHARE/fonts/
245 %define font_application_path %TZ_SYS_RO_SHARE/app_fonts/
246 %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 %{dali_data_ro_dir}/plugins/sounds/
251 %define dev_include_path %{_includedir}
253 ##############################
255 ##############################
258 CXXFLAGS+=" -Wall -g -Os -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections -DGL_GLEXT_PROTOTYPES"
259 LDFLAGS+=" -Wl,--rpath=%{_libdir} -Wl,--as-needed -Wl,--gc-sections -Wl,-Bsymbolic-functions "
262 CXXFLAGS+=" -D_ARCH_ARM_ -lgcc"
267 CXXFLAGS+=" -DWAYLAND"
268 configure_flags="--enable-wayland"
271 %if 0%{?tizen_2_2_compatibility}
272 CFLAGS+=" -DTIZEN_SDK_2_2_COMPATIBILITY"
273 CXXFLAGS+=" -DTIZEN_SDK_2_2_COMPATIBILITY"
277 cd %{_builddir}/%{name}-%{version}/build/tizen
280 DALI_DATA_RW_DIR="%{dali_data_rw_dir}" ; export DALI_DATA_RW_DIR
281 DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR
282 FONT_PRELOADED_PATH="%{font_preloaded_path}" ; export FONT_PRELOADED_PATH
283 FONT_DOWNLOADED_PATH="%{font_downloaded_path}" ; export FONT_DOWNLOADED_PATH
284 FONT_APPLICATION_PATH="%{font_application_path}" ; export FONT_APPLICATION_PATH
285 FONT_CONFIGURATION_FILE="%{font_configuration_file}" ; export FONT_CONFIGURATION_FILE
287 # Default to GLES 2.0 if not specified.
288 %{!?target_gles_version: %define target_gles_version 20}
290 #--enable-efl=no \ # only affects dali-adaptor-uv
291 #--enable-appfw=yes \ # affects both dali-adaptor & dali-adaptor-uv
292 #--with-libuv=/usr/include/node/ \ # only affects dali-adaptor-uv
294 # Set up the build via configure.
295 %configure --prefix=$PREFIX --with-jpeg-turbo --enable-gles=%{target_gles_version} --enable-shaderbincache=%{shaderbincache_flag} --enable-profile=%{dali_profile} \
296 %if 0%{?dali_feedback_plugin}
299 %if 0%{?dali_videoplayer_plugin}
300 --enable-videoplayer \
302 %if 0%{?tizen_2_2_compatibility}
303 --with-tizen-2-2-compatibility \
310 %if 0%{?enable_debug}
314 --with-libuv=/usr/include/node/ \
315 $configure_flags --libdir=%{_libdir}
318 make %{?jobs:-j%jobs}
320 ##############################
322 ##############################
326 %make_install DALI_DATA_RW_DIR="%{dali_data_rw_dir}" DALI_DATA_RO_DIR="%{dali_data_ro_dir}"
329 mkdir -p %{buildroot}/usr/share/license
330 cp -af %{_builddir}/%{name}-%{version}/LICENSE %{buildroot}/usr/share/license/%{name}
332 ##############################
334 # 1 - Pre Install new package
335 # 2 - Install new package
336 # 3 - Post install new package
337 # 4 - Pre uninstall old package
338 # 5 - Remove files not overwritten by new package
339 # 6 - Post uninstall old package
340 ##############################
345 ##############################
346 # Post Install new package
347 ##############################
352 %if 0%{?dali_feedback_plugin}
353 %post dali-feedback-plugin
359 %if 0%{?dali_videoplayer_plugin}
360 %post dali-video-player-plugin
366 ##############################
367 # Pre Uninstall old package
368 ##############################
372 ##############################
373 # Post Uninstall old package
374 ##############################
379 %if 0%{?dali_feedback_plugin}
380 %postun dali-feedback-plugin
386 %if 0%{?dali_videoplayer_plugin}
387 %postun dali-video-player-plugin
393 ##############################
394 # Files in Binary Packages
395 ##############################
398 %manifest dali-adaptor.manifest
399 %defattr(-,root,root,-)
400 %{_libdir}/libdali-adap*.so*
401 %defattr(-,app,app,-)
402 %dir %{user_shader_cache_dir}
404 %{_datadir}/license/%{name}
407 %defattr(-,root,root,-)
408 %{dev_include_path}/dali/dali.h
409 %{dev_include_path}/dali/public-api/*
410 %{dev_include_path}/dali/devel-api/*
411 %{dev_include_path}/dali/doc/*
412 %{_libdir}/pkgconfig/dali-adaptor.pc
413 %{_libdir}/pkgconfig/dali-adaptor-uv.pc
415 %files integration-devel
416 %defattr(-,root,root,-)
417 %{dev_include_path}/dali/integration-api/adaptors/*
418 %{_libdir}/pkgconfig/dali-adaptor-integration.pc
420 %if 0%{?dali_feedback_plugin}
421 %files dali-feedback-plugin
422 %defattr(-,root,root,-)
423 %{_libdir}/libdali-feedback-plugin.so*
424 %{dali_plugin_sound_files}/*
428 %if 0%{?dali_videoplayer_plugin}
429 %files dali-video-player-plugin
430 %manifest dali-adaptor.manifest
431 %defattr(-,root,root,-)
432 %{_libdir}/libdali-video-player-plugin.so*