%bcond_with wayland %bcond_with x %define extension_path %{_libdir}/tizen-extensions-crosswalk %define injected_bundle_path %{_libdir}/libxwalk_injected_bundle.so Name: crosswalk-tizen Summary: Crosswalk Runtime and AppShell for Tizen Version: 1.0.0 Release: 1 Group: Development/Libraries License: Apache-2.0 and BSD-3-Clause URL: https://www.tizen.org Source0: %{name}-%{version}.tar.gz Source1001: %{name}.manifest Source1002: wrt.loader BuildRequires: boost-devel BuildRequires: edje-tools BuildRequires: gettext BuildRequires: ninja BuildRequires: python BuildRequires: pkgconfig(appsvc) BuildRequires: pkgconfig(aul) BuildRequires: pkgconfig(bundle) BuildRequires: pkgconfig(capi-appfw-application) BuildRequires: pkgconfig(capi-appfw-app-manager) BuildRequires: pkgconfig(capi-appfw-package-manager) BuildRequires: pkgconfig(capi-system-system-settings) BuildRequires: pkgconfig(capi-system-info) BuildRequires: pkgconfig(capi-ui-efl-util) BuildRequires: pkgconfig(chromium-efl) >= 56.0.0, pkgconfig(chromium-efl) < 57.0.0 BuildRequires: pkgconfig(cynara-client) BuildRequires: pkgconfig(deviced) BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(ecore) BuildRequires: pkgconfig(efl-extension) BuildRequires: pkgconfig(elementary) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(libwebappenc) BuildRequires: pkgconfig(wgt-manifest-handlers) BuildRequires: pkgconfig(manifest-parser) BuildRequires: pkgconfig(notification) BuildRequires: pkgconfig(pkgmgr-info) BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(uuid) BuildRequires: pkgconfig(launchpad) BuildRequires: pkgconfig(ttrace) BuildRequires: pkgconfig(jsoncpp) BuildRequires: pkgconfig(vc-webview) %define chromium_efl_workaround_ewk_settings 0 %if "%{?profile}" == "mobile" %define tizen_feature_rotary_event_support 0 %define tizen_feature_web_ime_support 0 %define tizen_feature_watch_face_support 0 %endif %if "%{?profile}" == "wearable" %define tizen_feature_rotary_event_support 1 %define tizen_feature_web_ime_support 1 %define tizen_feature_watch_face_support 1 %define chromium_efl_workaround_ewk_settings 1 %endif %if "%{?profile}" == "tv" %define tizen_feature_rotary_event_support 0 %define tizen_feature_web_ime_support 1 %define tizen_feature_watch_face_support 0 %endif # If it is unified environment. %if "%{?profile}" != "mobile" && "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common" %define tizen_feature_rotary_event_support 1 %define tizen_feature_web_ime_support 1 %define tizen_feature_watch_face_support 1 %endif # In "unified" build environment, where "profile" is none of mobile/wearable/tv/common/ivi, but a new value or undefined, # all the "feature"s are to be supported and be activated selectively at runtime/inittime. # (the profile is probed at runtime) # tizen_feature_rotary..._support (==> platform_info / wearable) # tizen_feature_web_ime_support (==> platform_info / wearable || TV) # tizen_feature_watch_face_support (==> platform_info / wearable) # tizen_feature_manual_rotate_support (==> platform_info / mobile) %if 0%{?tizen_feature_web_ime_support} BuildRequires: pkgconfig(capi-ui-inputmethod) %endif %if 0%{?tizen_feature_watch_face_support} BuildRequires: pkgconfig(capi-appfw-watch-application) BuildRequires: pkgconfig(appcore-watch) %endif Requires: /usr/bin/systemctl %description Crosswalk Runtime and AppShell for Tizen 3.0 and later # If it is unified or wearable, create circular-display extension %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common" %package extension-circle Summary: Extension for Crosswalk-Tizen with Circular Displays (Tizen Wearable) Requires: %{name} = %{version}-%{release} %description extension-circle Extension for Crosswalk-Tizen with Circular Displays of Tizen Wearable Profile. You need to install %{name} before installing this extension. %endif %prep %setup -q cp %{SOURCE1001} . %build export GYP_GENERATORS='ninja' GYP_OPTIONS="--depth=." # Not required anymore #-Dprofile=%{profile}" # BuildType: Debug / Release %if 0%{?tizen_build_devel_mode} GYP_OPTIONS="$GYP_OPTIONS -Dbuild_type=Debug" %else GYP_OPTIONS="$GYP_OPTIONS -Dbuild_type=Release" %endif # Feature flags # TODO: in unified environment, the following feature flags are useless (always on) GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_rotary_event_support=%{?tizen_feature_rotary_event_support}" GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_web_ime_support=%{?tizen_feature_web_ime_support}" GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_watch_face_support=%{?tizen_feature_watch_face_support}" # Not required anymore #GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_manual_rotate_support=%{?tizen_feature_manual_rotate_support}" # Extension Path GYP_OPTIONS="$GYP_OPTIONS -Dextension_path=%{extension_path}" # Injected bundle GYP_OPTIONS="$GYP_OPTIONS -Dinjected_bundle_path=%{injected_bundle_path}" # Chromium-EFL generated CAPI header files differently per profile. # Until they are unified a function "ewk_settings_form_candidate_data_enabled_set()" cannot be used for wearable. # Therefore, until chromium-efl gets refactored to emit devel packages equally for every profile, let's keep this. GYP_OPTIONS="$GYP_OPTIONS -Dchromium_efl_workaround_ewk_settings=%{chromium_efl_workaround_ewk_settings}" # Tizen product tv GYP_OPTIONS="$GYP_OPTIONS -Dtizen_product_tv=%{!?TIZEN_PRODUCT_TV:0}" GYP_OPTIONS_BASE="$GYP_OPTIONS" # TODO: do not use model_build_feature. GYP_OPTIONS="$GYP_OPTIONS_BASE -Dtizen_model_formfactor=rectangle" echo "PROFILE = %{?profile}" # If it is unified or wearable, create circular-display extension %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common" # TODO: do not use model_build_feature. GYP_OPTIONS="$GYP_OPTIONS_BASE -Dtizen_model_formfactor=circle" mkdir -p build_circle ./tools/gyp/gyp $GYP_OPTIONS xwalk_tizen.gyp ninja -C out/Default %{?_smp_mflags} mkdir -p out/Circle mv out/Default/xwalk_runtime out/Circle/ %endif # Build ./tools/gyp/gyp $GYP_OPTIONS xwalk_tizen.gyp ninja -C out/Default %{?_smp_mflags} %install # Prepare directories mkdir -p %{buildroot}%{_libdir} mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/locale mkdir -p %{buildroot}%{_datadir}/icons/xwalk mkdir -p %{buildroot}%{_datadir}/edje/xwalk mkdir -p %{buildroot}%{extension_path} # Loader script file mkdir -p %{buildroot}%{_datadir}/aul/ cp %{SOURCE1002} %{buildroot}%{_datadir}/aul/ # Popup icon cp runtime/resources/icons/*.png %{buildroot}%{_datadir}/icons/xwalk/ # xwalk_common install -p -m 644 out/Default/lib/libxwalk_tizen_common.so %{buildroot}%{_libdir} # widget_plugin install -p -m 644 out/Default/lib/libwidget_plugin.so %{buildroot}%{extension_path} install -p -m 644 out/Default/gen/widget.json %{buildroot}%{extension_path} # screen_plugin install -p -m 644 out/Default/lib/libsplash_screen_plugin.so %{buildroot}%{extension_path} install -p -m 644 out/Default/gen/splash_screen.json %{buildroot}%{extension_path} # xwalk_runtime install -p -m 755 out/Default/xwalk_runtime %{buildroot}%{_bindir} ln -s %{_bindir}/xwalk_runtime %{buildroot}%{_bindir}/wrt ln -s %{_bindir}/xwalk_runtime %{buildroot}%{_bindir}/wrt-client # If it is unified or wearable, create circular-display extension %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common" install -p -m 755 out/Circle/xwalk_runtime %{buildroot}%{_bindir}/xwalk_runtime.circle %endif # xwalk extension shared install -p -m 644 out/Default/lib/libxwalk_extension_shared.so %{buildroot}%{_libdir} # xwalk_runtime_resources for file in $(find out/Default/gen/locales -type f -name *.mo); do install -m 644 -D $file %{buildroot}%{_datadir}/locale/${file#out/Default/gen/locales/} done install -p -m 644 out/Default/gen/*.edj %{buildroot}%{_datadir}/edje/xwalk # xwalk_injected_bundle install -p -m 755 out/Default/lib/libxwalk_injected_bundle.so %{buildroot}%{_libdir} # wrt-loader install -p -m 755 out/Default/wrt-loader %{buildroot}%{_bindir} %clean rm -fr %{buildroot} %files %manifest %{name}.manifest %attr(755,root,root) %{_datadir}/locale/* %attr(644,root,root) %{_datadir}/icons/xwalk/* %attr(644,root,root) %{_datadir}/edje/xwalk/*.edj %attr(644,root,root) %{_libdir}/libxwalk_tizen_common.so %attr(644,root,root) %{_libdir}/libxwalk_injected_bundle.so %attr(644,root,root) %{_libdir}/libxwalk_extension_shared.so %attr(644,root,root) %{extension_path}/libwidget_plugin.so %attr(644,root,root) %{extension_path}/widget.json %attr(644,root,root) %{extension_path}/libsplash_screen_plugin.so %attr(644,root,root) %{extension_path}/splash_screen.json %attr(755,root,root) %{_bindir}/xwalk_runtime %attr(755,root,root) %{_bindir}/wrt %attr(755,root,root) %{_bindir}/wrt-client %attr(755,root,root) %{_bindir}/wrt-loader %attr(644,root,root) %{_datadir}/aul/wrt.loader %license LICENSE LICENSE.BSD # If it is unified or wearable, create circular-display extension %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common" %post extension-circle ln -sf xwalk_runtime.circle %{_bindir}/xwalk_runtime %preun extension-circle echo "You need to reinstall %{name} if you want to let %{name} behave correctly after uninstalling this package." %files extension-circle %attr(755,root,root) %{_bindir}/xwalk_runtime.circle %endif