Merge pull request #6 from maxiaojun/master
[platform/upstream/ibus.git] / configure.ac
index 8a48579..e48cc73 100644 (file)
 # Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 # Boston, MA  02111-1307  USA
 
-# if not 1, append datestamp to the version number.
-m4_define([ibus_released], [0])
-m4_define([ibus_major_version], [1])
-m4_define([ibus_minor_version], [3])
-m4_define([ibus_micro_version], [0])
-m4_define(ibus_maybe_datestamp,
-    m4_esyscmd([if test x]ibus_released[ != x1; then date +.%Y%m%d | tr -d '\n\r'; fi]))
 
+# If ibus_released is 0, append datestamp to the version number.
+m4_define([ibus_released], [1])
+
+m4_define([ibus_major_version], [1])
+m4_define([ibus_minor_version], [5])
+m4_define([ibus_micro_version], [1])
+m4_define([ibus_abi_current], [5])
+m4_define([ibus_abi_revision],
+          [m4_eval(100 * ibus_minor_version + ibus_micro_version)])
+m4_define([ibus_abi_age], [0])
+m4_define([ibus_maybe_datestamp],
+    m4_esyscmd([test x]ibus_released[ != x1 && date +.%Y%m%d | tr -d '\n\r']))
 m4_define([ibus_version],
     ibus_major_version.ibus_minor_version.ibus_micro_version[]ibus_maybe_datestamp)
+m4_define([ibus_api_version], [ibus_major_version.0])
 
-AC_INIT([ibus], [ibus_version], [http://code.google.com/p/ibus/issues/entry],[ibus])
-AM_INIT_AUTOMAKE([1.10])
-AC_GNU_SOURCE
+AC_PREFEQ([2.62])
+AC_INIT([ibus], [ibus_version],
+        [http://code.google.com/p/ibus/issues/entry],
+        [ibus])
 
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_MACRO_DIR([m4])
-m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 
-# define PACKAGE_VERSION_* variables
-AS_VERSION
-AS_NANO
-AM_MAINTAINER_MODE
-AM_DISABLE_STATIC
+m4_define([ibus_abi_current_minus_age],
+          [m4_eval(ibus_abi_current - ibus_abi_age)])
+m4_define([ibus_binary_version],
+          [ibus_major_version.ibus_abi_current_minus_age.ibus_abi_age.ibus_abi_revision])
+
+# Required versions of other packages.
+m4_define([glib_required_version], [2.26.0])
+
+
+# Init automake.
+AM_INIT_AUTOMAKE([1.10])
+AM_MAINTAINER_MODE([enable])
+AC_GNU_SOURCE
+
+# Support silent build rules. Disable
+# by either passing --disable-silent-rules to configure or passing V=1
+# to make
+AM_SILENT_RULES([yes])
+
+# Define sustituted variables:
+IBUS_MAJOR_VERSION=ibus_major_version
+IBUS_MINOR_VERSION=ibus_minor_version
+IBUS_MICRO_VERSION=ibus_micro_version
+IBUS_ABI_CURRENT=ibus_abi_current
+IBUS_ABI_REVISION=ibus_abi_revision
+IBUS_ABI_AGE=ibus_abi_age
+IBUS_VERSION=ibus_version
+IBUS_API_VERSION=ibus_api_version
+IBUS_BINARY_VERSION=ibus_binary_version
+AC_SUBST(IBUS_MAJOR_VERSION)
+AC_SUBST(IBUS_MINOR_VERSION)
+AC_SUBST(IBUS_MICRO_VERSION)
+AC_SUBST(IBUS_ABI_CURRENT)
+AC_SUBST(IBUS_ABI_REVISION)
+AC_SUBST(IBUS_ABI_AGE)
+AC_SUBST(IBUS_API_VERSION)
+AC_SUBST(IBUS_VERSION)
+AC_SUBST(IBUS_BINARY_VERSION)
+
+# libtool versioning
+#
+# If LT_VERSION_INFO="lt_current:lt_revision:lt_age", libibus is
+# libibus-ibus_api_version.so.(lt_current - lt_age).lt_age.lt_revision
+# If the abi is changed, but it is compatible with last version,
+# ibus_abi_current++, ibus_abi_age++;
+# If the abi is not compatible with last version,
+# ibus_abi_current++, ibus_abi_age = 0;
+m4_define([lt_current], [ibus_abi_current])
+m4_define([lt_revision], [ibus_abi_revision])
+m4_define([lt_age], [ibus_abi_age])
+LT_VERSION_INFO="lt_current:lt_revision:lt_age"
+LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)
+AC_SUBST(LT_VERSION_INFO)
+AC_SUBST(LT_CURRENT_MINUS_AGE)
+
+# Define GETTEXT_* variables.
+GETTEXT_PACKAGE=ibus10
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
+                   [The prefix for out gettext translation domains.])
+GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
+GLIB_LOCALE_DIR=$localedir
+AC_SUBST(GLIB_LOCALE_DIR)
+
+# For dislpay date.
+m4_define(ibus_datedisplay,
+    m4_esyscmd(date '+%a %b %d %Y' | tr -d '\n\r'))
+DATE_DISPLAY="ibus_datedisplay"
+AC_SUBST(DATE_DISPLAY)
+
+
+# Check for programs.
 AC_PROG_CC
 AM_PROG_CC_C_O
-AC_PROG_CXX
+AC_PROG_CC_STDC
+AM_PROG_VALAC([0.14])
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+
+# i18n stuff
+AM_GLIB_GNU_GETTEXT
+
+# Define PACKAGE_VERSION_* variables.
+AM_DISABLE_STATIC
 AC_ISC_POSIX
 AC_HEADER_STDC
 AM_PROG_LIBTOOL
 IT_PROG_INTLTOOL([0.35.0])
 
-# For dislpay Date
-m4_define(ibus_maybe_datedisplay,
-    m4_esyscmd([if test x]ibus_released[ != x1; then date '+%a %b %d %Y' | tr -d '\n\r'; fi]))
-m4_define([ibus_datedisplay], ibus_maybe_datedisplay)
-DATE_DISPLAY="ibus_datedisplay"
-AC_SUBST(DATE_DISPLAY)
-
-# If only source code changed, lt_revision + 1
-# If any interface added, lt_age + 1
-# If any interfaces changed or removed, lt_current + 1, lt_revision = 0, lt_age = 0
-m4_define([lt_current], [2])
-m4_define([lt_revision], [0])
-m4_define([lt_age], [0])
-LT_VERSION_INFO="lt_current:lt_revision:lt_age"
-AC_SUBST(LT_VERSION_INFO)
-
-# check inotify
-AC_CHECK_HEADERS([sys/inotify.h])
-
-# check funcs
+# Check functions.
 AC_CHECK_FUNCS(daemon)
 
-# check glib2
+# Check packages.
+# Check glib2.
 AM_PATH_GLIB_2_0
 PKG_CHECK_MODULES(GLIB2, [
-    glib-2.0 >= 2.18
+    glib-2.0 >= glib_required_version
 ])
 PKG_CHECK_MODULES(GOBJECT2, [
-    gobject-2.0 >= 2.18
+    gobject-2.0 >= glib_required_version
 ])
 PKG_CHECK_MODULES(GIO2, [
-    gio-2.0 >= 2.18
+    gio-2.0 >= glib_required_version
 ])
 PKG_CHECK_MODULES(GTHREAD2, [
-    gthread-2.0 >= 2.18
+    gthread-2.0 >= glib_required_version
 ])
-# PKG_CHECK_MODULES(PYGOBJECT2, [
-#     pygobject-2.0 >= 2.14
-# ])
 
-# check for gtk, gdk & pygtk
-PKG_CHECK_MODULES(GTK2, [
-    gtk+-2.0
-])
+# --disable-tests option.
+AC_ARG_ENABLE(tests,
+    AS_HELP_STRING([--disable-tests],
+                   [Do not run tests]),
+    [enable_tests=$enableval],
+    [enable_tests=yes]
+)
+AM_CONDITIONAL([ENABLE_TESTS], [test x"$enable_tests" = x"yes"])
+if test x"$enable_tests" != x"yes"; then
+    enable_tests="no (disabled, use --enable-tests to enable)"
+fi
 
-gtk_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
-GTK_IM_MODULEDIR="$libdir"/gtk-2.0/$gtk_binary_version/immodules
+# --disable-gtk2 option.
+AC_ARG_ENABLE(gtk2,
+    AS_HELP_STRING([--disable-gtk2],
+                   [Do not build gtk2 im module]),
+    [enable_gtk2=$enableval],
+    [enable_gtk2=yes]
+)
+AM_CONDITIONAL([ENABLE_GTK2], [test x"$enable_gtk2" = x"yes"])
+
+# --disable-gtk3 option.
+AC_ARG_ENABLE(gtk3,
+    AS_HELP_STRING([--disable-gtk3],
+                   [Do not build gtk3 im module]),
+    [enable_gtk3=$enableval],
+    [enable_gtk3=yes]
+)
+AM_CONDITIONAL([ENABLE_GTK3], [test x"$enable_gtk3" = x"yes"])
+
+# --disable-xim option.
+AC_ARG_ENABLE(xim,
+    AS_HELP_STRING([--disable-xim],
+                   [Do not build xim server]),
+    [enable_xim=$enableval],
+    [enable_xim=yes]
+)
+AM_CONDITIONAL([ENABLE_XIM], [test x"$enable_xim" = x"yes"])
 
-PKG_CHECK_MODULES(GDK2, [
-    gdk-2.0
-])
+if test x"$enable_gtk2" = x"yes" -o x"$enable_xim" = x"yes" ; then
+    # check for gtk2
+    PKG_CHECK_MODULES(GTK2, [
+        gtk+-2.0
+    ])
+fi
+
+if test x"$enable_gtk2" = x"yes"; then
+    # check for gdk2
+    gtk2_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
+    GTK2_IM_MODULEDIR="$libdir"/gtk-2.0/$gtk2_binary_version/immodules
+
+    PKG_CHECK_MODULES(GDK2, [
+        gdk-2.0
+    ])
+else
+    enable_gtk2="no (disabled, use --enable-gtk2 to enable)"
+fi
+
+if test x"$enable_gtk3" = x"yes"; then
+    # check for gtk3, gdk3
+    PKG_CHECK_MODULES(GTK3, [
+        gtk+-3.0
+    ])
+
+    gtk3_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`
+    GTK3_IM_MODULEDIR="$libdir"/gtk-3.0/$gtk3_binary_version/immodules
+
+    PKG_CHECK_MODULES(GDK3, [
+        gdk-3.0
+    ])
+else
+    enable_gtk3="no (disabled, use --enable-gtk3 to enable)"
+fi
 
-# check for gtk-doc
+if test x"$enable_xim" = x"yes"; then
+    # Check for x11
+    PKG_CHECK_MODULES(X11, [
+        x11
+    ])
+    AC_CHECK_HEADERS([X11/XKBlib.h])
+else
+    enable_xim="no (disabled, use --enable-xim to enable)"
+fi
+
+# GObject introspection
+GOBJECT_INTROSPECTION_CHECK([0.6.8])
+
+IBUS_GIR_SCANNERFLAGS=
+if test x"$found_introspection" = x"yes" ; then
+    IBUS_GIR_SCANNERFLAGS="--warn-all --identifier-prefix=IBus --symbol-prefix=ibus"
+    PKG_CHECK_EXISTS([gobject-introspection-1.0 >= 0.9.6],
+                     [gir_symbol_prefix=yes],
+                     [gir_symbol_prefix=no])
+    if test x"$gir_symbol_prefix" = x"no" ; then
+        IBUS_GIR_SCANNERFLAGS="--strip-prefix=IBus"
+    fi
+fi
+AC_SUBST(IBUS_GIR_SCANNERFLAGS)
+
+# Check vapigen.
+VAPIGEN_CHECK([0.16])
+
+# Check for gtk-doc.
 GTK_DOC_CHECK(1.9)
+if test x"$enable_gtk_doc" = x"no"; then
+    enable_gtk_doc="no (disabled, use --enable-gtk-doc to enable)"
+fi
 
-# check for dbus-glib
+# Check for dbus.
 PKG_CHECK_MODULES(DBUS, [
     dbus-1
 ])
 
-# check gconf
-PKG_CHECK_MODULES(GCONF,
-    [gconf-2.0 >= 2.12],
+# --enable-gconf option.
+AC_ARG_ENABLE(gconf,
+    AS_HELP_STRING([--enable-gconf],
+                   [Use GConf code]),
+    [enable_gconf=$enableval],
+    [enable_gconf=no]
 )
+AM_CONDITIONAL([ENABLE_GCONF], [test x"$enable_gconf" = x"yes"])
+
+if test x"$enable_gconf" = x"yes"; then
+    # check gconf
+    PKG_CHECK_MODULES(GCONF,
+        [gconf-2.0 >= 2.12],
+    )
 
-AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
-if test x"$GCONFTOOL" = xno; then
-    AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
+    AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
+    if test x"$GCONFTOOL" = xno; then
+        AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
+    fi
+
+    AM_GCONF_SOURCE_2
+    # GCONF_SCHEMAS_INSTALL should be set in macro AM_GCONF_SOURCE_2
+else
+    AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [false])
+    enable_gconf="no (disabled, use --enable-gconf to enable)"
 fi
 
-AM_GCONF_SOURCE_2
-
-# GCONF_SERVERDIR=`$PKG_CONFIG --variable=gconf_serverdir gconf-2.0`
-# old_path=$PATH
-# if test x"$GCONF_SERVERDIR" != x; then
-#     PATH=$GCONF_SERVERDIR:$PATH
-# fi
-# 
-# AC_PATH_PROG(GCONF_SANITY_CHECK, gconf-sanity-check-2, no)
-# if test x"$GCONF_SANITY_CHECK" = xno; then
-#     AC_MSG_ERROR([gconf-sanity-check-2 executable not found in your path - should be installed with GConf])
-# fi
-# 
-# AC_SUBST(GCONF_SANITY_CHECK)
-# PATH=$old_path
-
-# Check for x11
-PKG_CHECK_MODULES(X11, [
-    x11
-])
+# --enable-memconf option.
+AC_ARG_ENABLE(memconf,
+    AS_HELP_STRING([--enable-memconf],
+                   [Enable configure base on memory]),
+    [enable_memconf=$enableval],
+    [enable_memconf=no]
+)
+AM_CONDITIONAL([ENABLE_MEMCONF], [test "x$enable_memconf" = "xyes"])
+
+AC_ARG_ENABLE(dconf,
+    AS_HELP_STRING([--disable-dconf],
+                   [Disable configure base on dconf]),
+    [enable_dconf=$enableval],
+    [enable_dconf=yes]
+)
+AM_CONDITIONAL([ENABLE_DCONF], [test x"$enable_dconf" = x"yes"])
+
+if test x"$enable_dconf" = x"yes"; then
+    # check dconf
+    PKG_CHECK_MODULES(DCONF,
+        [dconf >= 0.7.5],
+    )
+    PKG_CHECK_EXISTS([dconf >= 0.13.4],
+        [AC_DEFINE(DCONF_0_13_4, TRUE, [dconf is 0.13.4 or later])],
+        [])
+    # check glib-compile-schemas
+    GLIB_GSETTINGS
+    enable_dconf="yes (enabled, use --disable-dconf to disable)"
+fi
 
-AC_CHECK_HEADERS([X11/XKBlib.h])
+# Check env.
+AC_PATH_PROG(ENV_IBUS_TEST, env)
+AC_SUBST(ENV_IBUS_TEST)
 
-# check env
-AC_PATH_PROG(ENV, env)
-AC_SUBST(ENV)
+AC_ARG_ENABLE(python-library,
+    AS_HELP_STRING([--enable-python-library],
+                   [Use ibus python library]),
+    [enable_python_library=$enableval],
+    [enable_python_library=no]
+)
 
-AC_ARG_ENABLE(python,
-    AS_HELP_STRING([--disable-python],
-                   [Do not use Python code]),
-    [enable_python=$enableval],
-    [enable_python=yes]
+AC_ARG_ENABLE(setup,
+    AS_HELP_STRING([--disable-setup],
+                   [Do not use setup ui.]),
+    [enable_setup=$enableval],
+    [enable_setup=yes]
 )
 
-AM_CONDITIONAL([ENABLE_PYTHON], [test "x$enable_python" = "xyes"])
+AM_CONDITIONAL([ENABLE_PYTHON_LIBRARY], [test x"$enable_python_library" = x"yes"])
+AM_CONDITIONAL([ENABLE_SETUP], [test x"$enable_setup" = x"yes"])
+AM_CONDITIONAL([ENABLE_DAEMON], [true])
+
+AM_PATH_PYTHON([2.5])
+
+PYGOBJECT_REQUIRED=3.0.0
+
+PKG_CHECK_EXISTS([pygobject-3.0 >= $PYGOBJECT_REQUIRED],
+                 [enable_pygobject=yes],[enable_pygobject=no])
+
+if test "x$enable_pygobject" = "xyes"; then
+       PKG_CHECK_MODULES(PYTHON, [pygobject-3.0 >= $PYGOBJECT_REQUIRED])
+
+       pyoverridesdir=`$PYTHON -c "import gi; print(gi._overridesdir)"`
+       AC_SUBST(pyoverridesdir)
+fi
+
+AM_CONDITIONAL(ENABLE_PYGOBJECT, test x"$enable_pygobject" = "xyes")
 
-if test x"$enable_python" != x"no"; then
-    # check python
-    AM_PATH_PYTHON([2.5])
+if test x"$enable_python_library" = x"yes"; then
+    # Check python.
     AC_PATH_PROG(PYTHON_CONFIG, python$PYTHON_VERSION-config)
-    if test x"$PYTHON_CONFIG" == x""; then
+    if test x"$PYTHON_CONFIG" = x""; then
         AC_PATH_PROG(PYTHON_CONFIG, python-config)
     fi
     if test x"$PYTHON_CONFIG" != x""; then
@@ -176,34 +378,33 @@ if test x"$enable_python" != x"no"; then
     AC_SUBST(PYTHON_CFLAGS)
     AC_SUBST(PYTHON_INCLUDES)
     AC_SUBST(PYTHON_LIBS)
+else
+    enable_python_library="no (disabled, use --enable-python-library to enable)"
 fi
 
-#
-# REBUILD = \#
-# AC_SUBST(REBUILD)
-
-# define GETTEXT_* variables
-GETTEXT_PACKAGE=ibus
-AC_SUBST(GETTEXT_PACKAGE)
-AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package])
-
-AM_GLIB_GNU_GETTEXT
+# Define gtk2 immodule dir.
+AC_ARG_WITH(gtk2-im-module-dir,
+    AS_HELP_STRING([--with-gtk2-im-module-dir[=DIR]],
+        [Select gtk2 immodule dir]),
+    GTK2_IM_MODULEDIR=$with_gtk2_im_module_dir
+)
+AC_SUBST(GTK2_IM_MODULEDIR)
 
-# define configure arguments
-AC_ARG_WITH(gtk-im-module-dir,
-    AS_HELP_STRING([--with-gtk-im-module-dir[=DIR]],
-        [Select gtk immodule dir]),
-    GTK_IM_MODULEDIR=$with_gtk_im_module_dir
+# Define gtk3 immodule dir.
+AC_ARG_WITH(gtk3-im-module-dir,
+    AS_HELP_STRING([--with-gtk3-im-module-dir[=DIR]],
+        [Select gtk3 immodule dir]),
+    GTK3_IM_MODULEDIR=$with_gtk3_im_module_dir
 )
-AC_SUBST(GTK_IM_MODULEDIR)
+AC_SUBST(GTK3_IM_MODULEDIR)
 
-if test x"$enable_python" != x"no"; then
-    # check for dbus-python
+if test x"$enable_python" = x"yes"; then
+    # Check for dbus-python.
     AC_ARG_ENABLE(dbus-python-check,
         AS_HELP_STRING([--disable-dbus-python-check],
             [Do not check dbus-python]),
         [enable_dbus_python_check=$enableval],
-        [enable_dbus_python_check=yes],
+        [enable_dbus_python_check=yes]
     )
     PKG_CHECK_MODULES(DBUS_PYTHON,
         [dbus-python >= 0.83.0],
@@ -219,74 +420,160 @@ if test x"$enable_python" != x"no"; then
     fi
 fi
 
-# check iso-codes
-AC_ARG_ENABLE(iso-codes-check,
-    AS_HELP_STRING([--disable-iso-codes-check],
-        [Do not check iso-codes]),
-    [enable_iso_codes_check=$enableval],
-    [enable_iso_codes_check=yes],
+# Option for always disable snooper applications.
+AC_ARG_ENABLE(key-snooper,
+    AS_HELP_STRING([--disable-key-snooper],
+        [Always disable key snooper in gtk im module]),
+    [enable_key_snooper=$enableval],
+    [enable_key_snooper=yes]
+)
+if test x"$enable_key_snooper" = x"yes"; then
+    AC_DEFINE(ENABLE_SNOOPER, TRUE, [Enable key snooper])
+else
+    AC_DEFINE(ENABLE_SNOOPER, FALSE, [Enable key snooper])
+    enable_key_snooper="no (disabled, use --enable-key-snooper to enable)"
+fi
+
+# Option for no snooper applications.
+AC_ARG_WITH(no-snooper-apps,
+    AS_HELP_STRING([--with-no-snooper-apps[=regex1,regex2]],
+        [Does not enable keyboard snooper in those applications (like: .*chrome.*,firefox.*)]),
+    NO_SNOOPER_APPS=$with_no_snooper_apps,
+    NO_SNOOPER_APPS=[.*chrome.*,.*chromium.*,firefox.*,Do.*]
 )
-PKG_CHECK_MODULES(ISOCODES,
-    iso-codes,
-    [IBUS_HAS_ISOCODES=yes],
-    [IBUS_HAS_ISOCODES=no],
+AC_DEFINE_UNQUOTED(NO_SNOOPER_APPS, "$NO_SNOOPER_APPS",
+    [Does not enbale keyboard snooper in those applications])
+
+# GNOME 3 uses the theme's icon.
+AC_ARG_WITH(panel-icon-keyboard,
+    AS_HELP_STRING([--with-panel-icon-keyboard[=icon_name]],
+        [Set the default panel icon (default: "ibus-keyboard")]),
+    [if test x"$with_panel_icon_keyboard" = x"yes" -o \
+             x"$with_panel_icon_keyboard" = x; then
+         with_panel_icon_keyboard="input-keyboard-symbolic"
+     fi
+     if test x"$with_panel_icon_keyboard" = x"legacy"; then
+         with_panel_icon_keyboard="ibus-keyboard"
+     fi
+     IBUS_ICON_KEYBOARD=$with_panel_icon_keyboard
+    ],
+    IBUS_ICON_KEYBOARD="ibus-keyboard"
 )
-if test x"$IBUS_HAS_ISOCODES" != x"yes"; then
-    if test x"$enable_iso_codes_check" != x"no"; then
-        AC_MSG_ERROR([can not find iso-codes. Please install iso-codes or configure with --disable-iso-codes-check])
-    else
-        AC_MSG_WARN([can not find iso-codes. It is required.])
-    fi
+AC_SUBST(IBUS_ICON_KEYBOARD)
+
+# --disable-surrounding-text option.
+AC_ARG_ENABLE(surrounding-text,
+    AS_HELP_STRING([--disable-surrounding-text],
+        [Enable surrounding-text support]),
+    [enable_surrounding_text=$enableval],
+    [enable_surrounding_text=yes]
+)
+if test x"$enable_surrounding_text" = x"yes"; then
+    AC_DEFINE(ENABLE_SURROUNDING, TRUE, [Enable surrounding-text support])
+else
+    enable_surrounding_text="no (disabled, use --enable-surrounding-text to enable)"
+fi
+
+# --disable-ui
+AC_ARG_ENABLE(ui,
+    AS_HELP_STRING([--disable-ui],
+                   [Disable ibus default user interface]),
+    [enable_ui=$enableval],
+    [enable_ui=yes]
+)
+AM_CONDITIONAL([ENABLE_UI], [test x"$enable_ui" = x"yes"])
+if test x"$enable_ui" = x"yes"; then
+    enable_ui="yes (enabled, use --disable-ui to disable)"
+fi
+
+# --disable-engine
+AC_ARG_ENABLE(engine,
+    AS_HELP_STRING([--disable-engine],
+                   [Disable ibus simple engine]),
+    [enable_engine=$enableval],
+    [enable_engine=yes]
+)
+AM_CONDITIONAL([ENABLE_ENGINE], [test x"$enable_engine" = x"yes"])
+if test x"$enable_engine" = x"yes"; then
+    enable_engine="yes (enabled, use --disable-engine to disable)"
 fi
 
+# Check iso-codes.
+PKG_CHECK_MODULES(ISOCODES, [
+    iso-codes
+])
+ISOCODES_PREFIX=`pkg-config iso-codes --variable=prefix`
+AC_SUBST(ISOCODES_PREFIX)
+
 # OUTPUT files
 AC_CONFIG_FILES([ po/Makefile.in
 Makefile
 ibus-1.0.pc
 ibus.spec
-xinput-ibus
-gconf/Makefile
-gconf/gconf.xml.in
 client/Makefile
 client/gtk2/Makefile
+client/gtk3/Makefile
 client/x11/Makefile
 src/Makefile
 src/ibusversion.h
+src/tests/Makefile
 bus/Makefile
+engine/Makefile
 util/Makefile
 util/IMdkit/Makefile
 data/Makefile
 data/icons/Makefile
 data/keymaps/Makefile
+data/dconf/Makefile
 docs/Makefile
 docs/reference/Makefile
+docs/reference/ibus/ibus-docs.sgml
 docs/reference/ibus/Makefile
 m4/Makefile
+ibus/_config.py
+ibus/Makefile
+ibus/interface/Makefile
+ui/Makefile
+ui/gtk3/Makefile
+setup/Makefile
+setup/ibus-setup
+bindings/Makefile
+bindings/pygobject/Makefile
+bindings/vala/Makefile
+conf/Makefile
+conf/gconf/Makefile
+conf/dconf/Makefile
+conf/memconf/Makefile
+tools/Makefile
 ])
 
-if test x"$enable_python" != x"no"; then
-    AC_CONFIG_FILES([
-    ibus/_config.py
-    ibus/Makefile
-    ibus/interface/Makefile
-    ui/Makefile
-    ui/gtk/Makefile
-    ui/gtk/ibus-ui-gtk
-    ui/gtk/gtkpanel.xml.in
-    setup/Makefile
-    setup/ibus-setup
-    ])
-fi
-
 AC_OUTPUT
 AC_MSG_RESULT([
 Build options:
-  Version                  $VERSION
-  Install prefix           $prefix
-  Build shared libs        $enable_shared
-  Build static libs        $enable_static
-  Gtk immodule dir         $GTK_IM_MODULEDIR
-  Build python modules     $enable_python
-  Build document           $enable_gtk_doc
+  Version                   $IBUS_VERSION
+  Install prefix            $prefix
+  Build shared libs         $enable_shared
+  Build static libs         $enable_static
+  CFLAGS                    $CFLAGS
+  Gtk2 immodule dir         $GTK2_IM_MODULEDIR
+  Gtk3 immodule dir         $GTK3_IM_MODULEDIR
+  Build gtk2 immodule       $enable_gtk2
+  Build gtk3 immodule       $enable_gtk3
+  Build XIM agent server    $enable_xim
+  Build python library      $enable_python_library
+  Build gconf modules       $enable_gconf
+  Build memconf modules     $enable_memconf
+  Build dconf modules       $enable_dconf
+  Build introspection       $found_introspection
+  IBus-1.0.gir scannerflags "$IBUS_GIR_SCANNERFLAGS"
+  Build vala binding        $enable_vala
+  Build document            $enable_gtk_doc
+  Build UI                  $enable_ui
+  Build engine              $enable_engine
+  Enable key snooper        $enable_key_snooper
+  No snooper regexes        "$NO_SNOOPER_APPS"
+  Panel icon                "$IBUS_ICON_KEYBOARD"
+  Enable surrounding-text   $enable_surrounding_text
+  Run test cases            $enable_tests
 ])