Merge branch 'tizen_3.0' into tizen
[platform/core/uifw/inputmethod-setting.git] / packaging / org.tizen.inputmethod-setting.spec
index a2a1b5a..c14c939 100644 (file)
@@ -16,10 +16,76 @@ BuildRequires:  pkgconfig(efl-extension)
 BuildRequires:  pkgconfig(libtzplatform-config)
 BuildRequires:  pkgconfig(capi-ui-inputmethod-manager)
 BuildRequires:  pkgconfig(capi-appfw-package-manager)
-BuildRequires:  model-build-features
+Requires:      %{name}-compat = %{version}-%{release}
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="mobile" && "%{?profile}"!="wearable"
+Recommends:    %{name}-profile_common = %{version}-%{release}
+%endif
 
 %description
 Setting Application for ISF.
+This requires profile specific extensions. (e.g., %{name}-profile_common)
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="mobile" && "%{?profile}"!="wearable"
+%package profile_common
+Summary:    Input Method Setting Application Vannila Binaries (common/ivi/tv)
+Provides:   %{name}-compat = %{version}-%{release}
+Conflicts:  %{name}-profile_wearable
+Conflicts:  %{name}-profile_mobile
+%description profile_common
+Setting Application for ISF, Vanilla Edition for common/ivi/tv profiles.
+%endif
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="tv" && "%{?profile}"!="wearable"
+%package profile_mobile
+Summary:    Input Method Setting Application Binaries for Mobile Profile
+Provides:   %{name}-compat = %{version}-%{release}
+Conflicts:  %{name}-profile_wearable
+Conflicts:  %{name}-profile_common
+%description profile_mobile
+Setting Application for ISF, Mobile Profile Edition.
+Binaries in this package is compiled with "mobile" options.
+%endif
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="tv" && "%{?profile}"!="mobile"
+%package profile_wearable
+Summary:    Input Method Setting Application Metapackage for Wearable
+Provides:   %{name}-compat = %{version}-%{release}
+Requires:   %{name}-profile_wearable-extension = %{version}-%{release}
+Recommends: %{name}-profile_wearable-extension-circle = %{version}-%{release}
+Conflicts:  %{name}-profile_common
+Conflicts:  %{name}-profile_mobile
+%description profile_wearable
+Meta package to anchor circle display version and rectangle display version of
+Setting APplication for ISF, Wearable Profile Edition.
+
+# Because circle breaks CAPI compatibility, it should be built for
+# wearable and "unified (undefined)"
+%if "%{?profile}"!="tv" && "%{?profile}"!="mobile" && "%{?profile}"!="ivi" && "%{?profile}"!="common"
+%package profile_wearable-extension-circle
+Summary:    Input Method Setting Application for Wearable (Circle)
+Provides:   %{name}-profile_wearable-extension = %{version}-%{release}
+Conflicts:  %{name}-profile_wearable-extension-rectangle
+%description profile_wearable-extension-circle
+Setting Application for ISF, Wearable Profile Edition with Circle Display
+Binaries in this package is compiled with "wearable" and "circle" options.
+%endif
+
+%package profile_wearable-extension-rectangle
+Summary:    Input Method Setting Application for Wearable (Rectangle)
+Provides:   %{name}-profile_wearable-extension = %{version}-%{release}
+Conflicts:  %{name}-profile_wearable-extension-circle
+%description profile_wearable-extension-rectangle
+Setting Application for ISF, Wearable Profile Edition with Rectangle Display
+Binaries in this package is compiled with "wearable" and "rectangle" options.
+%endif
 
 %prep
 %setup -q -n %{name}-%{version}
@@ -29,37 +95,172 @@ export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE -DTIZEN_DEBUG_ENABLE -fvisibility=h
 export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE -DTIZEN_DEBUG_ENABLE -fvisibility=hidden -fvisibility-inlines-hidden"
 export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE -DTIZEN_DEBUG_ENABLE"
 
-%if "%{?profile}" == "mobile"
-CFLAGS+=" -D_MOBILE";
-CXXFLAGS+=" -D_MOBILE";
+export CFLAGSBASE="$CFLAGS"
+export CXXFLAGSBASE="$CXXFLAGS"
+
+rm -rf CMakeFiles
+rm -rf CMakeCache.txt
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="tv" && "%{?profile}"!="wearable"
+mkdir -p build_mobile
+CFLAGS="$CFLAGSBASE -D_MOBILE"
+CXXFLAGS="$CXXFLAGSBASE -D_MOBILE"
+
+pushd build_mobile
+%cmake .. -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
+         -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
+         -DTZ_SYS_RO_ICONS=%TZ_SYS_RO_ICONS
+make %{?jobs:-j%jobs}
+popd
 %endif
 
-%if "%{?profile}" == "wearable"
-CFLAGS+=" -D_WEARABLE";
-CXXFLAGS+=" -D_WEARABLE";
-%if "%{model_build_feature_formfactor}" == "circle"
-CFLAGS+=" -D_CIRCLE";
-CXXFLAGS+=" -D_CIRCLE";
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="tv" && "%{?profile}"!="mobile"
+mkdir -p build_wearable_rectangle
+
+CFLAGS="$CFLAGSBASE -D_WEARABLE"
+CXXFLAGS="$CXXFLAGSBASE -D_WEARABLE"
+pushd build_wearable_rectangle
+%cmake .. -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
+         -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
+         -DTZ_SYS_RO_ICONS=%TZ_SYS_RO_ICONS
+make %{?jobs:-j%jobs}
+popd
+
+# Because circle breaks CAPI compatibility, it should be built for
+# wearable and "unified (undefined)"
+%if "%{?profile}"!="tv" && "%{?profile}"!="mobile" && "%{?profile}"!="ivi" && "%{?profile}"!="common"
+mkdir -p build_wearable_circle
+CFLAGS="$CFLAGSBASE -D_WEARABLE -D_CIRCLE"
+CXXFLAGS="$CXXFLAGSBASE -D_WEARABLE -D_CIRCLE"
+pushd build_wearable_circle
+%cmake .. -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
+         -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
+         -DTZ_SYS_RO_ICONS=%TZ_SYS_RO_ICONS
+make %{?jobs:-j%jobs}
+popd
 %endif
 %endif
 
-rm -rf CMakeFiles
-rm -rf CMakeCache.txt
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="mobile" && "%{?profile}"!="wearable"
+CFLAGS="$CFLAGSBASE"
+CXXFLAGS="$CXXFLAGSBASE"
 %cmake . -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
         -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
         -DTZ_SYS_RO_ICONS=%TZ_SYS_RO_ICONS
 make %{?jobs:-j%jobs}
+%endif
 
 %install
 rm -rf %{buildroot}
 
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="tv" && "%{?profile}"!="wearable"
+pushd build_mobile
 %make_install
+popd
+mv %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-list \
+   %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-list.mobile
+mv %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector \
+   %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector.mobile
+%endif
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="tv" && "%{?profile}"!="mobile"
+pushd build_wearable_rectangle
+%make_install
+popd
+mv %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-list \
+   %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-list.wearable.rectangle
+mv %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector \
+   %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector.wearable.rectangle
+# Because circle breaks CAPI compatibility, it should be built for
+# wearable and "unified (undefined)"
+%if "%{?profile}"!="tv" && "%{?profile}"!="mobile" && "%{?profile}"!="ivi" && "%{?profile}"!="common"
+pushd build_wearable_circle
+%make_install
+popd
+mv %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-list \
+   %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-list.wearable.circle
+mv %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector \
+   %{buildroot}%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector.wearable.circle
+%endif
+%endif
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="mobile" && "%{?profile}"!="wearable"
+%make_install
+%endif
 %find_lang inputmethod-setting
 
 %files -f inputmethod-setting.lang
 %manifest %{name}.manifest
 %defattr(-,root,root,-)
-%{TZ_SYS_RO_APP}/%{name}/bin/*
 %{TZ_SYS_RO_ICONS}/default/small/*
 %{TZ_SYS_RO_PACKAGES}/%{name}.xml
 %license LICENSE
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="mobile" && "%{?profile}"!="wearable"
+%files profile_common
+%manifest %{name}.manifest
+%exclude %{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-*.mobile
+%exclude %{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-*.wearable.*
+%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-*
+%endif
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="tv" && "%{?profile}"!="wearable"
+%post profile_mobile
+pushd %{TZ_SYS_RO_APP}/%{name}/bin/
+for file in inputmethod-setting-*.mobile; do ln -sf "${file}" "${file%.mobile}"; done
+popd
+%preun profile_mobile
+rm %{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-settings-list
+rm %{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector
+%files profile_mobile
+%manifest %{name}.manifest
+%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-*.mobile
+%endif
+
+# This if/endif is for GBM build optimization. This usage does not affect
+# The unified build (profile is undefined) as it will return TRUE always.
+%if "%{?profile}"!="tv" && "%{?profile}"!="mobile"
+%files profile_wearable
+
+# Because circle breaks CAPI compatibility, it should be built for
+# wearable and "unified (undefined)"
+%if "%{?profile}"!="tv" && "%{?profile}"!="mobile" && "%{?profile}"!="ivi" && "%{?profile}"!="common"
+%post profile_wearable-extension-circle
+pushd %{TZ_SYS_RO_APP}/%{name}/bin/
+for file in inputmethod-setting-*.wearable.circle; do ln -sf "${file}" "${file%.wearable.circle}"; done
+popd
+%preun profile_wearable-extension-circle
+rm %{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-settings-list
+rm %{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector
+%files profile_wearable-extension-circle
+%manifest %{name}.manifest
+%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-*.wearable.circle
+%endif
+
+%post profile_wearable-extension-rectangle
+pushd %{TZ_SYS_RO_APP}/%{name}/bin/
+for file in inputmethod-setting-*.wearable.rectangle; do ln -sf "${file}" "${file%.wearable.rectangle}"; done
+popd
+%preun profile_wearable-extension-rectangle
+rm %{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-settings-list
+rm %{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-selector
+%files profile_wearable-extension-rectangle
+%manifest %{name}.manifest
+%{TZ_SYS_RO_APP}/%{name}/bin/inputmethod-setting-*.wearable.rectangle
+%endif