Hack the configure.in file to add a "none" gdktarget which removes
dependencies on graphic backends such as X.org or DirectFB. Gtk does
not fully build in this mode, but it builds sufficiently to build the
host tools that are needed to build the target Gtk.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 configure.in |  101 ++---------------------------------------------------------
 1 file changed, 4 insertions(+), 97 deletions(-)

Index: gtk+-2.24.8/configure.in
===================================================================
--- gtk+-2.24.8.orig/configure.in
+++ gtk+-2.24.8/configure.in
@@ -259,12 +259,12 @@
   gdktarget=x11
 fi
 
-AC_ARG_WITH(gdktarget, [  --with-gdktarget=[[x11/win32/quartz/directfb]] select non-default GDK target],
+AC_ARG_WITH(gdktarget, [  --with-gdktarget=[[x11/win32/quartz/directfb/none]] select non-default GDK target],
 	gdktarget=$with_gdktarget)
 
 AC_SUBST(gdktarget)
 case $gdktarget in
-  x11|win32|quartz|directfb) ;;
+  x11|win32|quartz|directfb|none) ;;
   *) AC_MSG_ERROR([Invalid target for GDK: use x11, quartz, directfb or win32.]);;
 esac
 
@@ -374,9 +374,6 @@
 ## annoying to construct
 PKG_CHECK_MODULES(BASE_DEPENDENCIES,
   [glib-2.0 >= glib_required_version dnl
-   atk >= atk_required_version dnl
-   pango >= pango_required_version dnl
-   cairo >= cairo_required_version dnl
    gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])
 
 ## In addition to checking that cairo is present, we also need to
@@ -389,8 +386,6 @@
 if test "x$cairo_backend" = "xx11"; then
    cairo_backend=xlib
 fi
-PKG_CHECK_MODULES(CAIRO_BACKEND,
-  [cairo-$cairo_backend >= cairo_required_version])
 
 if test "$os_win32" != yes; then
     # libtool option to control which symbols are exported
@@ -1280,50 +1275,6 @@
 fi
 
 
-# Check for Pango flags
-
-if test "x$gdktarget" = "xwin32"; then
-	PANGO_PACKAGES="pangowin32 pangocairo"
-else
-	PANGO_PACKAGES="pango pangocairo"
-fi
-
-AC_MSG_CHECKING(Pango flags)
-if $PKG_CONFIG --exists $PANGO_PACKAGES ; then
-        PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES`
-        PANGO_LIBS=`$PKG_CONFIG --libs $PANGO_PACKAGES`
-
-        AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
-else
-        AC_MSG_ERROR([
-*** Pango not found. Pango built with Cairo support is required
-*** to build GTK+. See http://www.pango.org for Pango information.
-])
-fi
-
-CFLAGS="$CFLAGS $PANGO_CFLAGS"
-
-if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
-        :
-else
-	gtk_save_LIBS="$LIBS"
-        LIBS="$PANGO_LIBS $LIBS"
-        AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
-*** Can't link to Pango. Pango is required to build
-*** GTK+. For more information see http://www.pango.org]))
-        LIBS="$gtk_save_LIBS"
-fi
-
-CFLAGS="$saved_cflags"
-LDFLAGS="$saved_ldflags"
-
-# Pull in gio-unix for GDesktopAppInfo usage, see at least gdkapplaunchcontext-x11.c
-if test "x$gdktarget" = "xx11"; then
-  GDK_PACKAGES="$PANGO_PACKAGES gio-unix-2.0 $X_PACKAGES gdk-pixbuf-2.0 cairo-$cairo_backend"
-else
-  GDK_PACKAGES="$PANGO_PACKAGES gio-2.0 gdk-pixbuf-2.0 cairo-$cairo_backend"
-fi
-
 GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES` $MATH_LIB"
 GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags  gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFLAGS"
 #
@@ -1331,7 +1282,7 @@
 # into the pkg-config files
 #
 if test $enable_explicit_deps != yes ; then
-  GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0"
+  GDK_PACKAGES="gdk-pixbuf-2.0"
   GDK_EXTRA_LIBS=
 fi
 
@@ -1341,37 +1292,7 @@
 AC_SUBST(GDK_DEP_LIBS)
 AC_SUBST(GDK_DEP_CFLAGS)
 
-
-########################################
-# Check for Accessibility Toolkit flags
-########################################
-
-ATK_PACKAGES=atk
-AC_MSG_CHECKING(ATK flags)
-if $PKG_CONFIG --exists $ATK_PACKAGES ; then
-        ATK_CFLAGS=`$PKG_CONFIG --cflags $ATK_PACKAGES`
-        ATK_LIBS=`$PKG_CONFIG --libs $ATK_PACKAGES`
-
-        AC_MSG_RESULT($ATK_CFLAGS $ATK_LIBS)
-else
-        AC_MSG_ERROR([
-*** Accessibility Toolkit not found. Accessibility Toolkit is required
-*** to build GTK+.
-])
-fi
-
-if $PKG_CONFIG --uninstalled $ATK_PACKAGES; then
-        :
-else
-	gtk_save_LIBS="$LIBS"
-        LIBS="$ATK_LIBS $LIBS"
-        AC_TRY_LINK_FUNC(atk_object_get_type, : , AC_MSG_ERROR([
-                *** Cannot link to Accessibility Toolkit. Accessibility Toolkit is required
-                *** to build GTK+]))
-        LIBS="$gtk_save_LIBS"
-fi
-
-GTK_PACKAGES="atk cairo gdk-pixbuf-2.0 gio-2.0"
+GTK_PACKAGES="gdk-pixbuf-2.0"
 if test "x$gdktarget" = "xx11"; then
   GTK_PACKAGES="$GTK_PACKAGES pangoft2"
 fi
@@ -1527,20 +1448,6 @@
 gtk_save_cppflags="$CPPFLAGS"
 CPPFLAGS="$CPPFLAGS $GTK_DEP_CFLAGS $GDK_DEP_CFLAGS"
 
-AC_CHECK_HEADER(cairo-pdf.h,,AC_MSG_ERROR([
-*** Can't find cairo-pdf.h. You must build Cairo with the pdf
-*** backend enabled.]))
-
-if test "$os_win32" != "yes"; then
-  AC_CHECK_HEADER(cairo-ps.h,,AC_MSG_ERROR([
-*** Can't find cairo-ps.h. You must build Cairo with the 
-*** postscript backend enabled.]))
-
-  AC_CHECK_HEADER(cairo-svg.h,,AC_MSG_ERROR([
-*** Can't find cairo-svg.h. You must build Cairo with the
-*** svg backend enabled.]))
-fi   
-
 CPPFLAGS="$gtk_save_cppflags"
      
 			  	
