--- /dev/null
+# adjust compression algorithm to speed up RPMS creation
+# source RPM and debug RPMS are big and take too much time
+# when using standard (lzma) compression
+%define _source_payload w3.gzdio
+%define _binary_payload w3.gzdio
+
+Name: chromium-efl-libs
+%define ChromiumVersion 42.2311.0
+%define Week 11
+Version: %{ChromiumVersion}.%{Week}
+Release: 1
+Summary: Chromium-based app runtime, private libraries
+# The 'Group' should be specified as one of the following valid group list.
+# https://wiki.tizen.org/wiki/Packaging/Guidelines#Group_Tag
+Group: Web Framework/Web Engine
+# The 'License' should be specified as some of the following known license list.
+# http://spdx.org/licenses/
+License: LGPL-2.1 or BSD-2-Clause
+Source: %{name}-%{version}.tar.gz
+Source1002: print-chromium-deps.py
+
+%if 0%{?nodebug}
+%global __debug_install_post %{nil}
+%global debug_package %{nil}
+%endif
+
+BuildRequires: binutils-gold
+BuildRequires: bison
+BuildRequires: bzip2-devel
+BuildRequires: elfutils
+BuildRequires: expat-devel
+BuildRequires: flex
+BuildRequires: gperf
+BuildRequires: libcap-devel
+BuildRequires: libelf-devel
+BuildRequires: ninja
+BuildRequires: python
+BuildRequires: python-xml
+BuildRequires: perl
+BuildRequires: which
+BuildRequires: yasm
+BuildRequires: pkgconfig(alsa)
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(fontconfig)
+BuildRequires: pkgconfig(freetype2)
+BuildRequires: pkgconfig(gles20)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(icu-i18n)
+BuildRequires: pkgconfig(libdrm)
+BuildRequires: pkgconfig(libexif)
+BuildRequires: pkgconfig(libpci)
+BuildRequires: pkgconfig(libpulse)
+BuildRequires: pkgconfig(libudev)
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(libxslt)
+BuildRequires: pkgconfig(protobuf)
+BuildRequires: pkgconfig(nss)
+
+# chromium-efl/chromium_src dependencies.
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-location-manager)
+BuildRequires: pkgconfig(capi-media-audio-io)
+BuildRequires: pkgconfig(capi-media-camera)
+BuildRequires: pkgconfig(capi-media-player)
+BuildRequires: pkgconfig(capi-media-tool)
+BuildRequires: pkgconfig(capi-system-sensor)
+BuildRequires: pkgconfig(capi-network-connection)
+BuildRequires: pkgconfig(capi-system-device)
+BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(ecore-evas)
+BuildRequires: pkgconfig(ecore-imf)
+BuildRequires: pkgconfig(ecore-imf-evas)
+BuildRequires: pkgconfig(ecore-input)
+BuildRequires: pkgconfig(efl-assist)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(feedback)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(gstreamer-1.0)
+BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
+BuildRequires: pkgconfig(gstreamer-app-1.0)
+BuildRequires: pkgconfig(harfbuzz)
+BuildRequires: pkgconfig(libtbm)
+BuildRequires: pkgconfig(minizip)
+BuildRequires: pkgconfig(nspr)
+BuildRequires: pkgconfig(openssl)
+BuildRequires: pkgconfig(scim)
+BuildRequires: pkgconfig(tts)
+BuildRequires: pkgconfig(vconf)
+# TODO(a1.gomes): these dependencies seem wrong.
+BuildRequires: pkgconfig(capi-system-info)
+BuildRequires: pkgconfig(flac)
+BuildRequires: pkgconfig(ui-gadget-1)
+BuildRequires: pkgconfig(speex)
+
+%if "%{?_with_wayland}" == "1"
+BuildRequires: pkgconfig(wayland-client)
+BuildRequires: pkgconfig(wayland-cursor)
+BuildRequires: pkgconfig(wayland-egl)
+%endif
+
+%description
+This package contains private Chromium shared libraries required by Chromium-EWK and Crosswalk apps to run.
+
+%prep
+%setup -q
+
+%build
+
+# Stop unconditionally passing -Wall to the compiler. Chromium has its own
+# mechanisms for deciding which parts of the code need -Wall and which need it
+# to be left out (since several pieces are built with -Werror). At least in
+# M39, this is preventing the "rtc_base" target from being built because it
+# does not expect -Wall to be passed to the compiler (see webrtc issue 3307).
+export CXXFLAGS=`echo $CXXFLAGS | sed s,-Wall,,g`
+
+# Do not use -finline-functions: it breaks the build because it causes -Wall to
+# warn about some conditions that cannot really be reached (ie. variables that
+# may be used uninitialized while in fact thay cannot be uninitialized). See
+# TC-2299.
+export CXXFLAGS=`echo $CXXFLAGS | sed s,-finline-functions,,g`
+
+# For ffmpeg on ia32. The original CFLAGS set by the gyp and config files in
+# src/third_party/ffmpeg already pass -O2 -fomit-frame-pointer, but Tizen's
+# CFLAGS end up appending -fno-omit-frame-pointer. See http://crbug.com/37246
+export CFLAGS=`echo $CFLAGS | sed s,-fno-omit-frame-pointer,,g`
+
+# Building the RPM in the GBS chroot fails with errors such as
+# /usr/lib/gcc/i586-tizen-linux/4.7/../../../../i586-tizen-linux/bin/ld:
+# failed to set dynamic section sizes: Memory exhausted
+# For now, work around it by passing a GNU ld-specific flag that optimizes the
+# linker for memory usage.
+export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
+
+# Support building in a non-standard directory, possibly outside %{_builddir}.
+# Since the build root is erased every time a new build is performed, one way
+# to avoid losing the build directory is to specify a location outside the
+# build root to the BUILDDIR_NAME definition, such as "/var/tmp/xwalk-build"
+# (remember all paths are still inside the chroot):
+# gbs build --define 'BUILDDIR_NAME /some/path'
+BUILDDIR_NAME="%{?BUILDDIR_NAME}"
+if [ -n "${BUILDDIR_NAME}" ]; then
+ mkdir -p "${BUILDDIR_NAME}"
+ ln -s "${BUILDDIR_NAME}" "%{OUTPUT_FOLDER}"
+fi
+
+# For building for arm in OBS, we need :
+# -> to unset sysroot value.
+# sysroot variable is automatically set for cross compilation to use arm-sysroot provided by Chromium project
+# sysroot usage is not needed, we need to use arm libraries from the virtualized environment.
+#
+# Crosswalk build fails if the fpu selected in the gcc option is different from neon in case of arm7 compilation
+# So force it.
+%ifarch %{arm}
+export CFLAGS=`echo $CFLAGS | sed s,-mfpu=vfpv3,-mfpu=neon,g`
+export CXXFLAGS=`echo $CXXFLAGS | sed s,-mfpu=vfpv3,-mfpu=neon,g`
+export FFLAGS=`echo $FFLAGS | sed s,-mfpu=vfpv3,-mfpu=neon,g`
+%endif
+
+###### start of block copied/adapted from chromium-efl.spec
+trap 'tizen_src/build/apply_patches.sh -r;\
+ error_report $0 $LINENO' ERR SIGINT SIGTERM SIGQUIT
+
+tizen_src/build/apply_patches.sh
+
+%if "%{tizen}" == "3.0"
+%define chromium_efl_tizen_version 3.0
+%endif
+%if "%{tizen}" == "2.3" || "%{tizen}" == "2.4"
+%define chromium_efl_tizen_version 2.4
+%endif
+%if "%{tizen}" == "2.0"
+%define chromium_efl_tizen_version 2.3
+%endif
+%if "%{tizen}" == "2.2.1"
+%define chromium_efl_tizen_version 2.2.1
+%endif
+
+%if %{!?TIZEN_PROFILE_TV:0}%{?TIZEN_PROFILE_TV:1} || "%{!?profile:0}%{?profile}" == "tv"
+%define chromium_efl_tizen_profile tv
+%else
+%define chromium_efl_tizen_profile mobile
+%endif
+
+%if 0%{?nodebug}
+ CFLAGS=$(echo $CFLAGS | sed 's/-g[0-9]*/ /g')
+ CXXFLAGS=$(echo $CXXFLAGS | sed 's/-g[0-9]*/ /g')
+%endif
+
+%if "%{!?chromium_efl_tizen_profile:0}%{?chromium_efl_tizen_profile}" == "mobile"
+ %define OUTPUT_BUILD_PROFILE_TARGET mobile
+%else
+ %define OUTPUT_BUILD_PROFILE_TARGET tv
+%endif
+
+# The variable chromium-efl_tizen_version and _repository are essentially needed for build.
+# Therefore, if the variable is not defined, it explicitly raises exception here.
+%define OUTPUT_BASE_FOLDER out.tz_v%{chromium_efl_tizen_version}.%{OUTPUT_BUILD_PROFILE_TARGET}.%{_repository}.libs
+export GYP_GENERATOR_OUTPUT=$PWD/%{OUTPUT_BASE_FOLDER}
+
+#set build mode
+%if 0%{?_debug_mode}
+ %global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}/Debug
+%else
+ %global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}/Release
+%endif
+
+export GYP_GENERATORS="dump_dependency_json,ninja"
+
+%if %{?_skip_gyp:0}%{!?_skip_gyp:1}
+./tizen_src/build/gyp_chromiumefl.sh \
+ --xwalk \
+ -Dbuilding_crosswalk_bin=0 \
+ -Dcomponent=shared_library \
+%if 0%{?_remove_webcore_debug_symbols:1}
+ -Dremove_webcore_debug_symbols=1 \
+%endif
+%if 0%{?chromium_efl_tizen_version:1}
+ -Dchromium_efl_tizen_version=%{chromium_efl_tizen_version} \
+%endif
+%if "%{?_with_wayland}" == "1"
+ -Duse_wayland=1 \
+%endif
+%if "%{?_repository}" == "emulator" || "%{?_repository}" == "emulator32-x11"
+ -Dtizen_emulator_support=1 \
+%endif
+ -Dtizen_"%{OUTPUT_BUILD_PROFILE_TARGET}"=1 \
+ -Dbuilding_for_tizen_"%{OUTPUT_BUILD_PROFILE_TARGET}"=1
+%endif
+
+%if %{?_skip_ninja:0}%{!?_skip_ninja:1}
+# We are not interested in building ${NINJA_TARGETS} themselves, since that is
+# what crosswalk-bin.spec does. We want the Chromium dependencies that those
+# targets need to build all the shared libraries we have to package.
+NINJA_TARGETS="chromium-ewk xwalk xwalk_application_tools"
+DEPENDENCIES=`python %{SOURCE1002} dump.json ${NINJA_TARGETS}`
+
+%ifarch %{arm}
+tizen_src/build/prebuild/ninja.arm %{_smp_mflags} -C"%{OUTPUT_FOLDER}" \
+%else
+%ifarch aarch64
+tizen_src/build/prebuild/ninja-linux64 -v %{_smp_mflags} -C"%{OUTPUT_FOLDER}" \
+%else
+tizen_src/build/prebuild/ninja %{_smp_mflags} -C"%{OUTPUT_FOLDER}" \
+%endif
+%endif
+ ${DEPENDENCIES}
+%endif
+
+#XXX icudtl.dat is not copied by gyp. Do that manually
+cp third_party/icu/android/icudtl.dat "%{OUTPUT_FOLDER}"
+
+tizen_src/build/apply_patches.sh -r
+
+###### end of block copied/adapted from chromium-efl.spec
+
+# In '%files' section below there are added all built libraries, which satisfy
+# pattern: 'xwalk/lib/lib*.so'. During build crosswalk-bin.spec generates new
+# library - libxwalk_backend_lib.so, which should not be packaged into
+# crosswalk-libs, but then after incremental build it will also satisfy
+# pattern, which was mentioned above.
+rm -f "%{OUTPUT_FOLDER}"/lib/libxwalk_backend_lib.so
+
+%define INSTALL_FOLDER chromium-efl-libs
+
+%install
+# Supporting libraries and resources.
+install -d %{buildroot}%{_libdir}/%{INSTALL_FOLDER}/lib
+install -m 0644 -p -D "%{OUTPUT_FOLDER}"/lib/*.so %{buildroot}%{_libdir}/%{INSTALL_FOLDER}/lib/
+install -m 0644 -p -D "%{OUTPUT_FOLDER}"/icudtl.dat %{buildroot}%{_libdir}/%{INSTALL_FOLDER}/icudtl.dat
+install -m 0644 -p -D "%{OUTPUT_FOLDER}"/libffmpegsumo.so %{buildroot}%{_libdir}/%{INSTALL_FOLDER}/libffmpegsumo.so
+install -m 0644 -p -D "%{OUTPUT_FOLDER}"/natives_blob.bin %{buildroot}%{_libdir}/%{INSTALL_FOLDER}/natives_blob.bin
+install -m 0644 -p -D "%{OUTPUT_FOLDER}"/snapshot_blob.bin %{buildroot}%{_libdir}/%{INSTALL_FOLDER}/snapshot_blob.bin
+
+%files
+%manifest packaging/chromium-efl-libs.manifest
+%{_libdir}/%{INSTALL_FOLDER}/icudtl.dat
+%{_libdir}/%{INSTALL_FOLDER}/lib/lib*.so
+%{_libdir}/%{INSTALL_FOLDER}/libffmpegsumo.so
+%if %{?_disable_nacl}%{!?_disable_nacl:1} == 0
+%{_libdir}/%{INSTALL_FOLDER}/nacl_bootstrap_raw
+%{_libdir}/%{INSTALL_FOLDER}/nacl_helper
+%{_libdir}/%{INSTALL_FOLDER}/nacl_helper_bootstrap
+%{_libdir}/%{INSTALL_FOLDER}/nacl_irt_*.nexe
+%{_libdir}/%{INSTALL_FOLDER}/pnacl/*
+%endif
+%{_libdir}/%{INSTALL_FOLDER}/natives_blob.bin
+%{_libdir}/%{INSTALL_FOLDER}/snapshot_blob.bin