Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@sugarlabs.org>2009-01-14 17:24:40 (GMT)
committer Tomeu Vizoso <tomeu@sugarlabs.org>2009-01-14 17:24:40 (GMT)
commit7a6d60b94c2ed5e1455a6d23447bc2b674b4cf91 (patch)
tree6950fa6542c5ff303221970a9be3a7c0a9a916e8
parent1d3695c11b56bf7d08727455091f75576bdd9031 (diff)
#567751 – move reusable code into a shared library so other apps can display documents using evince code
-rw-r--r--Makefile.am15
-rw-r--r--configure.ac52
-rw-r--r--evince.pc.in14
-rw-r--r--shell/Makefile.am58
4 files changed, 124 insertions, 15 deletions
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