+# NOTES
+# This spec file is used to build DALi Adaptor for different Tizen Profiles
+# Current profiles are: Mobile, TV, Wearable, Common
+#
+# The profile variable is defined outside of the spec file in a build.conf file.
+# It will contain the profile and whether or not to build with X11 or Wayland
+#
+# gbs will try to download the build.conf for the platform automatically from the repo location when
+# performing a gbs build ( use gbs build -v to see it download location) E.g.
+# http://download.tizen.org/snapshots/tizen/tv/tizen-tv/repos/arm-wayland/packages/repodata/xxxx-build.conf.gz
+
+
%bcond_with wayland
Name: dali-adaptor
Summary: The DALi Tizen Adaptor
-Version: 1.1.15
+Version: 1.1.30
Release: 1
Group: System/Libraries
-License: Apache-2.0, BSD-2.0, MIT
+License: Apache-2.0 and BSD-2-Clause and MIT
URL: https://review.tizen.org/git/?p=platform/core/uifw/dali-adaptor.git;a=summary
Source0: %{name}-%{version}.tar.gz
-# Get the profile from tizen_profile_name if it exists.
-%if 0%{?tizen_profile_name:1}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+Requires: giflib
+
+# Get the profile from tizen_profile_name if tizen version is 2.x and tizen_profile_name exists.
+
+%if "%{tizen_version_major}" == "2" && 0%{?tizen_profile_name:1}
%define profile %{tizen_profile_name}
%endif
%define dali_profile MOBILE
%define dali_feedback_plugin 0
%define shaderbincache_flag DISABLE
+BuildRequires: pkgconfig(gles20)
+%define gles_requirement_setup 1
%endif
%if "%{profile}" == "tv"
%define dali_profile TV
%define dali_feedback_plugin 0
%define shaderbincache_flag ENABLE
+BuildRequires: pkgconfig(glesv2)
+%define gles_requirement_setup 1
%endif
%if "%{profile}" == "wearable"
%define dali_profile WEARABLE
%define dali_feedback_plugin 0
%define shaderbincache_flag DISABLE
+BuildRequires: pkgconfig(gles20)
+%define gles_requirement_setup 1
%endif
%if "%{profile}" == "common"
%define dali_profile COMMON
%define dali_feedback_plugin 0
-%define tizen_2_2_compatibility 1
+%define tizen_2_2_compatibility 0
%define shaderbincache_flag DISABLE
+BuildRequires: pkgconfig(glesv2)
+%define gles_requirement_setup 1
%endif
-Requires(post): /sbin/ldconfig
-Requires(postun): /sbin/ldconfig
-Requires: giflib
+# If we have not set a BuildRequires for the gles version, default it here.
+%{!?gles_requirement_setup: BuildRequires: pkgconfig(glesv2)}
+
BuildRequires: pkgconfig
BuildRequires: gawk
-BuildRequires: pkgconfig(sensor)
BuildRequires: pkgconfig(aul)
BuildRequires: giflib-devel
BuildRequires: pkgconfig(fontconfig)
-BuildRequires: pkgconfig(elementary)
-BuildRequires: pkgconfig(capi-appfw-application)
BuildRequires: libjpeg-turbo-devel
-BuildRequires: pkgconfig(evas)
BuildRequires: dali-devel
BuildRequires: dali-integration-devel
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(dlog)
BuildRequires: libdrm-devel
BuildRequires: pkgconfig(libexif)
-BuildRequires: pkgconfig(capi-system-system-settings)
BuildRequires: pkgconfig(libpng)
-BuildRequires: pkgconfig(glesv2)
BuildRequires: pkgconfig(egl)
BuildRequires: libcurl-devel
-
+BuildRequires: pkgconfig(harfbuzz)
+BuildRequires: fribidi-devel
%if 0%{?tizen_2_2_compatibility} != 1
BuildRequires: pkgconfig(capi-system-info)
+BuildRequires: pkgconfig(capi-system-sensor)
%endif
+# Tizen currently does not have libuv as a separate libuv package
+# So we have to look into the uv headers bundled inside node-js
+BuildRequires: nodejs-devel
+
+
%if %{with wayland}
-BuildRequires: pkgconfig(ecore-wayland)
+
+####### BUILDING FOR WAYLAND #######
BuildRequires: pkgconfig(wayland-egl)
BuildRequires: pkgconfig(wayland-client)
BuildRequires: wayland-devel
-# Currently Tizen Common does not use wayland extensions like xdg-shell
+# Currently Tizen Common we use does not have wayland extensions like xdg-shell
%if "%{profile}" != "common"
-BuildRequires: pkgconfig(wayland-extension-client)
BuildRequires: wayland-extension-client-devel
%endif
+
+# dali-adaptor-uv uses libuv mainloop and has its own wayland client (it needs wayland-client headers).
+BuildRequires: libxkbcommon-devel
+
+# dali-adaptor uses ecore mainloop
+BuildRequires: pkgconfig(ecore-wayland)
+
+# dali-adaptor needs tbm_surface in tizen 3.0 wayland
+BuildRequires: pkgconfig(libtbm)
+
+# tpkp-curl (certificate pinning for libcurl functions) is only available in Tizen 3.0
+BuildRequires: pkgconfig(tpkp-curl)
+
+####### BUILDING FOR X11#######
%else
+BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(utilX)
%endif
-BuildRequires: pkgconfig(harfbuzz)
-BuildRequires: fribidi-devel
+# for dali-adaptor
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-system-system-settings)
+
+%if 0%{?over_tizen_2_2}
+BuildRequires: pkgconfig(capi-system-info)
+%endif
+
+
%description
The DALi Tizen Adaptor provides a Tizen specific implementation of the dali-core
FONT_APPLICATION_PATH="%{font_application_path}" ; export FONT_APPLICATION_PATH
FONT_CONFIGURATION_FILE="%{font_configuration_file}" ; export FONT_CONFIGURATION_FILE
-%configure --prefix=$PREFIX --with-jpeg-turbo --enable-gles=20 --enable-shaderbincache=%{shaderbincache_flag} --enable-profile=%{dali_profile} \
+# Default to GLES 2.0 if not specified.
+%{!?target_gles_version: %define target_gles_version 20}
+
+#--enable-efl=no \ # only affects dali-adaptor-uv
+#--enable-appfw=yes \ # affects both dali-adaptor & dali-adaptor-uv
+#--with-libuv=/usr/include/node/ \ # only affects dali-adaptor-uv
+
+# Set up the build via configure.
+%configure --prefix=$PREFIX --with-jpeg-turbo --enable-gles=%{target_gles_version} --enable-shaderbincache=%{shaderbincache_flag} --enable-profile=%{dali_profile} \
%if 0%{?dali_feedback_plugin}
--enable-feedback \
%endif
%if 0%{?tizen_2_2_compatibility}
--with-tizen-2-2-compatibility \
%endif
+%if %{with wayland}
+ --enable-efl=no \
+%else
+ --enable-efl=yes \
+%endif
+ --enable-appfw=yes \
+ --with-libuv=/usr/include/node/ \
$configure_flags --libdir=%{_libdir}
+# Build.
make %{?jobs:-j%jobs}
##############################
%{dev_include_path}/dali/public-api/*
%{dev_include_path}/dali/devel-api/*
%{dev_include_path}/dali/doc/*
-%{_libdir}/pkgconfig/dali.pc
+%{_libdir}/pkgconfig/dali-adaptor.pc
+%{_libdir}/pkgconfig/dali-adaptor-uv.pc
%files integration-devel
%defattr(-,root,root,-)