From 2383e9ef4771213cd6c453a7a6db0cd42abd8d53 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 10 Jun 2010 01:02:58 +0200 Subject: gtk: optionally build for both gtk2 and gtk3 --- Makefile.am | 12 ++++++-- configure.ac | 51 ++++++++++++++++++++++++++++++++- libcanberra-gtk3.pc.in | 11 ++++++++ src/Makefile.am | 77 ++++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 140 insertions(+), 11 deletions(-) create mode 100644 libcanberra-gtk3.pc.in diff --git a/Makefile.am b/Makefile.am index a950a3b..daa67cb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -37,12 +37,20 @@ pkgconfig_DATA = libcanberra.pc vapidir = $(datadir)/vala/vapi vapi_DATA = vala/libcanberra.vapi +if HAVE_GTK_ANY + if HAVE_GTK pkgconfig_DATA += libcanberra-gtk.pc +endif + +if HAVE_GTK3 +pkgconfig_DATA += libcanberra-gtk3.pc +endif + vapi_DATA += vala/libcanberra-gtk.vapi -schemasdir = $(GCONF_SCHEMA_FILE_DIR) -schemas_DATA = libcanberra.schemas +schemasdir = $(GCONF_SCHEMA_FILE_DIR) +schemas_DATA = libcanberra.schemas if GCONF_SCHEMAS_INSTALL install-data-local: diff --git a/configure.ac b/configure.ac index 85c3bde..6a0025c 100644 --- a/configure.ac +++ b/configure.ac @@ -374,13 +374,54 @@ else HAVE_GTK=0 fi - AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) AC_SUBST(GTK_MODULES_DIR) AC_SUBST(HAVE_GTK) AM_CONDITIONAL([HAVE_GTK], [test "x$HAVE_GTK" = x1]) +AC_ARG_ENABLE([gtk3], + AS_HELP_STRING([--disable-gtk3], [Disable optional GTK+ 3 support]), + [ + case "${enableval}" in + yes) gtk3=yes ;; + no) gtk3=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-gtk3) ;; + esac + ], + [gtk3=auto]) + +AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [false]) +if test "x${gtk3}" != xno ; then + PKG_CHECK_MODULES(GTK3, [ gtk+-3.0 gthread-2.0 ], + [ + HAVE_GTK3=1 + AC_DEFINE([HAVE_GTK3], 1, [Have GTK3?]) + + AC_PATH_PROG(GCONFTOOL, gconftool-2) + AM_GCONF_SOURCE_2 + + GTK3_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0` + GTK3_MODULES_DIR="${libdir}/gtk-3.0/modules" + ], + [ + HAVE_GTK3=0 + if test "x$gtk3" = xyes ; then + AC_MSG_ERROR([*** GTK3 not found ***]) + fi + ]) +else + HAVE_GTK3=0 +fi + +AC_SUBST(GTK3_CFLAGS) +AC_SUBST(GTK3_LIBS) +AC_SUBST(GTK3_MODULES_DIR) +AC_SUBST(HAVE_GTK3) +AM_CONDITIONAL([HAVE_GTK3], [test "x$HAVE_GTK3" = x1]) + +AM_CONDITIONAL([HAVE_GTK_ANY], [test "x$HAVE_GTK" = x1 -o "x$HAVE_GTK3" = x1]) + #### TDB cache support (optional) #### AC_ARG_ENABLE([tdb], @@ -583,6 +624,7 @@ Makefile src/Makefile libcanberra.pc libcanberra-gtk.pc +libcanberra-gtk3.pc src/canberra.h gtkdoc/Makefile doc/Makefile @@ -646,6 +688,11 @@ if test "x$HAVE_GTK" = "x1" ; then ENABLE_GTK=yes fi +ENABLE_GTK3=no +if test "x$HAVE_GTK3" = "x1" ; then + ENABLE_GTK3=yes +fi + ENABLE_TDB=no if test "x$HAVE_TDB" = "x1" ; then ENABLE_TDB=yes @@ -681,6 +728,8 @@ echo " Enable lookup cache: ${ENABLE_CACHE} Enable GTK+: ${ENABLE_GTK} GTK Modules Directory: ${GTK_MODULES_DIR} + Enable GTK3+: ${ENABLE_GTK3} + GTK3 Modules Directory: ${GTK3_MODULES_DIR} " diff --git a/libcanberra-gtk3.pc.in b/libcanberra-gtk3.pc.in new file mode 100644 index 0000000..331f2bf --- /dev/null +++ b/libcanberra-gtk3.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=${prefix}/include + +Name: libcanberra-gtk3 +Description: Gtk3 Event Sound API +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -lcanberra-gtk3 @PTHREAD_LIBS@ +Cflags: -D_REENTRANT -I${includedir} +Requires: libcanberra gtk+-3.0 diff --git a/src/Makefile.am b/src/Makefile.am index b24d9fc..90645d4 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -17,6 +17,7 @@ # . gtkmoduledir = @GTK_MODULES_DIR@ +gtk3moduledir = @GTK3_MODULES_DIR@ plugindir = $(libdir)/libcanberra-@PACKAGE_VERSION@ @@ -272,20 +273,60 @@ libcanberra_null_la_LDFLAGS = \ endif endif -if HAVE_GTK +if HAVE_GTK_ANY -lib_LTLIBRARIES += \ - libcanberra-gtk.la +bin_PROGRAMS = \ + canberra-gtk-play include_HEADERS += \ canberra-gtk.h +endif + +if HAVE_GTK3 + +lib_LTLIBRARIES += \ + libcanberra-gtk3.la + +gtk3module_LTLIBRARIES = \ + libcanberra-gtk3-module.la + +libcanberra_gtk3_la_SOURCES = \ + canberra-gtk.h \ + canberra-gtk.c +libcanberra_gtk3_la_CFLAGS = \ + $(GTK3_CFLAGS) +libcanberra_gtk3_la_LIBADD = \ + $(GTK3_LIBS) \ + libcanberra.la +libcanberra_gtk3_la_LDFLAGS = \ + -export-dynamic -version-info $(LIBCANBERRA_GTK_VERSION_INFO) + +libcanberra_gtk3_module_la_SOURCES = \ + canberra-gtk-module.c +libcanberra_gtk3_module_la_CFLAGS = \ + $(GTK3_CFLAGS) +libcanberra_gtk3_module_la_LIBADD = \ + $(GTK3_LIBS) \ + libcanberra.la \ + libcanberra-gtk3.la +libcanberra_gtk3_module_la_LDFLAGS = \ + -avoid-version -module -export-dynamic + +install-exec-hook: + cd $(DESTDIR)$(gtk3moduledir) && \ + $(LN_S) libcanberra-gtk3-module.so libcanberra-gtk-module.so + +endif + +if HAVE_GTK + +lib_LTLIBRARIES += \ + libcanberra-gtk.la + gtkmodule_LTLIBRARIES = \ libcanberra-gtk-module.la -bin_PROGRAMS = \ - canberra-gtk-play - libcanberra_gtk_la_SOURCES = \ canberra-gtk.h \ canberra-gtk.c @@ -308,8 +349,20 @@ libcanberra_gtk_module_la_LIBADD = \ libcanberra_gtk_module_la_LDFLAGS = \ -avoid-version -module -export-dynamic -canberra_gtk_play_SOURCES = \ - canberra-gtk-play.c +endif + +if HAVE_GTK3 + +canberra_gtk_play_LDADD = \ + $(GTK3_LIBS) \ + libcanberra.la \ + libcanberra-gtk3.la +canberra_gtk_play_CFLAGS = \ + $(GTK3_CFLAGS) + +else +if HAVE_GTK + canberra_gtk_play_LDADD = \ $(GTK_LIBS) \ libcanberra.la \ @@ -317,6 +370,14 @@ canberra_gtk_play_LDADD = \ canberra_gtk_play_CFLAGS = \ $(GTK_CFLAGS) +endif +endif + +if HAVE_GTK_ANY + +canberra_gtk_play_SOURCES = \ + canberra-gtk-play.c + EXTRA_DIST += \ libcanberra-login-sound.desktop.in \ libcanberra-ready-sound.desktop.in \ -- cgit