Empathy ported to GTK+3

As a good GNOME citizen, Empathy 3.0 will have to be able to build with GTK+3. As Ubuntu is not going to ship GTK+3 by default in its next release, we decided to stay compatible with GTK+2 for this cycle.

Empathy already built with GSEAL checks so porting was just a matter of playing with autoconf. Libraries linking to GTK+ itself have to be updated as we can't use GTK+2 and GTK+3 in the same process:

  • libcanberra-gtk, webkit-gtk and libunique now have releases using GTK+3 instead of GTK+2 so all we had to do was to change the PKG_CHECK_MODULES calls to check for the -3 flavour of the libs.
  • nautilus-sendto plugin has been ported as well since 2.90.0 but it breaks its public API so we had to do some #ifdef magic to stay compatible with older versions.
  • Since 0.5.1 libnotify doesn't link on GTK+ any more but use GModule instead (Thanks Bastien!) so we just had to make sure that this version was used when building with GTK+3.
  • Unfortunately clutter-gtk and champlain haven't been ported to GTK+3 yet so we had to disable champlain support for now. I hope to see a port of these libs soon.

During configure, we check if GTK+3 is present; if it is then we check for these new version of the deps. If it's not or if Empathy has been configured with --enable-gtk3=no then we continue to use GTK+2 and the old versions of the libs.

If you're interested in details, everything has been merged to master so you just have to look at Empathy's configure.ac file.

This should hopefully make all the distributions happy during the transition. Once Empathy 3.0 is released we'll drop GTK+2 compatiblity and will start using the fancy new features offered by GTK+3.