keysyms-update: Add deprecation guards to the deprecated header
[profile/ivi/clutter.git] / configure.ac
index 4ef3bcd..86b01f9 100644 (file)
@@ -9,8 +9,8 @@
 # - increase clutter_micro_version to the next odd number
 # - increase clutter_interface_version to the next odd number
 m4_define([clutter_major_version], [1])
-m4_define([clutter_minor_version], [9])
-m4_define([clutter_micro_version], [1])
+m4_define([clutter_minor_version], [11])
+m4_define([clutter_micro_version], [5])
 
 # • for stable releases: increase the interface age by 1 for each release;
 #   if the API changes, set to 0. interface_age and binary_age are used to
@@ -83,6 +83,8 @@ AC_SUBST([CLUTTER_LT_VERSION],  [$CLUTTER_LT_VERSION])
 
 AC_PROG_SED
 
+dnl = Preliminary platform checks =============================================
+
 AC_CANONICAL_HOST
 
 platform_win32=no
@@ -97,6 +99,11 @@ AS_CASE([$host],
           platform_win32=yes
         ],
 
+        [*-*-linux*],
+        [
+          platform_linux=yes
+        ],
+
         []
 )
 AC_MSG_RESULT([$platform_win32])
@@ -109,10 +116,13 @@ AM_CONDITIONAL(OS_QUARTZ, [test "$platform_quartz" = "yes"])
 AC_CHECK_HEADER([GL/glx.h], [platform_glx=yes], [platform_glx=no])
 AC_CHECK_LIB([GL], [glXCreateContext], [platform_glx=yes], [platform_glx=no])
 AM_CONDITIONAL(OS_GLX, [test "$platform_glx" = "yes"])
+AM_CONDITIONAL(OS_LINUX, [test "$platform_linux" = "yes"])
 
 AC_SUBST(CLUTTER_LT_LDFLAGS)
 
-dnl ========================================================================
+AC_CACHE_SAVE
+
+dnl = Dependencies =========================================================
 
 # Checks for programs.
 AM_PROG_CC_C_O
@@ -125,18 +135,18 @@ LT_INIT([disable-static])
 AC_HEADER_STDC
 
 # required versions for dependencies
-m4_define([glib_req_version],           [2.31.0])
-m4_define([cogl_req_version],           [1.9.1])
+m4_define([glib_req_version],           [2.31.19])
+m4_define([cogl_req_version],           [1.9.6])
 m4_define([json_glib_req_version],      [0.12.0])
 m4_define([atk_req_version],            [2.1.5])
 m4_define([cairo_req_version],          [1.10])
-m4_define([pango_req_version],          [1.20])
+m4_define([pango_req_version],          [1.30])
 m4_define([gi_req_version],             [0.9.5])
 m4_define([uprof_req_version],          [0.3])
 m4_define([gtk_doc_req_version],        [1.15])
 m4_define([xfixes_req_version],         [3])
 m4_define([xcomposite_req_version],     [0.4])
-m4_define([gdk_req_version],            [3.0.0])
+m4_define([gdk_req_version],            [3.3.18])
 
 AC_SUBST([GLIB_REQ_VERSION],       [glib_req_version])
 AC_SUBST([COGL_REQ_VERSION],       [cogl_req_version])
@@ -181,20 +191,31 @@ AC_ARG_ENABLE([Bsymbolic],
 AS_IF([test "x$enable_Bsymbolic" = "xyes"], [CLUTTER_LINK_FLAGS=-Wl[,]-Bsymbolic-functions])
 AC_SUBST(CLUTTER_LINK_FLAGS)
 
+AC_CACHE_SAVE
+
 dnl ========================================================================
 
 FLAVOUR_LIBS=""
 FLAVOUR_CFLAGS=""
 CLUTTER_BACKENDS=""
+CLUTTER_INPUT_BACKENDS=""
+CLUTTER_CONFIG_DEFINES=
 
 experimental_backend=no
+experimental_input_backend=no
 
 # base dependencies for core
 CLUTTER_BASE_PC_FILES="cogl-1.0 >= $COGL_REQ_VERSION cairo-gobject >= $CAIRO_REQ_VERSION atk >= $ATK_REQ_VERSION pangocairo >= $PANGO_REQ_VERSION cogl-pango-1.0 json-glib-1.0 >= $JSON_GLIB_REQ_VERSION"
 
+# private base dependencies
+CLUTTER_BASE_PC_FILES_PRIVATE=""
+
 # backend specific pkg-config files
 BACKEND_PC_FILES=""
 
+# private backend specific dependencies
+BACKEND_PC_FILES_PRIVATE=""
+
 dnl === Clutter windowing system backend ======================================
 
 AC_ARG_ENABLE([x11-backend],
@@ -221,6 +242,10 @@ AC_ARG_ENABLE([egl-backend],
               [AS_HELP_STRING([--enable-egl-backend=@<:@yes/no@:>@], [Enable the EGL framebuffer backend (default=no)])],
               [enable_egl=$enableval],
               [enable_egl=no])
+AC_ARG_ENABLE([cex100-backend],
+              [AS_HELP_STRING([--enable-cex100-backend=@<:@yes/no@:>@], [Enable the CEx100 backend (default=no)])],
+              [enable_cex100=$enableval],
+              [enable_cex100=no])
 
 dnl Define default values
 AS_IF([test "x$enable_x11" = "xcheck"],
@@ -247,31 +272,19 @@ dnl Per-backend rules
 AS_IF([test "x$enable_x11" = "xyes"],
       [
         CLUTTER_BACKENDS="$CLUTTER_BACKENDS x11"
+        CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS x11"
 
         SUPPORT_X11=1
         SUPPORT_GLX=1
         SUPPORT_COGL=1
 
-        # Mesa 7.3 added a GL pkg-config file, finally, but if a pkg-config
-        # file isn't found just add -lGL and hope for the best.
-        PKG_CHECK_EXISTS([gl],
-                         [BACKEND_PC_FILES="$BACKEND_PC_FILES gl"],
-                         [FLAVOUR_LIBS="$FLAVOUR_LIBS -lGL"])
-
-        # We might fall back to DRM for sync-to-vblank on GLX
-        PKG_CHECK_EXISTS([libdrm],
-                         [
-                           AC_DEFINE([HAVE_DRM], [1], [Have libdrm support])
-                           BACKEND_PC_FILES="$BACKEND_PC_FILES libdrm"
-                         ],
-                         [])
-
-        # we use fontconfig API and pango-fc when the fontconfig
-        # configuration changes
+        # we use fontconfig API and pango-ft2 when the fontconfig
+        # configuration changes; we don't expose any API for this
+        # so we add pango-ft2 to the private Requires.
         PKG_CHECK_EXISTS([pangoft2],
                          [
                            AC_DEFINE([HAVE_PANGO_FT2], [1], [Supports PangoFt2])
-                           BACKEND_PC_FILES="$BACKEND_PC_FILES pangoft2"
+                           BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE pangoft2"
                          ],
                          [])
 
@@ -281,110 +294,107 @@ AS_IF([test "x$enable_x11" = "xyes"],
 AS_IF([test "x$enable_gdk" = "xyes"],
       [
         CLUTTER_BACKENDS="$CLUTTER_BACKENDS gdk"
+        CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS gdk"
 
        SUPPORT_GDK=1
         SUPPORT_COGL=1
 
        BACKEND_PC_FILES="$BACKEND_PC_FILES gdk-3.0"
-       PKG_CHECK_EXISTS([gl], [BACKEND_PC_FILES="$BACKEND_PC_FILES gl"], [])
       ])
 
 AS_IF([test "x$enable_wayland" = "xyes"],
       [
         CLUTTER_BACKENDS="$CLUTTER_BACKENDS wayland"
+        CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS wayland"
 
         experimental_backend="yes"
 
         SUPPORT_WAYLAND=1
-        SUPPORT_EVDEV=1
 
-        PKG_CHECK_EXISTS([gl], [BACKEND_PC_FILES="$BACKEND_PC_FILES gl"], [])
-        PKG_CHECK_EXISTS([egl], [BACKEND_PC_FILES="$BACKEND_PC_FILES egl"], [])
-        PKG_CHECK_EXISTS([wayland-client xkbcommon],
-                         [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-client xkbcommon"],
+        PKG_CHECK_EXISTS([wayland-client xkbcommon gdk-pixbuf-2.0],
+                         [
+                            BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-client xkbcommon"
+                            BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE gdk-pixbuf-2.0"
+                         ],
                          [])
 
-        AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland backend])
+        AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland client backend])
       ])
 
-AS_IF([test "x$enable_egl" = "xyes"],
-      [
-        CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
+dnl Note this is orthogonal to the client side support and you can
+dnl use the Wayland compositor features with any of the clutter
+dnl backends with corresponding Cogl support.
+AC_ARG_ENABLE([wayland-compositor],
+              [AS_HELP_STRING([--enable-wayland-compositor=@<:@yes/no@:>@],
+                              [Enable Wayland compositor features (default=no)])],
+              [],
+              [AS_IF([test "x$SUPPORT_EGL" = "x1"],
+                     [enable_wayland_compositor=yes],
+                     [enable_wayland_compositor=no])
+              ])
 
-        SUPPORT_EGL=1
-        SUPPORT_COGL=1
+AS_IF([test "x$enable_wayland_compositor" = "xyes"],
+      [
+        PKG_CHECK_EXISTS([wayland-server],
+                        [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-server"], [])
+        SUPPORT_WAYLAND_COMPOSITOR=1
+       CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
+#define CLUTTER_HAS_WAYLAND_COMPOSITOR_SUPPORT 1"
+        AC_DEFINE([HAVE_CLUTTER_WAYLAND_COMPOSITOR], [1], [Have Wayland compositor support])
+      ])
 
-        # if Mesa has support for egl, we can use it as well
-        PKG_CHECK_EXISTS([egl],
-                         [
-                           BACKEND_PC_FILES="$BACKEND_PC_FILES egl"
-                         ],
-                         [])
+AM_CONDITIONAL(SUPPORT_WAYLAND_COMPOSITOR, [test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"])
 
-        AC_ARG_WITH([tslib],
-                    [AS_HELP_STRING([--with-tslib=@<:@yes/no@:>@], [Use TSLib for events])],
-                    [],
-                    [with_tslib=yes])
+AS_IF([test "x$enable_wayland_compositor" != "xyes" -a "x$enable_wayland" != "xyes"],
+      [
+        # The wayland headers introduce so much symbol shadowing that build
+        # logs become incomprehensible with -Wshadow so we only use it for
+        # non-wayland builds.
+       MAINTAINER_COMPILER_FLAGS="-Wshadow"
+      ])
 
-        AC_ARG_WITH([evdev],
-                    [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Use evdev for events])],
-                    [],
-                    [with_evdev=yes])
+AS_IF([test "x$enable_cex100" = "xyes"],
+      [
+        CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100"
 
-        AC_ARG_WITH([gdl],
-                    [AS_HELP_STRING([--with-gdl=@<:@yes/no@:>@], [Use libgdl for CE3100/CE4100 support])],
-                    [],
-                    [with_gdl=no])
+        experimental_backend="yes"
 
-        AS_IF([test "x$with_tslib" = "xyes"],
-              [
-                PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
-                AS_IF([test "x$have_tslib" = "xyes"],
-                      [
-                        AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
-                        SUPPORT_TSLIB=1
-                      ])
-              ],
-              [have_tslib=no])
+        SUPPORT_COGL=1
+        SUPPORT_CEX100=1
 
-        AS_IF([test "x$with_evdev" = "xyes"],
-              [
-                PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
-                AS_IF([test "x$have_evdev" = "xyes"],
-                      [
-                        AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
-                        SUPPORT_EVDEV=1
-                      ])
-              ],
-              [have_evdev=no])
+        have_gdl=no
+        AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
 
-        AS_IF([test "x$with_gdl" = "xyes"],
+        AS_IF([test "x$have_gdl" = "xno"],
               [
-                have_gdl=no
+                AC_CHECK_HEADERS([CE4100/libgdl.h],
+                                 [
+                                   FLAVOUR_CFLAGS="-I/usr/include/CE4100"
+                                   have_gdl=yes
+                                   CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
+                                 ])
+              ])
 
-                AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
+        AS_IF([test "x$have_gdl" = "xno"],
+              [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])])
 
-                AS_IF([test "x$have_gdl" = "xno"],
-                      [
-                        AC_CHECK_HEADERS([CE4100/libgdl.h],
-                                         [
-                                           FLAVOUR_CFLAGS="-I/usr/include/CE4100"
-                                           have_gdl=yes
-                                           CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
-                                         ])
-                      ])
+        AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
 
-                AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
+        FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
 
-                AS_IF([test "x$have_gdl" = "xno"], [AC_MSG_ERROR([libgdl.h not found])])
+        AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
+        AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
+        AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
+      ])
 
-                FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
+AS_IF([test "x$enable_egl" = "xyes"],
+      [
+        CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
 
-                SUPPORT_EGL_PLATFORM_GDL=1
+        experimental_backend="yes"
 
-                AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
-              ],
-              [have_gdl=no])
+        SUPPORT_EGL=1
+        SUPPORT_COGL=1
 
         FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
         FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
@@ -397,6 +407,7 @@ AS_IF([test "x$enable_egl" = "xyes"],
 AS_IF([test "x$enable_osx" = "xyes"],
       [
         CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx"
+        CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx"
 
         AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend])
 
@@ -408,6 +419,7 @@ AS_IF([test "x$enable_osx" = "xyes"],
 AS_IF([test "x$enable_win32" = "xyes"],
       [
         CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32"
+        CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32"
 
         AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend])
 
@@ -424,6 +436,47 @@ AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
         AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
       ])
 
+AS_IF([test "x$platform_linux" = "xyes"],
+      [
+        AC_DEFINE([OS_LINUX], [1], [Define to 1 if building for Linux])
+      ])
+
+# additional input backends
+
+AC_ARG_ENABLE([tslib-input],
+              [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])],
+              [enable_tslib=$enableval],
+              [enable_tslib=no])
+AC_ARG_ENABLE([evdev-input],
+              [AS_HELP_STRING([--enable-evdev-input=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])],
+              [enable_evdev=$enableval],
+              [enable_evdev=no])
+
+AS_IF([test "x$enable_tslib" = "xyes"],
+      [
+        PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
+        AS_IF([test "x$have_tslib" = "xyes"],
+              [
+                CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib"
+                experimental_input_backend="yes"
+                AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
+                SUPPORT_TSLIB=1
+              ])
+      ])
+
+AS_IF([test "x$enable_evdev" = "xyes"],
+      [
+        PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
+        AS_IF([test "x$have_evdev" = "xyes"],
+              [
+                CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev"
+                BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 xkbcommon"
+                experimental_input_backend="yes"
+                AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
+                SUPPORT_EVDEV=1
+              ])
+      ])
+
 # conditionals for use in automake files...
 AM_CONDITIONAL(SUPPORT_GLX,     [test "x$SUPPORT_GLX" = "x1"])
 AM_CONDITIONAL(SUPPORT_X11,     [test "x$SUPPORT_X11" = "x1"])
@@ -431,17 +484,16 @@ AM_CONDITIONAL(SUPPORT_GDK,     [test "x$SUPPORT_GDK" = "x1"])
 AM_CONDITIONAL(SUPPORT_EGL,     [test "x$SUPPORT_EGL" = "x1"])
 AM_CONDITIONAL(SUPPORT_OSX,     [test "x$SUPPORT_OSX" = "x1"])
 AM_CONDITIONAL(SUPPORT_WIN32,   [test "x$SUPPORT_WIN32" = "x1"])
-AM_CONDITIONAL(SUPPORT_CEX100,  [test "x$SUPPORT_EGL_PLATFORM_GDL" = "x1"])
+AM_CONDITIONAL(SUPPORT_CEX100,  [test "x$SUPPORT_CEX100" = "x1"])
 AM_CONDITIONAL(SUPPORT_WAYLAND, [test "x$SUPPORT_WAYLAND" = "x1"])
-AM_CONDITIONAL(SUPPORT_STUB,    [test "x$SUPPORT_WIN32" = "x1" -o \
-                                      "x$SUPPORT_OSX" = "x1" -o \
-                                      "x$SUPPORT_WAYLAND" = "x1"])
 
 AM_CONDITIONAL(USE_COGL,  [test "x$SUPPORT_COGL" = "x1"])
 AM_CONDITIONAL(USE_TSLIB, [test "x$have_tslib" = "xyes"])
 AM_CONDITIONAL(USE_EVDEV, [test "x$have_evdev" = "xyes"])
 AM_CONDITIONAL(USE_GLD,   [test "x$have_gdl" = "xyes"])
 
+AM_CONDITIONAL(NEED_XKB_UTILS, [test "x$have_evdev" = "xyes" -o "x$SUPPORT_WAYLAND" = "x1"])
+
 dnl Instead of using AM_CFLAGS to ensure
 dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
 dnl and cogl code we use a define in config.h instead. This helps ensure
@@ -453,17 +505,22 @@ dnl strip leading spaces
 CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* }
 AC_SUBST(CLUTTER_BACKENDS)
 
-dnl === Clutter configuration =================================================
+CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* }
+AC_SUBST(CLUTTER_INPUT_BACKENDS)
 
-CLUTTER_CONFIG_DEFINES=
+AC_CACHE_SAVE
+
+dnl === Clutter configuration =================================================
 
 # windowing systems
 AS_IF([test "x$SUPPORT_X11" = "x1"],
       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
-#define CLUTTER_WINDOWING_X11 \"x11\""])
+#define CLUTTER_WINDOWING_X11 \"x11\"
+#define CLUTTER_INPUT_X11 \"x11\""])
 AS_IF([test "x$SUPPORT_GDK" = "x1"],
       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
-#define CLUTTER_WINDOWING_GDK \"gdk\""])
+#define CLUTTER_WINDOWING_GDK \"gdk\"
+#define CLUTTER_INPUT_GDK \"gdk\""])
 AS_IF([test "x$SUPPORT_GLX" = "x1"],
       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
 #define CLUTTER_WINDOWING_GLX \"glx\""])
@@ -475,11 +532,13 @@ AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
 #define CLUTTER_WINDOWING_WAYLAND \"wayland\""])
 AS_IF([test "x$SUPPORT_OSX" = "x1"],
       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
-#define CLUTTER_WINDOWING_OSX \"osx\""])
+#define CLUTTER_WINDOWING_OSX \"osx\"
+#define CLUTTER_INPUT_OSX \"osx\""])
 AS_IF([test "x$SUPPORT_WIN32" = "x1"],
       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
-#define CLUTTER_WINDOWING_WIN32 \"win32\""])
-AS_IF([test "x$SUPPORT_EGL_PLATFORM_GDL" = "x1"],
+#define CLUTTER_WINDOWING_WIN32 \"win32\"
+#define CLUTTER_INPUT_WIN32 \"win32\""])
+AS_IF([test "x$SUPPORT_CEX100" = "x1"],
       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
 #define CLUTTER_WINDOWING_CEX100 \"cex100\""])
 AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
@@ -488,6 +547,13 @@ AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
 AS_IF([test "x$SUPPORT_TSLIB" = "x1"],
       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
 #define CLUTTER_INPUT_TSLIB \"tslib\""])
+AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
+      [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
+#define CLUTTER_INPUT_WAYLAND \"wayland\""])
+
+# the 'null' input backend is special
+CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
+#define CLUTTER_INPUT_NULL \"null\""
 
 AC_SUBST([CLUTTER_CONFIG_DEFINES])
 
@@ -500,11 +566,9 @@ AC_SUBST([CLUTTER_FLAVOUR],      [deprecated])
 AC_SUBST([CLUTTER_COGL],         [deprecated])
 AC_SUBST([COGL_DRIVER],          [deprecated])
 
-dnl === Image loading backend =================================================
-IMAGE_PC_FILES=""
-
 dnl === X11 checks, only for X11-based backends ===============================
 X11_PC_FILES=""
+X11_EXTS=""
 x11_tests=no
 
 AS_IF([test "x$SUPPORT_X11" = "x1"],
@@ -552,6 +616,7 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
 
                 X11_LIBS="$X11_LIBS -lXext"
                 X11_PC_FILES="$X11_PC_FILES xext"
+                X11_EXTS="$X11_EXTS xext"
 
                 AC_MSG_RESULT([found])
               ],
@@ -567,6 +632,7 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
 
                 X11_LIBS="$X11_LIBS -lXfixes"
                 X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
+                X11_EXTS="$X11_EXTS xfixes"
 
                 AC_MSG_RESULT([found])
               ],
@@ -582,6 +648,7 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
 
                 X11_LIBS="$X11_LIBS -lXdamage"
                 X11_PC_FILES="$X11_PC_FILES xdamage"
+                X11_EXTS="$X11_EXTS xdamage"
 
                 AC_MSG_RESULT([found])
               ],
@@ -597,6 +664,7 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
 
                 X11_LIBS="$X11_LIBS -lXcomposite"
                 X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION"
+                X11_EXTS="$X11_EXTS xcomposite"
 
                 AC_MSG_RESULT([found])
               ],
@@ -615,6 +683,7 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
                       [
                         AC_DEFINE([HAVE_XGE], [1], [Define to 1 if X Generic Extensions is available])
                         have_xge=yes
+                        X11_EXTS="$X11_EXTS xge"
                       ])
 
         CPPFLAGS="$clutter_save_CPPFLAGS"
@@ -652,8 +721,27 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
                                                [Define to 1 if XInput is available])
                                    ])
 
+                  clutter_save_LIBS="$LIBS"
+                  LIBS="$LIBS -lXi"
+
+                  AC_CHECK_FUNC([XIAllowTouchEvents],
+                                [
+                                  AC_CHECK_MEMBER([XIScrollClassInfo.number],
+                                                  [
+                                                    have_xinput_2_2=yes
+                                                    AC_DEFINE([HAVE_XINPUT_2_2], [1], [Define to 1 if XInput 2.2 is available])
+                                                  ],
+                                                  [have_xinput_2_2=no],
+                                                  [[#include <X11/extensions/XInput2.h>]])])
+
+                  LIBS="$clutter_save_LIBS"
+
                   X11_LIBS="$X11_LIBS $XINPUT_LIBS"
                   X11_PC_FILES="$X11_PC_FILES xi"
+
+                  AS_IF([test "x$have_xinput_2_2" = "xyes"],
+                        [X11_EXTS="$X11_EXTS xi2.2"],
+                        [X11_EXTS="$X11_EXTS xi2.0"])
                 ],
 
                 [no],
@@ -675,6 +763,8 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
                       [
                         AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
                         have_xkb=yes
+
+                        X11_EXTS="$X11_EXTS xkb"
                       ])
 
         CPPFLAGS="$clutter_save_CPPFLAGS"
@@ -690,6 +780,37 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
 
+X11_EXTS=${X11_EXTS#* }
+
+AC_CACHE_SAVE
+
+dnl === Enable GDK-Pixbuf in tests ============================================
+
+m4_define([pixbuf_default], [yes])
+AC_ARG_ENABLE([gdk-pixbuf],
+              [AS_HELP_STRING([--enable-gdk-pixbuf=@<:@no/yes@:>@],
+                              [Enable tests using GDK-Pixbuf @<:@default=]pixbuf_default[@:>@])],
+              [enable_pixbuf=$enable_val],
+              [enable_pixbuf=pixbuf_default])
+
+AS_CASE([$enable_pixbuf],
+
+        [yes],
+        [
+          PKG_CHECK_MODULES([GDK_PIXBUF], [gdk-pixbuf-2.0])
+          AC_SUBST(GDK_PIXBUF_CFLAGS)
+          AC_SUBST(GDK_PIXBUF_LIBS)
+          pixbuf_tests=yes
+        ],
+
+        [no],
+        [
+          pixbuf_tests=no
+        ]
+)
+
+AM_CONDITIONAL([PIXBUF_TESTS], [test "x$pixbuf_tests" = "xyes"])
+
 dnl === Enable debug level ====================================================
 
 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
@@ -736,12 +857,12 @@ AS_CASE([$enable_deprecated],
 
         [no],
         [
-          CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED -DCLUTTER_DISABLE_DEPRECATED"
+          CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
         ],
 
         [yes],
         [
-          CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
+          CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS"
         ],
 
         [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
@@ -750,16 +871,6 @@ AS_CASE([$enable_deprecated],
 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
 
 
-dnl === Conformance test suite ================================================
-
-AC_ARG_ENABLE([conformance],
-              [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
-                              [Build conformance test suite @<:@default=yes@:>@])],
-              [],
-              [enable_conformance=yes])
-
-AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
-
 dnl === Profiling =============================================================
 
 m4_define([profile_default], [no])
@@ -839,11 +950,14 @@ AC_ARG_ENABLE([maintainer-flags],
               [],
               [enable_maintainer_flags=maintainer_flags_default])
 
-MAINTAINER_COMPILER_FLAGS="-Wall -Wshadow -Wcast-align -Wuninitialized
+MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
+                           -Wall -Wcast-align -Wuninitialized
                            -Wno-strict-aliasing -Wempty-body -Wformat
-                           -Wformat-security -Winit-self
+                           -Wformat-security -Wformat-nonliteral -Winit-self
                            -Wdeclaration-after-statement -Wvla
-                           -Wpointer-arith"
+                           -Wpointer-arith -Wmissing-declarations
+                           -Wcast-align
+                           -Wredundant-decls"
 
 AS_CASE([$enable_maintainer_flags],
         [yes],
@@ -873,12 +987,27 @@ dnl === Dependencies, compiler flags and linker libraries =====================
 # strip leading space
 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
 
-CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $IMAGE_PC_FILES $BACKEND_PC_FILES"
+# public dependencies, will fill the Requires: field of clutter.pc
+CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $BACKEND_PC_FILES"
 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
+
+# private dependencies, will fill the Requires.private: field of clutter.pc
+AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" = "x" && test "x$BACKEND_PC_FILES_PRIVATE" = "x"],
+      [
+        CLUTTER_REQUIRES_PRIVATE=""
+        CLUTTER_DEPS_PRIVATE_CFLAGS=""
+        CLUTTER_DEPS_PRIVATE_LIBS=""
+      ],
+      [
+        CLUTTER_REQUIRES_PRIVATE="$CLUTTER_BASE_PC_FILES_PRIVATE $BACKEND_PC_FILES_PRIVATE"
+        PKG_CHECK_MODULES(CLUTTER_DEPS_PRIVATE, [$CLUTTER_REQUIRES_PRIVATE])
+      ])
+
 AC_SUBST(CLUTTER_REQUIRES)
+AC_SUBST(CLUTTER_REQUIRES_PRIVATE)
 
-CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
-CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
+CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
+CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
 AC_SUBST(CLUTTER_CFLAGS)
 AC_SUBST(CLUTTER_LIBS)
 
@@ -954,16 +1083,40 @@ AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
                    [The prefix for our gettext translation domains.])
 AS_ALL_LINGUAS
 
+dnl = Build optionals =========================================================
+
+dnl === Conformance test suite ================================================
+
+AC_ARG_ENABLE([conformance],
+              [AS_HELP_STRING([--disable-conformance], [Whether the conformance tests should be built])],
+              [],
+              [enable_conformance=yes])
+
+AC_ARG_ENABLE([tests],
+              [AS_HELP_STRING([--disable-tests], [Whether tests should be built])],
+              [],
+              [enable_tests=yes])
+AM_CONDITIONAL(BUILD_TESTS, [test "x$enable_tests" = "xyes" && test "x$enable_conformance" = "xyes"])
+
+AC_ARG_ENABLE([examples],
+              [AS_HELP_STRING([--disable-examples], [Whether examples should be built])],
+              [],
+              [enable_examples=yes])
+AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$enable_examples" = "xyes"])
+
 dnl ===========================================================================
 
 AC_CONFIG_FILES([
        Makefile
-
+       config.h.win32
         README
 
        build/Makefile
        build/autotools/Makefile
        build/mingw/Makefile
+       build/win32/Makefile
+       build/win32/vs9/Makefile
+       build/win32/vs10/Makefile
 
        clutter/Makefile
         clutter/clutter-config.h
@@ -972,7 +1125,7 @@ AC_CONFIG_FILES([
 
        clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
 
-       clutter/egl/clutter-cex100.h
+       clutter/cex100/clutter-cex100.h
 
        tests/Makefile
        tests/accessibility/Makefile
@@ -984,6 +1137,8 @@ AC_CONFIG_FILES([
        tests/micro-bench/Makefile
        tests/performance/Makefile
 
+        examples/Makefile
+
        doc/Makefile
        doc/reference/Makefile
        doc/reference/clutter/Makefile
@@ -1031,8 +1186,12 @@ echo "        Build Additional Documentation: ${enable_docs} (Generate PDF: ${en
 echo ""
 echo " • Extra:"
 echo "        Build introspection data: ${enable_introspection}"
-echo "        Build conformance test suite: ${enable_conformance}"
+echo "        Build test suites: ${enable_tests}"
+if test "x$enable_tests" = "xyes"; then
 echo "        Build X11-specific tests: ${x11_tests}"
+echo "        Build tests using GDK-Pixbuf: ${pixbuf_tests}"
+fi
+echo "        Build examples: ${enable_examples}"
 
 # Clutter backend related flags
 echo ""
@@ -1044,20 +1203,27 @@ else
 echo "        Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
 fi
 
+if test "x$experimental_input_backend" = "xno"; then
+echo "        Input backends: ${CLUTTER_INPUT_BACKENDS}"
+else
+echo "        Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
+fi
+
 if test "x$SUPPORT_X11" = "x1"; then
 echo ""
-echo "        Enable XComposite: ${have_xcomposite}"
-echo "        Enable XInput: ${have_xinput}"
-echo "        Enable Xge: ${have_xge}"
-echo "        Enable XI2: ${have_xinput2}"
-echo "        Enable XKB: ${have_xkb}"
+echo "     - X11 backend options:"
+echo "        Enabled extensions: ${X11_EXTS}"
 fi
 
-if test "x$SUPPORT_EGL" = "x1"; then
+if test "x$SUPPORT_CEX100" = "x1"; then
 echo ""
-echo "        Enable TSLib: ${have_tslib}"
-echo "        Enable evdev: ${have_evdev}"
-echo "        Enable GDL: ${have_gdl}"
+echo "     - CEx100 backend options (WARNING: Experimental):"
+echo "        libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
+fi
+
+if test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"; then
+echo ""
+echo "     - Wayland compositor support enabled (WARNING: Experimental)"
 fi
 
 echo ""
@@ -1065,11 +1231,13 @@ echo ""
 # General warning about experimental features
 if test "x$experimental_backend" = "xyes"; then
 echo ""
-echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
-echo " *WARNING*"
+echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
+echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
 echo ""
 echo "  The stability of your build might be affected by one or more"
 echo "  experimental backends or experimental and unsupported features"
-echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
+echo ""
+echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
+echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
 echo ""
 fi