# Description: A multi-platform toolkit for creating graphical user interfaces
# URL: http://www.gtk.org/
# Maintainer: Tilman Sauerbeck, tilman at crux dot nu
# Arch Maintainer: CRUX-ARM System Team, devel at crux-arm dot nu
# Depends on: atk hicolor-icon-theme libtiff pango xorg-libsm xorg-libxcursor xorg-libxrandr

name=gtk
version=2.20.1
release=1
source=(http://download.gnome.org/sources/gtk+/2.20/${name}+-2.20.0.tar.bz2 \
        http://download.gnome.org/sources/gtk+/2.20/${name}+-2.20.0-$version.diff.gz \
        gdk-pixbuf.loaders \
        gtk.immodules \
        gtk-register.sh \
        ${name}+-$version-cross_compile.patch)

build () {
  cd $SRC/${name}+-2.20.0

  zcat $SRC/${name}+-2.20.0-$version.diff.gz | patch -p1

  # first we need to build some native tools
  cp -vr $SRC/${name}+-2.20.0{,.host}
  cd $SRC/${name}+-2.20.0.host

  SAVED_CFLAGS="$CFLAGS" SAVED_CXXFLAGS="$CXXFLAGS"
  SAVED_AR="$AR" SAVED_RANLIB="$RANLIB" SAVED_LD="$LD"
  unset CC CFLAGS CXX CXXFLAGS AR RANLIB LD

  # avoid errors due to non-installed dependencies
  sed -e 's|as_fn_error|_fake_as_fn_error|g' configure > configure.host
  sed -e 's|_fake_as_fn_error ()|as_fn_error ()|' -i configure.host

  cat >> configure.host << __EOF__
_fake_as_fn_error() {
  echo $@ >/dev/null
}
__EOF__
 
  sh configure.host --prefix=/usr --without-libjasper

  # gdk-pixbuf-csource.host
  cd $SRC/${name}+-2.20.0.host/gdk-pixbuf
  make
  mv gdk-pixbuf-csource{,.host}
  # gtk-update-icon-cache.host
  cd $SRC/${name}+-2.20.0.host/gtk
  make gtk-update-icon-cache \
    CFLAGS="-pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gio-unix-2.0" \
    LIBS="-lgio-2.0 -lm"
  mv gtk-update-icon-cache{,.host} 

  # continue with crosscompilation
  cd $SRC/${name}+-2.20.0
  patch -p1 -i $SRC/gtk+-2.20.1-cross_compile.patch

  sed -i Makefile.in -e '/SRC_SUBDIRS =/ s/demos //'

  echo "gio_can_sniff=no" > config.cache
  echo "ac_cv_path_GDK_PIXBUF_CSOURCE=$SRC/gtk+-2.20.0.host/gdk-pixbuf/gdk-pixbuf-csource.host" >> config.cache
  echo "ac_cv_path_GTK_UPDATE_ICON_CACHE=$SRC/gtk+-2.20.0.host/gtk/gtk-update-icon-cache.host" >> config.cache

  export DEFAULT_LIBS="-L$CLFS/usr/lib"
  export DEFAULT_CFLAGS="-I$CLFS/usr/include"

  export FONTCONFIG_LIBS="$DEFAULT_LIBS -lfontconfig"
  export FONTCONFIG_CFLAGS="$DEFAULT_CFLAGS"

  export GLIB_LIBS="-pthread -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0"
  export GLIB_CFLAGS="-pthread -I$CLFS/usr/include/glib-2.0 -I$CLFS/usr/lib/glib-2.0/include -I$CLFS/usr/include/gio-unix-2.0"

  export ATK_LIBS="$GLIB_LIBS -latk-1.0"
  export ATK_CFLAGS="$GLIB_CFLAGS -I$CLFS/usr/include/atk-1.0"

  export CAIRO_BACKEND_LIBS="$GLIB_LIBS -lcairo"
  export CAIRO_BACKEND_CFLAGS="$GLIB_CFLAGS -I$CLFS/usr/include/cairo -I$CLFS/usr/include/pixman-1 -I$CLFS/usr/include/freetype2 -I$CLFS/usr/include/libpng12"

  export PANGO_LIBS="$GLIB_LIBS -lpangocairo-1.0 -lpango-1.0 $CAIRO_BACKEND_LIBS"
  export PANGO_CFLAGS="$GLIB_CFLAGS -I$CLFS/usr/include/pango-1.0 $CAIRO_BACKEND_CFLAGS"

  export BASE_DEPENDENCIES_LIBS="$ATK_LIBS $PANGO_LIBS $FONTCONFIG_LIBS"
  export BASE_DEPENDENCIES_CFLAGS="$ATK_CFLAGS $PANGO_CFLAGS $FONTCONFIG_CFLAGS"

  export GTK_DEP_LIBS="$BASE_DEPENDENCIES_LIBS -lX11 -lXfixes"
  export GTK_DEP_CFLAGS="$BASE_DEPENDENCIES_CFLAGS"

  export GDK_DEP_LIBS="$GTK_DEP_LIBS -lXext -lXrender -lXrandr -lXcursor -lm"
  export GDK_DEP_CFLAGS="$GTK_DEP_CFLAGS"

  export GDK_PIXBUF_DEP_LIBS="$GLIB_LIBS -lgio-2.0 -lm"
  export GDK_PIXBUF_DEP_CFLAGS="$GLIB_CFLAGS"

  export GDK_PIXBUF_XLIB_DEP_LIBS="$GDK_PIXBUF_DEP_LIBS -lX11"
  export GDK_PIXBUF_XLIB_DEP_CFLAGS="$GLIB_CFLAGS"

  export X_LIBS="$DEFAULT_LIBS -lX11 -lXext -lXrender"
  export X_CFLAGS="$DEFAULT_CFLAGS"

  export ATK_PREFIX="$CLFS/usr"
  export GLIB_PREFIX="$CLFS/usr"
  export CAIRO_PREFIX="$CLFS/usr"
  export PANGO_PREFIX="$CLFS/usr"

  export CC="$CTARGET-gcc" CXX="$CTARGET-g++"
  export CFLAGS="$SAVED_CFLAGS" CXXFLAGS="$SAVED_CFLAGS"
  export AR="$SAVED_AR" RANLIB="$SAVED_RANLIB" LD="$SAVED_LD"

  ./configure --build=$CHOST \
              --host=$CTARGET \
              --prefix=/usr \
              --mandir=/usr/man \
              --enable-xkb \
              --disable-xinerama \
              --disable-glibtest \
              --disable-cups \
              --with-gdktarget=x11 \
              --with-libpng \
              --with-libjpeg \
              --with-libtiff \
              --without-libjasper \
              --with-x \
              --cache-file=config.cache

  make
  make DESTDIR=$PKG install

  install -d $PKG/usr/etc/gtk-2.0
  install -m 644 $SRC/{gtk.immodules,gdk-pixbuf.loaders} $PKG/usr/etc/gtk-2.0/
  rm -r $PKG/usr/share/{locale,gtk-doc} 
  install -m 0755 $SRC/gtk-register.sh $PKG/usr/bin/gtk-register
}