From 7a6d60b94c2ed5e1455a6d23447bc2b674b4cf91 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Wed, 14 Jan 2009 17:24:40 +0000 Subject: #567751 – move reusable code into a shared library so other apps can display documents using evince code --- diff --git a/Makefile.am b/Makefile.am index 38d8b96..9badb96 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,3 +29,18 @@ DISTCHECK_CONFIGURE_FLAGS = --disable-schemas-install --disable-scrollkeeper --e # Ignore scrollkeeper issues for now. @#*$& scrollkeeper distuninstallcheck_listfiles = find . -type f -print | grep -v scrollkeeper | grep -v /share/gnome/help/ | grep -v \.omf + +if BUILD_EMBED_LIB +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = evince-$(EV_API_VERSION).pc + +evince-$(EV_API_VERSION).pc: evince.pc + cp $< evince-$(EV_API_VERSION).pc + +EXTRA_DIST += evince.pc.in + +DISTCLEANFILES += \ + evince.pc \ + evince-$(EV_API_VERSION).pc +endif # BUILD_EMBED_LIB + diff --git a/configure.ac b/configure.ac index 5d2c8a3..4eb5e26 100644 --- a/configure.ac +++ b/configure.ac @@ -35,6 +35,10 @@ AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package]) AM_GLIB_GNU_GETTEXT +# this variable accumulates all the required pkg-config +# packages for the current configuration +EVINCE_REQUIRED_PKGS='' + dnl Check dependencies # LIB_CFLAGS for helpers and generic widgets. (libdocument, cut-and-paste) @@ -55,7 +59,8 @@ LIBXML_REQUIRED=2.5.0 PKG_CHECK_MODULES(LIB, gtk+-2.0 >= $GTK_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED gio-2.0 >= $GLIB_REQUIRED) PKG_CHECK_MODULES(BACKEND, gtk+-2.0 >= $GTK_REQUIRED) PKG_CHECK_MODULES(FRONTEND_CORE, gtk+-2.0 >= $GTK_REQUIRED gthread-2.0 gio-2.0 >= $GLIB_REQUIRED) -PKG_CHECK_MODULES(SHELL_CORE, libxml-2.0 >= $LIBXML_REQUIRED gtk+-2.0 >= $GTK_REQUIRED gtk+-unix-print-2.0 >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED gnome-icon-theme >= $GNOME_ICON_THEME_REQUIRED gthread-2.0 gconf-2.0) +PKG_CHECK_MODULES(SHELL_CORE, libxml-2.0 >= $LIBXML_REQUIRED gtk+-2.0 >= $GTK_REQUIRED gtk+-unix-print-2.0 >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED gnome-icon-theme >= $GNOME_ICON_THEME_REQUIRED gthread-2.0 gconf-2.0, [ + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS libxml-2.0 >= $LIBXML_REQUIRED gtk+-2.0 >= $GTK_REQUIRED gtk+-unix-print-2.0 >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED gnome-icon-theme >= $GNOME_ICON_THEME_REQUIRED gthread-2.0 gconf-2.0"]) PKG_CHECK_MODULES(SMCLIENT, gtk+-2.0 gthread-2.0) AC_SUBST(SMCLIENT_CFLAGS) @@ -81,7 +86,8 @@ AC_ARG_WITH(keyring, AM_CONDITIONAL(WITH_KEYRING, test x$WITH_KEYRING = "xyes") if test x$WITH_KEYRING = "xyes"; then - PKG_CHECK_MODULES(KEYRING, gnome-keyring-1 >= $KEYRING_REQUIRED) + PKG_CHECK_MODULES(KEYRING, gnome-keyring-1 >= $KEYRING_REQUIRED, [ + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS gnome-keyring-1 >= $KEYRING_REQUIRED"]) AC_DEFINE([WITH_KEYRING],[1],[Define if KEYRING support is enabled]) fi @@ -94,7 +100,8 @@ AC_ARG_ENABLE(dbus, enable_dbus="$enableval",enable_dbus=yes) if test "x$enable_dbus" != "xno"; then PKG_CHECK_MODULES([DBUS], [dbus-glib-1 >= $DBUS_GLIB_REQUIRED], - [enable_dbus=yes],[enable_dbus=no]) + [enable_dbus=yes + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS dbus-glib-1 >= $DBUS_GLIB_REQUIRED"],[enable_dbus=no]) if test "x$enable_dbus" = "xno"; then AC_MSG_WARN([DBUS support is disabled since dbus $DBUS_GLIB_REQUIRED or higher was not found]) @@ -159,7 +166,8 @@ AC_ARG_ENABLE(nautilus, if test x$ENABLE_NAUTILUS = "xyes" ; then PKG_CHECK_MODULES(NAUTILUS, gtk+-x11-2.0 $MM gthread-2.0 libnautilus-extension, - [HAVE_NAUTILUS=yes], [HAVE_NAUTILUS=no]) + [HAVE_NAUTILUS=yes + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS gtk+-x11-2.0 $MM gthread-2.0 libnautilus-extension"], [HAVE_NAUTILUS=no]) NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension` AC_SUBST(NAUTILUS_EXTENSION_DIR) fi @@ -183,6 +191,22 @@ AC_ARG_ENABLE(thumbnailer, [ENABLE_THUMBNAILER=yes]) dnl Default value AM_CONDITIONAL(ENABLE_THUMBNAILER, test x$ENABLE_THUMBNAILER = "xyes") +dnl Check for embedding lib build +AC_ARG_ENABLE(embed, + AC_HELP_STRING([--enable-embed], [enable building embedding lib]), + [case "${enableval}" in + yes) BUILD_EMBED_LIB=yes ;; + no) BUILD_EMBED_LIB=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-embed) ;; + esac], + [BUILD_EMBED_LIB=no]) dnl Default value + + if test "x${enableval}" = "xyes"; then + AC_DEFINE([BUILD_EMBED],[1],[Build embed lib.]) + fi + +AM_CONDITIONAL(BUILD_EMBED_LIB, test x$BUILD_EMBED_LIB = "xyes") + dnl GConf configuration AM_GCONF_SOURCE_2 @@ -206,7 +230,8 @@ AC_ARG_ENABLE(pdf, if test "x$enable_pdf" = "xyes"; then POPPLER_REQUIRED=0.8.0 - PKG_CHECK_MODULES(POPPLER, poppler-glib >= $POPPLER_REQUIRED,enable_pdf=yes,enable_pdf=no) + PKG_CHECK_MODULES(POPPLER, poppler-glib >= $POPPLER_REQUIRED,[enable_pdf=yes + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS poppler-glib >= $POPPLER_REQUIRED"],enable_pdf=no) if test "x$enable_pdf" = "xyes"; then AC_DEFINE([ENABLE_PDF], [1], [Enable pdf support.]) @@ -219,12 +244,14 @@ if test "x$enable_pdf" = "xyes"; then AC_CHECK_FUNCS(poppler_layers_iter_new) LIBS=$evince_save_LIBS - PKG_CHECK_MODULES(CAIRO_PDF, cairo-pdf, enable_cairo_pdf=yes, enable_cairo_pdf=no) + PKG_CHECK_MODULES(CAIRO_PDF, cairo-pdf, [enable_cairo_pdf=yes + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS cairo-pdf"], enable_cairo_pdf=no) if test x$enable_cairo_pdf = xyes; then AC_DEFINE([HAVE_CAIRO_PDF], [1], [defined if cairo-pdf is available]) fi - PKG_CHECK_MODULES(CAIRO_PS, cairo-ps, enable_cairo_ps=yes, enable_cairo_ps=no) + PKG_CHECK_MODULES(CAIRO_PS, cairo-ps, [enable_cairo_ps=yes + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS cairo-pdf"], enable_cairo_ps=no) if test x$enable_cairo_ps = xyes; then AC_DEFINE([HAVE_CAIRO_PS], [1], [defined if cairo-ps is available]) fi @@ -238,7 +265,8 @@ dnl ================== end of pdf checks ======================================= dnl libspectre (used by ps and dvi backends) SPECTRE_REQUIRED=0.2.0 -PKG_CHECK_MODULES(SPECTRE, libspectre >= $SPECTRE_REQUIRED,have_spectre=yes,have_spectre=no) +PKG_CHECK_MODULES(SPECTRE, libspectre >= $SPECTRE_REQUIRED, [have_spectre=yes + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS libspectre >= $SPECTRE_REQUIRED"], have_spectre=no) AM_CONDITIONAL(HAVE_SPECTRE, test x$have_spectre = xyes) if test "x$have_spectre" = "xyes"; then AC_DEFINE([HAVE_SPECTRE], [1], [Have libspectre]) @@ -286,7 +314,8 @@ AC_ARG_ENABLE(djvu, if test "x$enable_djvu" = "xyes"; then DJVULIBRE_REQUIRED=3.5.17 - PKG_CHECK_MODULES(DJVU, ddjvuapi >= $DJVULIBRE_REQUIRED, enable_djvu=yes, enable_djvu=no) + PKG_CHECK_MODULES(DJVU, ddjvuapi >= $DJVULIBRE_REQUIRED, [enable_djvu=yes + EVINCE_REQUIRED_PKGS="$EVINCE_REQUIRED_PKGS ddjvuapi >= $DJVULIBRE_REQUIRED"], enable_djvu=no) if test "x$enable_djvu" = "xyes"; then AC_DEFINE([ENABLE_DJVU], [1], [Enable djvu viewer support.]) @@ -405,6 +434,9 @@ if test "x$enable_impress" = "xyes"; then fi AC_SUBST(EVINCE_MIME_TYPES) +# this must stay after all dependencies have been checked +AC_SUBST(EVINCE_REQUIRED_PKGS) + AC_CONFIG_FILES([ backend/Makefile backend/comics/Makefile @@ -443,6 +475,7 @@ data/icons/48x48/apps/Makefile data/icons/48x48/actions/Makefile data/icons/scalable/Makefile data/icons/scalable/apps/Makefile +evince.pc help/Makefile help/reference/Makefile help/reference/version.xml @@ -465,6 +498,7 @@ Configure summary: Thumbnailer........: $ENABLE_THUMBNAILER Gtk-Doc Support....: $enable_gtk_doc Debug mode.........: $enable_debug + Building embed lib.: $BUILD_EMBED_LIB PDF Backend........: $enable_pdf PostScript Backend.: $enable_ps diff --git a/evince.pc.in b/evince.pc.in new file mode 100644 index 0000000..0ba2d8a --- /dev/null +++ b/evince.pc.in @@ -0,0 +1,14 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +datarootdir=@datarootdir@ +pkgdatadir=@datarootdir@/@PACKAGE@ + +Name: evince-@EV_API_VERSION@ +Description: Evince embedding library +Version: @VERSION@ +Requires: @EVINCE_REQUIRED_PKGS@ +Libs: -L${libdir} -levince-@EV_API_VERSION@ +Cflags: -I${includedir}/evince-@EV_API_VERSION@ + diff --git a/shell/Makefile.am b/shell/Makefile.am index d5abcb0..71d2756 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -16,6 +16,12 @@ INCLUDES= \ $(WARN_CFLAGS) \ $(DISABLE_DEPRECATED) +if BUILD_EMBED_LIB +# See http://www.gnu.org/software/automake/manual/html_node/Libtool-Issues.html +# for this hack +evince_CFLAGS=$(AMCFLAGS) +endif # BUILD_EMBED_LIB + bin_PROGRAMS=evince EV_MEDIA_PLAYER_KEYS_SOURCES = ev-media-player-keys.c ev-media-player-keys.h @@ -25,7 +31,7 @@ else DBUS_SOURCES = $(null) endif -evince_SOURCES= \ +SHELL_SRC= \ eggfindbar.c \ eggfindbar.h \ ev-application.c \ @@ -99,10 +105,17 @@ evince_SOURCES= \ ev-timeline.c \ ev-timeline.h \ ev-transition-animation.c \ - ev-transition-animation.h \ - main.c + ev-transition-animation.h + +if BUILD_EMBED_LIB +evince_SOURCES=main.c +else +evince_SOURCES= \ + $(SHELL_SRC) \ + main.c +endif # BUILD_EMBED_LIB -evince_LDADD= \ +INTERNAL_LIBS= \ $(top_builddir)/cut-n-paste/zoom-control/libephyzoom.la \ $(top_builddir)/cut-n-paste/toolbar-editor/libtoolbareditor.la \ $(top_builddir)/cut-n-paste/totem-screensaver/libtotemscrsaver.la \ @@ -111,8 +124,41 @@ evince_LDADD= \ $(top_builddir)/cut-n-paste/evmountoperation/libevmountoperation.la \ $(top_builddir)/cut-n-paste/smclient/libsmclient.la \ $(top_builddir)/properties/libevproperties.la \ - $(top_builddir)/libdocument/libevbackend.la \ - $(SHELL_LIBS) + $(top_builddir)/libdocument/libevbackend.la + +if BUILD_EMBED_LIB +evince_LDADD= \ + $(SHELL_LIBS) \ + libevince-@EV_API_VERSION@.la +else +evince_LDADD= \ + $(INTERNAL_LIBS) \ + $(SHELL_LIBS) +endif # BUILD_EMBED_LIB + +if BUILD_EMBED_LIB +lib_LTLIBRARIES=libevince-@EV_API_VERSION@.la + +libevince_@EV_API_VERSION@_la_SOURCES=$(SHELL_SRC) + +libevince_@EV_API_VERSION@_la_LIBADD= \ + $(INTERNAL_LIBS) \ + $(SHELL_LIBS) \ + $(GNOME_PRINT_LIBS) + +if ENABLE_DJVU +libevince_@EV_API_VERSION@_la_LIBADD += $(DJVU_LIBS) +endif + +if ENABLE_DVI +libevince_@EV_API_VERSION@_la_LIBADD += -lkpathsea +endif + +if WITH_TYPE1_FONTS +libevince_@EV_API_VERSION@_la_LIBADD += -lt1 +endif + +endif # BUILD_EMBED_LIB BUILT_SOURCES = ev-marshal.h ev-marshal.c -- cgit v0.9.1