# Process this file with autoconf to produce a configure script
#AC_INIT(scim, 1.4.7, suzhe@tsinghua.org.cn)
-AC_INIT(isf, 3.0.163, isf@samsung.com)
+AC_INIT(isf, 3.0.164, isf@samsung.com)
AC_CONFIG_SRCDIR([ism/src/scim.h])
###########################################################
# ISF version
ISF_MAJOR_VERSION=3
ISF_MINOR_VERSION=0
-ISF_MICRO_VERSION=163
+ISF_MICRO_VERSION=164
ISF_VERSION=$ISF_MAJOR_VERSION.$ISF_MINOR_VERSION.$ISF_MICRO_VERSION
[ISF_HAS_DB_UTIL=yes],
[ISF_HAS_DB_UTIL=no])
+# Ignore checked modules if --disable option is added
+AC_ARG_ENABLE(include-notification,
+ [ --disable-include-notification Do not include notification package],
+ enable_notification=no,
+ enable_notification=yes)
+
+AC_ARG_ENABLE(include-libwebsocket,
+ [ --disable-include-libwebsocket Do not include libwebsocket package],
+ enable_libwebsocket=no,
+ enable_libwebsocket=yes)
+
if test "$ISF_HAS_VCONF" = "yes"; then
AC_DEFINE(HAVE_VCONF,1,[Have VConf functions.])
fi
AC_DEFINE(HAVE_FEEDBACK,1,[Have Feedback functions.])
fi
-if test "$ISF_HAS_NOTIFICATION" = "yes"; then
+if test "$ISF_HAS_NOTIFICATION" = "yes" && test "$enable_notification" = "yes"; then
AC_DEFINE(HAVE_NOTIFICATION,1,[Have Notification functions.])
fi
+if test "$enable_notification" = "no"; then
+ AC_MSG_NOTICE([Notification functions force-disabled.])
+fi
+
if test "$ISF_HAS_PKGMGR_INFO" = "yes"; then
AC_DEFINE(HAVE_PKGMGR_INFO,1,[Have Package manager functions.])
fi
ISF_BUILD_REMOTE_INPUT=0
if test "$enable_remote_input" != "no"; then
enable_remote_input=no
- if test "$ISF_HAS_LIBWEBSOCKETS" = "yes"; then
+ if test "$ISF_HAS_LIBWEBSOCKETS" = "yes" && test "$enable_libwebsocket" = "yes"; then
ISF_BUILD_REMOTE_INPUT=1
enable_remote_input=yes
fi
+ if test "$enable_libwebsocket" = "no"; then
+ AC_MSG_NOTICE([LIBWEBSOCKET forced disable.])
+ fi
fi
#if nothing needs libscim-gtkutils, just disable it
+%global __provides_exclude_from ^(.*\\.(wearable|tv|mobile|ivi))$
+
%bcond_with wayland
Name: isf
Summary: Input Service Framework
-Version: 3.0.163
+Version: 3.0.164
Release: 1
Group: Graphics & UI Framework/Input
License: LGPL-2.1+
BuildRequires: pkgconfig(cynara-session)
BuildRequires: capi-appfw-package-manager-devel
Requires(postun): /sbin/ldconfig
-%if "%{?profile}" == "mobile" || "%{?profile}" == "common"
+Requires: %{name}-compat = %{version}-%{release}
+Recommends: %{name}-profile_common = %{version}-%{release}
+Requires: org.tizen.isf-kbd-mode-changer
+
+# Mobile/Common ONLY
BuildRequires: pkgconfig(notification)
-Requires: org.tizen.isf-kbd-mode-changer
-%endif
-%if "%{?profile}" == "tv"
+# TV ONLY
BuildRequires: pkgconfig(libwebsockets)
-%endif
%define APP_PREFIX %{TZ_SYS_RO_APP}/org.tizen.isf-kbd-mode-changer/bin/
%description
Input Service Framewok (ISF) is an input method (IM) platform, and it has been derived from SCIM.
+%package profile_wearable
+Summary: ISF bin for wearable/ivi
+Provides: %{name}-compat = %{version}-%{release}
+Provides: %{name}-profile_ivi = %{version}-%{release}
+Conflicts: %{name}-profile_common
+Conflicts: %{name}-profile_tv
+%description profile_wearable
+Compile isf with --disable-include-notification and --disable-include-libwebsocket
+
+%package profile_common
+Summary: ISF bin for mobile/common
+Provides: %{name}-compat = %{version}-%{release}
+Provides: %{name}-profile_mobile = %{version}-%{release}
+Conflicts: %{name}-profile_wearable
+Conflicts: %{name}-profile_tv
+%description profile_common
+Compile isf with --disable-include-libwebsocket
+
+%package profile_tv
+Summary: ISF bin for TV
+Provides: %{name}-compat = %{version}-%{release}
+Conflicts: %{name}-profile_common
+Conflicts: %{name}-profile_wearable
+%description profile_tv
+Compile isf with --disable-include-notification
%package devel
Summary: ISF header files
export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
-
-%if "%{profile}" == "wearable"
-CFLAGS+=" -D_WEARABLE -DENABLE_HIDE_PANEL_KEY=1";
-CXXFLAGS+=" -D_WEARABLE -DENABLE_HIDE_PANEL_KEY=1";
-%endif
-
-%if "%{profile}" == "mobile" || "%{profile}" == "common"
-CFLAGS+=" -D_MOBILE -DENABLE_HIDE_PANEL_KEY=1";
-CXXFLAGS+=" -D_MOBILE -DENABLE_HIDE_PANEL_KEY=1";
+%if %{with wayland}
+export CFLAGS="$CFLAGS -DWAYLAND"
+export CXXFLAGS="$CXXFLAGS -DWAYLAND"
%endif
+export GC_SECTIONS_FLAGS="-fdata-sections -ffunction-sections -Wl,--gc-sections"
+export CFLAGS="$CFLAGS -fvisibility=hidden ${GC_SECTIONS_FLAGS} "
+export CXXFLAGS="$CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden ${GC_SECTIONS_FLAGS} "
+export CFLAGS_BASIS="$CFLAGS"
+export CXXFLAGS_BASIS="$CXXFLAGS"
-%if "%{profile}" == "tv"
-CFLAGS+=" -D_TV -DENABLE_REMOTE_INPUT=1";
-CXXFLAGS+=" -D_TV -DENABLE_REMOTE_INPUT=1";
+%autogen
+mkdir -p build_tv
+export CFLAGS="$CFLAGS_BASIS -D_TV -DENABLE_REMOTE_INPUT=1";
+export CXXFLAGS="$CFLAGS_BASIS -D_TV -DENABLE_REMOTE_INPUT=1";
+%configure --disable-static \
+ --disable-tray-icon \
+ --disable-filter-sctc \
+ --disable-include-notification \
+%if %{with wayland}
+ --disable-efl-immodule \
%endif
+ --disable-frontend-x11 \
+ --disable-multiwindow-support \
+ --disable-ime-embed-app \
+ --with-ro-app-dir=%{TZ_SYS_RO_APP} \
+ --with-ro-packages-dir=%{TZ_SYS_RO_PACKAGES}
+make %{?_smp_mflags}
+# Install essential profile-tv files into build_tv
+%make_install
+mkdir -p build_tv/bin
+mkdir -p build_tv/lib
+mv %{buildroot}%{_bindir}/* build_tv/bin/
+mv %{buildroot}%{_libdir}/* build_tv/lib/
+mv %{buildroot}%{_datadir}/scim/remote-input build_tv/
+ls -la build_tv/bin/
+ls -la build_tv/lib/
+ls -la build_tv/
+make clean
+mkdir -p build_wearable
+export CFLAGS="$CFLAGS_BASIS -D_WEARABLE -DENABLE_HIDE_PANEL_KEY=1";
+export CXXFLAGS="$CXXFLAGS_BASIS -D_WEARABLE -DENABLE_HIDE_PANEL_KEY=1";
+%configure --disable-static \
+ --disable-tray-icon \
+ --disable-filter-sctc \
+ --disable-include-libwebsocket \
+ --disable-include-notification \
%if %{with wayland}
-CFLAGS+=" -DWAYLAND"
-CXXFLAGS+=" -DWAYLAND"
+ --disable-efl-immodule \
%endif
+ --disable-frontend-x11 \
+ --disable-multiwindow-support \
+ --disable-ime-embed-app \
+ --with-ro-app-dir=%{TZ_SYS_RO_APP} \
+ --with-ro-packages-dir=%{TZ_SYS_RO_PACKAGES}
+make %{?_smp_mflags}
+# Install essential profile-wearable files into build_wearable
+%make_install
+mkdir -p build_wearable/bin
+mkdir -p build_wearable/lib
+mv %{buildroot}%{_bindir}/* build_wearable/bin/
+mv %{buildroot}%{_libdir}/* build_wearable/lib/
+ls -la build_wearable/bin/
+ls -la build_wearable/lib/
+make clean
-export GC_SECTIONS_FLAGS="-fdata-sections -ffunction-sections -Wl,--gc-sections"
-
-CFLAGS+=" -fvisibility=hidden ${GC_SECTIONS_FLAGS} "; export CFLAGS
-
-CXXFLAGS+=" -fvisibility=hidden -fvisibility-inlines-hidden ${GC_SECTIONS_FLAGS} ";export CXXFLAGS
-
-%autogen
+# mobile/common
+export CFLAGS="$CFLAGS_BASIS -D_MOBILE -DENABLE_HIDE_PANEL_KEY=1";
+export CXXFLAGS="$CXXFLAGS_BASIS -D_MOBILE -DENABLE_HIDE_PANEL_KEY=1";
%configure --disable-static \
--disable-tray-icon \
--disable-filter-sctc \
+ --disable-include-libwebsocket \
%if %{with wayland}
--disable-efl-immodule \
%endif
mkdir -p %{buildroot}/etc/scim/conf
mkdir -p %{buildroot}/usr/share/upgrade/scripts/
cp 500.isf_upgrade_24to30.sh %{buildroot}/usr/share/upgrade/scripts/
+mv build_tv/bin/isf-demo-efl %{buildroot}%{_bindir}/isf-demo-efl.tv
+mv build_tv/bin/isf-panel-efl %{buildroot}%{_bindir}/isf-panel-efl.tv
+mv build_tv/bin/isf-log %{buildroot}%{_bindir}/isf-log.tv
+mkdir -p %{buildroot}%{_datadir}/scim
+mv build_tv/remote-input %{buildroot}%{_datadir}/scim/
+#mv build_tv/lib/libscim-*.so* %{buildroot}%{_libdir}/libscim-*.so*.tv
+pushd build_tv/lib/
+for FILE in libscim-*.so*; do mv "$FILE" "%{buildroot}%{_libdir}/$FILE.tv"; done
+popd
+mv build_tv/lib/scim-1.0/scim-launcher %{buildroot}%{_libdir}/scim-1.0/scim-launcher.tv
+mv build_tv/lib/scim-1.0/scim-helper-launcher %{buildroot}%{_libdir}/scim-1.0/scim-helper-launcher.tv
+mv build_wearable/bin/isf-demo-efl %{buildroot}%{_bindir}/isf-demo-efl.wearable
+mv build_wearable/bin/isf-panel-efl %{buildroot}%{_bindir}/isf-panel-efl.wearable
+mv build_wearable/bin/isf-log %{buildroot}%{_bindir}/isf-log.wearable
+#mv build_wearable/lib/libscim-*.so* %{buildroot}%{_libdir}/libscim-*.so*.wearable
+pushd build_wearable/lib/
+for FILE in libscim-*.so*; do mv "$FILE" "%{buildroot}%{_libdir}/$FILE.wearable"; done
+popd
+mv build_wearable/lib/scim-1.0/scim-launcher %{buildroot}%{_libdir}/scim-1.0/scim-launcher.wearable
+mv build_wearable/lib/scim-1.0/scim-helper-launcher %{buildroot}%{_libdir}/scim-1.0/scim-helper-launcher.wearable
%find_lang scim
%postun -p /sbin/ldconfig
+%post profile_wearable
+ln -sf isf-demo-efl.wearable %{_bindir}/isf-demo-efl
+ln -sf isf-panel-efl.wearable %{_bindir}/isf-panel-efl
+ln -sf isf-log.wearable %{_bindir}/isf-log
+ln -sf scim-launcher.wearable %{_libdir}/scim-1.0/scim-launcher
+ln -sf scim-helper-launcher.wearable %{_libdir}/scim-1.0/scim-helper-launcher
+pushd %{_libdir}
+for FILE in libscim-*.so*.wearable; do ln -sf "$FILE" "${FILE%.wearable}"; done
+popd
+
+%preun profile_wearable
+rm %{_bindir}/isf-demo-efl
+rm %{_bindir}/isf-panel-efl
+rm %{_bindir}/isf-log
+rm %{_libdir}/scim-1.0/scim-launcher
+rm %{_libdir}/scim-1.0/scim-helper-launcher
+pushd %{_libdir}
+for FILE in libscim-*.so*; do rm "$FILE"; done
+popd
+
+%post profile_tv
+ln -sf isf-demo-efl.tv %{_bindir}/isf-demo-efl
+ln -sf isf-panel-efl.tv %{_bindir}/isf-panel-efl
+ln -sf isf-log.tv %{_bindir}/isf-log
+ln -sf scim-launcher.tv %{_libdir}/scim-1.0/scim-launcher
+ln -sf scim-helper-launcher.tv %{_libdir}/scim-1.0/scim-helper-launcher
+pushd %{_libdir}
+for FILE in libscim-*.so*.tv; do ln -sf "$FILE" "${FILE%.tv}"; done
+popd
+%preun profile_tv
+rm %{_bindir}/isf-demo-efl
+rm %{_bindir}/isf-panel-efl
+rm %{_bindir}/isf-log
+rm %{_libdir}/scim-1.0/scim-launcher
+rm %{_libdir}/scim-1.0/scim-helper-launcher
+pushd %{_libdir}
+for FILE in libscim-*.so*; do rm "$FILE"; done
+popd
%files -f isf.lang
%manifest %{name}.manifest
%{_sysconfdir}/scim/config
%{_datadir}/scim/isf_candidate_theme1.edj
%{_datadir}/scim/icons/*
-%if "%{profile}" == "tv"
-%attr(755,root,root) %{_datadir}/scim/remote-input/*
-%endif
-%{_bindir}/isf-demo-efl
-%{_bindir}/isf-panel-efl
-%{_bindir}/isf-log
%{_libdir}/ecore_imf/modules/*/*/*.so
%{_libdir}/scim-1.0/1.4.0/IMEngine/socket.so
%{_libdir}/scim-1.0/1.4.0/PanelAgent/*.so
%{_libdir}/scim-1.0/1.4.0/Config/simple.so
%{_libdir}/scim-1.0/1.4.0/Config/socket.so
%{_libdir}/scim-1.0/1.4.0/FrontEnd/*.so
-%{_libdir}/scim-1.0/scim-launcher
-%{_libdir}/scim-1.0/scim-helper-launcher
-%{_libdir}/libscim-*.so*
+# Fortunately imeparser is not fragemented.
%{TZ_SYS_RO_ETC}/package-manager/parserlib/category/libimeparser.so
%license COPYING
%{TZ_SYS_ETC}/dump.d/module.d/*
/usr/share/upgrade/scripts/*
+# files in bindir, lib/libscim*.so.*, lib/scim-1.0/scim-launcher are different
+%exclude %{_libdir}/libscim-*.so*.tv
+%exclude %{_libdir}/libscim-*.so*.wearable
+%{_libdir}/libscim-*.so*
+# All .so files that are required by other packages should be housed in the main package
+# although they might be overwritten by subpackages unless there is no possibilities of
+# have-choice issues.
+
+%files profile_wearable
+%manifest %{name}.manifest
+# files in bindir and libdir may differ.
+%{_bindir}/isf-demo-efl.wearable
+%{_bindir}/isf-panel-efl.wearable
+%{_bindir}/isf-log.wearable
+%{_libdir}/scim-1.0/scim-launcher.wearable
+%{_libdir}/scim-1.0/scim-helper-launcher.wearable
+%{_libdir}/libscim-*.so*.wearable
+
+%files profile_common
+%manifest %{name}.manifest
+# files in bindir, lib/libscim*.so.*, lib/scim-1.0/scim-launcher are different
+%{_bindir}/isf-demo-efl
+%{_bindir}/isf-panel-efl
+%{_bindir}/isf-log
+%{_libdir}/scim-1.0/scim-launcher
+%{_libdir}/scim-1.0/scim-helper-launcher
+# default .so are housed in the main pkg.
+
+%files profile_tv
+%manifest %{name}.manifest
+# files in bindir, lib/libscim*.so.*, lib/scim-1.0/scim-launcher are different
+%{_bindir}/isf-demo-efl.tv
+%{_bindir}/isf-panel-efl.tv
+%{_bindir}/isf-log.tv
+%{_libdir}/scim-1.0/scim-launcher.tv
+%{_libdir}/scim-1.0/scim-helper-launcher.tv
+%{_libdir}/libscim-*.so*.tv
+# TV Only: remote-input
+%attr(755,root,root) %{_datadir}/scim/remote-input/*
%files devel
%defattr(-,root,root,-)